sitecoresitecore8.1sitecore-xdb

Sitecore contact tracking: how does it work?


I have read through https://sitecore-community.github.io/docs/xDB/the-xdb-contact/ and https://doc.sitecore.net/sitecore_experience_platform/81/setting_up__maintaining/xdb/contacts/contact_tracking.

I would like to know whether Sitecore contact tracking will work for my client or not.

I have created a simple newsletter subscription functionality (without WFFM form submission). Once a user submits his information along with personal details and email, I send a confirmation email link. After confirming the email address, I am creating contacts through code. Thanks to Brian!

My application session state mode is InProc.

My question is, if user is interacting with the site with a new session after subscription (after submitting email):

Will Sitecore identify user as contact (and merge in existing anonymous contact) or will it create new anonymous contact each time?

I am NOT using any of the following services in my solution:


Solution

  • Your approach

    It seems to me that manually creating contacts is completely unnecessary in your case.

    As I understand from your post, here's what happens:

    1. A user visits your website.
    2. Sitecore creates a new contact (ID: xxx).
    3. The user browses the website and submits your form.
    4. A confirmation email is sent to the user's email address.
    5. The user clicks on the link in the email and hits a confirmation page on the site.
    6. Your code creates a new contact in xDB (ID: yyy).

    As a result, you have two separate contacts in xDB that are not related to each other, from Sitecore's perspective.

    Now, to your question:

    Will Sitecore identify user as contact (and merge in existing anonymous contact) or will it create new anonymous contact each time?

    If the user is visiting from the same browser, Sitecore will recognize them as the original contact (ID: xxx) based on a cookie. Sitecore will not create a new contact in this case.

    If the user is visiting from another browser or device, he will not be recognized as any of the existing contacts and a new anonymous contact will be created (ID: zzz).

    As you can see, Sitecore has no way of automatically using the contact you created (ID: yyy).

    Suggested solution

    The only way to make Sitecore recognize a user as a specific contact is to use the identification API. In short, what you can do is this:

    Sitecore.Analytics.Tracker.Current.Session.Identify(identifier);
    

    Here's what I suggest you to do: