Sitecore联系人跟踪:它是如何工作的?

时间:2016-09-09 03:43:13

标签: sitecore sitecore8.1 sitecore-xdb

我已经通读了 https://sitecore-community.github.io/docs/xDB/the-xdb-contact/https://doc.sitecore.net/sitecore_experience_platform/81/setting_up__maintaining/xdb/contacts/contact_tracking

我想知道Sitecore联系人跟踪是否适用于我的客户。

我创建了一个简单的简报订阅功能(没有WFFM表单提交)。一旦用户提交了他的信息以及个人信息和电子邮件,我就会发送一封确认电子邮件链接。确认电子邮件地址后,我正在通过代码创建联系人。感谢Brian

我的应用会话状态模式为InProc

我的问题是,如果用户在订阅后通过新会话与网站进行交互(提交电子邮件后):

Sitecore会将用户识别为联系人(并合并现有的匿名联系人),还是每次都会创建新的匿名联系人?

在我的解决方案中使用以下任何服务:

  • 设备检测
  • GeoIp服务
  • FXM

1 个答案:

答案 0 :(得分:6)

您的方法

在我看来,在您的情况下完全没有必要手动创建联系人。

据我的帖子了解,现在发生了什么:

  1. 用户访问您的网站。
  2. Sitecore会创建一个新联系人(ID: xxx )。
  3. 用户浏览网站并提交表单。
  4. 确认电子邮件将发送到用户的电子邮件地址。
  5. 用户点击电子邮件中的链接,然后点击网站上的确认页面。
  6. 您的代码在xDB中创建了一个新联系人(ID: yyy )。
  7. 因此,从Sitecore的角度来看,xDB中有两个彼此无关的单独联系人。

    现在,问你的问题:

      

    Sitecore会将用户识别为联系人(并合并现有的匿名联系人),还是每次都会创建新的匿名联系人?

    如果用户正在使用同一浏览器访问,则Sitecore会根据Cookie将其识别为原始联系人(ID: xxx )。在这种情况下,Sitecore不会创建新联系人。

    如果用户正在访问其他浏览器或设备,则不会将其识别为任何现有联系人,并且会创建新的匿名联系人(ID: zzz )。

    如您所见,Sitecore无法自动使用您创建的联系人(ID: yyy )。

    建议的解决方案

    使Sitecore将用户识别为特定联系人的唯一方法是使用identification API。简而言之,你能做的就是:

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

    我建议您这样做:

    • 手动创建新联系人 - 根本不需要。
    • 当用户提交表单时,您调用Identify()并将用户的电子邮件地址作为identifier传递。这会将用户的电子邮件地址设置为当前联系人的标识符。
    • 当用户从您发送的电子邮件链接返回时,您再次调用Identify()。这将确保即使用户来自其他设备,也会在其会话中使用相同的xDB联系人。您需要将相同的电子邮件地址传递给Identify(),因此请确保您可以访问它 - 例如,您可以将其作为查询字符串参数包含在电子邮件确认链接中。
    • 使用Sitecore.Analytics.Tracker.Current.Contact并使用您收集的有关用户的信息填充当前联系人facets
    • 如果您有登录功能,请记得在成功登录尝试时调用Identify() - 这是为了确保同一用户的所有会话都使用相同的联系人。