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

Sitecore contact tracking: how does it work?

我已阅读 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.

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

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

我的应用程序会话状态模式是InProc

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

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

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

你的方法

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

据我从您的 post 了解到,情况如下:

  1. 一位用户访问了您的网站。
  2. Sitecore 创建新联系人(ID:xxx)。
  3. 用户浏览网站并提交您的表单。
  4. 一封确认电子邮件会发送到用户的电子邮件地址。
  5. 用户点击电子邮件中的 link 并点击网站上的确认页面。
  6. 您的代码在 xDB 中创建了一个新联系人(ID:yyy)。

因此,从 Sitecore 的角度来看,您在 xDB 中有两个彼此不相关的独立联系人。

现在,回答你的问题:

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

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

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

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

建议的解决方案

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

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

以下是我建议您执行的操作:

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