There are a few reasons why the
ReleaseContact processor might be skipped.
Here is the code for that method:
public void Process(PipelineArgs args)
if (Tracker.Current == null)
Log.Debug("Tracker is not initialized. ReleaseContact processor is skipped");
Session session = Tracker.Current.Session;
Assert.IsNotNull((object) session, "Tracker.Current.Session");
Log.Debug("Contact is being transferred. ReleaseContact processor is skipped");
else if (session.Contact == null)
Log.Debug("Contact is null. ReleaseContact processor is skipped");
else if (session.Settings.IsTransient)
Log.Debug("Session is in TRANSIENT MODE. ReleaseContact processor is skipped");
ContactManager contactManager = Factory.CreateObject("tracking/contactManager", true) as ContactManager;
string message = "tracking/contactManager";
Assert.IsNotNull((object) contactManager, message);
Contact contact = session.Contact;
session.Contact = (Contact) null;
As you can see, if the Tracker is not enabled, a transfer is already in process, the
session.Contact is null or
session.Settings.IsTransient is true. In any of those situations the processor is skipped. Your log files should tell you which.
Based on your statement that
Tracker.IsActive == false my guess is your logs look like this:
5000 15:54:43 DEBUG [Analytics]: Tracker.IsActive == false. EndAnalytics pipeline is terminated
5000 15:54:43 DEBUG Tracker is not initialized. ReleaseContact processor is skipped
In that case check the following settings in your config. They need to both be set to true:
<setting name="Xdb.Enabled" value="true" />
<setting name="Xdb.Tracking.Enabled" value="true" />
Also, make sure that the
enableAnalytics attribute on your site definition is not
Another thing to check is that you have
@Html.Sitecore().VisitorIdentification() in your main layout file.
Hopefully this should get you close.
ReleaseContactprocessor might get skipped.