2016-01-21 59 views
5

我遇到了Mixpanel标识问题。我希望能够跟踪用户登录之前记录的事件,并将其标识为这样。确定登录前发生的Mixpanel用户操作

下面是一个例子。路易打开网页并访问“关于”页面。使用mixpanel.track('Visit About'),我可以记录路易的匿名访问。一切都很好,很棒。

Louie决定登录,mixpanel.identify(user.id)电话标识他 - 随后的事件可以追溯到Louie。然而,第一个事件(“访问关于”)仍然以随机,Mixpanel设置的不同ID显示,并且没有与Louie相关联。

预计这种行为?我能做什么?欢呼声

回答

4

你想alias

从他们Javascript API reference

使用别名()时的唯一ID被第一分配(登记),并利用识别()以识别与该唯一ID的用户正在进行的基础上(例如,每个用户在注册后登录的时间)。不要将alias()同时调用identify()。

从你的描述,这听起来像,而不是观看了“关于”页面匿名然后日志中,路易是匿名查看“关于”页面,然后注册

在这种情况下,Louie注册时拨打alias,然后在他登录后拨打identify。这应该将随机的,匿名的Mixpanel ID与Louie的新注册用户ID相关联。

注:使用此方法将意味着,因为路易匿名然后登录触发的事件,路易的该事件的匿名ID将无法联系到他在登录不同的ID,当他有签订了协议。触发匿名事件后,您可以拨打alias,他们将被链接。不幸的是,这是Mixpanel的一个已知限制。从他们的文档:

这是他第一次从这个设备访问您的网站,所以我们给他分配一个全新的distinct_id。他点击四下,然后登录。在这种情况下,您不应该调用mixpanel.alias() - 我们在此设备上没有看到他,但他不是新用户。 ...不要调用mixpanel.alias(),而应该调用mixpanel.identify()。这会将他的电话活动重新映射到他在注册服务时使用的原始ID,这是最理想的结果。这确实意味着他登录前所发生的事件不会与他有关。

关于Mixpanel here中的别名的更多信息。

+0

但是,如果Louie已经有一个账户?我应该只调用一次'mixpanel.alias'一次 – Iso

+0

'mixpanel.alias'应该只调用一次。如果Louie已经有一个账户,那么他应该在登录时调用'mixpanel.identify'。如果'mixpanel.alias'在他的账户被创建时没有被调用,它就不会被调用。当你不应该调用'mixpanel.alias'时,这个页面的最后一节有一个类似的实例:https://mixpanel.com/docs/integration-libraries/using-mixpanel-alias – Amasa

+0

这就是我一直在做的事情,但可悲的是,这并没有解决我的问题... – Iso

0

Alias不适用于现有用户登录时的场景,但我找到了解决此问题的方法。

当用户首次登录时,请检查请求cookie的distinct_id是否与用户标识匹配。

如果它们不匹配,则创建后端任务以将匿名distinct_Id回填到用户的distinct_id。

使用JQL加载事件,然后使用mixpanel导入端点再次触发它们。

缺点是您将在系统中发生重复事件,因为无法从匿名distinct_id中删除事件。

对于导入的事件,您可以向它们添加一个属性,指示它们已导入,以便在需要时可以将其过滤掉。