【问题标题】:Multiple GA trackers gets each other variables多个 GA 跟踪器相互获取变量
【发布时间】:2014-05-08 03:46:21
【问题描述】:

我需要为两个 GA 帐户拆分收集数据,我们将它们命名为 UA-XXXXXXX-1 和 UA-XXXXXXX-2。为了实现这一点,我使用了来自https://developers.google.com/analytics/devguides/collection/gajs/ 的示例代码(在“将命令推送到多个跟踪器也可以”文本下),这是我的代码:

    _gaq.push(['_setAccount', 'UA-XXXXXXX-1']);
    _gaq.push(['_trackPageview']);
    _gaq.push(['_setCustomVar', 1, 'customVar1', 'cv1', 1]);

    _gaq.push(['second._setAccount', 'UA-XXXXXXX-2']);
    _gaq.push(['second._trackPageview']);
    _gaq.push(['second._setCustomVar', 2, 'customVar2', 'cv2', 1]);

它正在工作,但我在两个帐户中都有两个自定义变量。我真正需要的是仅跟踪 UA-XXXXXXX-1 帐户的 customVar1,仅跟踪 UA-XXXXXXX-2 帐户的 customVar2。有什么想法可以实现吗?

【问题讨论】:

  • 您是否考虑过迁移到 Universal Analytics 并使用新的 analytics.js api?多个跟踪器用例在 Classic Analytics 中没有得到很好的支持,但在 Universal 中是支持的。
  • @Eduardo 这甚至可以通过 Universal Analytics 实现吗?
  • @Eduardo,我希望有一个经典分析的解决方案,因为最好不要更改我们项目中的所有 GA 代码)但我们将寻求通用分析并检查是否有这样的功能,谢谢回复!

标签: google-analytics multiple-accounts


【解决方案1】:

首先,_setCustomVar必须在_trackPageview之前。

现在解决您的问题:

这是因为用户级别的自定义变量存储在 cookie 中。由于您的两个跟踪器共享相同的 cookie,因此第二个跟踪器将与第一个跟踪器上设置的变量一起发送。

您有 3 个选项。

1) 使用 Universal Analytics

正确的方法是使用 Universal Analytics。正如您可能注意到的那样,Classic 不正式支持多轨,因为它有问题。而且东西很容易坏。

在 Universal 上,所有自定义维度都在服务器端进行评估,因此支持此设置。没有数据存储在自定义维度的 cookie 中。

例如: 前提是您通过管理界面在UA-XXXXXXX-1 上配置了维度1,在UA-XXXXXXX-2 上配置了维度2。

ga('create', 'UA-XXXXXXX-1', 'auto');
ga('send', 'pageview', {
  'dimension1': 'cv1'
});

ga('create', 'UA-XXXXXXX-2', 'auto', {'name': 'newTracker'});
ga('newTracker.send', 'pageview', {
  'dimension2': 'cv2'
});

更多信息:

2) 保留 Classic Analytics,但使用会话级 customVars

如果您确定无法迁移到 Universal Analytics 并希望继续使用 Classic,您可以通过使用会话级别自定义变量来解决此问题。要使其工作,您只需要更改自定义 Var 的范围,如下所示(从 1 到 2)。

与用户范围的自定义变量不同,会话范围的 CV 不会存储在 cookie 中。所以你会解决这个问题。缺点是该值仅对该会话有效,对来自同一用户的未来会话无效。

_gaq.push(['_setAccount', 'UA-XXXXXXX-1']);
_gaq.push(['_setCustomVar', 1, 'customVar1', 'cv1', 2]);
_gaq.push(['_trackPageview']);


_gaq.push(['second._setAccount', 'UA-XXXXXXX-2']);
_gaq.push(['second._setCustomVar', 2, 'customVar2', 'cv2', 2]);
_gaq.push(['second._trackPageview']);

3) 保留 Classic 和 User 范围的 CV,但每个跟踪器使用不同的 cookie

您可以将 GA 配置为创建 2 组 cookie,一组用于每个跟踪器,一组在根域,一组在子域。

如果您的网站是:http://www.example.net 像这样设置您的跟踪器:

_gaq.push(['_setAccount', 'UA-XXXXXXX-1']);
_gaq.push(['_setDomainName', 'example.net']);
_gaq.push(['_setCustomVar', 1, 'customVar1', 'cv1', 1]);
_gaq.push(['_trackPageview']);


_gaq.push(['second._setAccount', 'UA-XXXXXXX-2']);
_gaq.push(['second._setDomainName', 'www.example.net']);
_gaq.push(['second._setCustomVar', 2, 'customVar2', 'cv2', 1]);
_gaq.push(['second._trackPageview']);

必须在您网站的所有页面中完成。不止这一个。这将确保每个跟踪器都使用它的隔离cookieset,并且customVars 不会从一个泄漏到另一个。

请注意,如果您的网站可以在没有www. 的情况下访问。例如:http://example.net/ 这将失败并且没有解决方法。您不能在相同的域和路径中创建 2 组具有相同名称的 cookie。你就是不能。

另外,如果您使用_gaq.push(['_setDomainName', 'none']);_gaq.push(['_setAllowHash', false]);,上述技巧将不起作用,cookie 会发生冲突。你的数据会很奇怪。只是不要这样做。您已收到警告。

我再怎么强调也不过分,这是在没有保证的情况下提供的,如果您的数据中断,一切由您自己承担。多个跟踪器很棘手,这就是它从未得到官方支持的原因。

更多信息:

【讨论】:

  • 很好的答案。当谷歌人愿意在那里传播丰富的知识时,我总是喜欢它。 :)
  • @Eduardo 感谢您如此详细的回复!我们使用了 #2,效果很好!
  • @Memfis,强烈建议您“硬着头皮”升级到 Universal Analytics。 Google 可能已经将您的资产推送到 UA,而您使用的旧代码将在他们完成转移后被弃用。设置自定义维度并不难。我实际上觉得它们比自定义变量更容易实现。
  • @Eduardo,我希望你能帮助我解决我自己与 UA 相关的问题。请在此处查看我的问题:stackoverflow.com/questions/23815965/…
  • @Eduardo,我知道这个问题已经很老了,但我似乎无法在任何地方找到我的问题的答案。你能看看我的UA问题吗?我觉得解决方案很简单,但我在互联网上找不到任何答案。我已在此页面上阅读了您的答案,但它并不能完全回答我的问题。谢谢你。 stackoverflow.com/questions/29007427/…
猜你喜欢
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
  • 2015-09-17
  • 1970-01-01
相关资源
最近更新 更多