Google 分析 analytics.js 2 两个跟踪器相撞?

Google analytics analytics.js 2 two trackers colliding?

我正在使用 analytics.js 脚本跟踪 3 个站点 - 两个二级域和一个子域...例如:dom1.com、sub.dom1.com、dom2.com

我遇到问题的脚本和网站是本例中的 dom1.com。我有 2 个属性应该聚合以下数据:

属性 A : dom1.com + sub.dom1.com 属性 B : dom1.com + sub.dom1.com + dom2.com

我一直在寻找我的代码中的错误,但无法找出问题所在,即:

在 属性 A 中,所有内容都正确聚合,域和子域都可以正常发送数据。 属性 B sub.dom1.com 和 dom2.com 确实发送了他们的数据,但 dom1.com 没有。

这是 dom1.com 的 header 中的脚本:

ga('create', 'PropertyA', 'auto', {'name': 'trackerA'}, {'allowLinker': true});
ga('trackerA.send', 'pageview');
ga('require', 'linker');
ga('linker:autoLink', ['sub.dom1.com', 'dom1.com']);

ga('create', 'PropertyB', 'auto', {'name': 'trackerB'}, {'allowLinker': true});
ga('trackerB.send', 'pageview');
ga('require', 'linker');
ga('linker:autoLink', ['sub.dom1.com', 'dom1.com', 'dom2.com']);

我已经尝试移动上面的第二个跟踪器以防脚本不是 运行,但它没有解决任何问题。我认为问题出在我尝试使用链接器 2 次的方式中,但也许做错了?

感谢您的帮助,希望对其他人也有帮助。

调用 "require" 和 "linker" 方法时需要包含跟踪器名称:

ga('trackerA.require', 'linker');
ga('trackerA.linker:autoLink', ['sub.dom1.com', 'dom1.com']);

同属性 B.

您的实施存在一些问题(并非所有这些都会导致您的问题,但它们通常仍然是最佳做法):

  1. 一般来说,在对跟踪器执行任何其他操作之前,您应该始终要求所有插件并调用插件初始化,因为许多插件会改变存储在跟踪器上的行为 and/or 数据。

  2. 您不需要在 autoLink 方法中指定子域,因为您使用 auto 启用自动 cookie 域配置,它们会被自动跟踪。

  3. 您不能将两个对象传递给 create 方法,而应该将这些选项组合成一个对象或使用 shorthand(例如 ga('create', trackingID, cookieDomain, trackerName, additionalConfigOptions);

  4. 当使用多个跟踪器时,您必须在需要插件和调用插件方法时指定跟踪器名称(例如ga('trackerName.require', 'pluginName');ga('trackerName.pluginName:methodName', methodOptions);

如果您按如下方式更新代码,它应该可以工作:

ga('create', 'PropertyA', 'auto', 'trackerA', {'allowLinker': true});
ga('trackerA.require', 'linker');
ga('trackerA.linker:autoLink', ['dom1.com']);
ga('trackerA.send', 'pageview');

ga('create', 'PropertyB', 'auto', 'trackerB', {'allowLinker': true});
ga('trackerB.require', 'linker');
ga('trackerB.linker:autoLink', ['dom1.com', 'dom2.com']);
ga('trackerB.send', 'pageview');