多个GA跟踪器互相获取变量

时间:2014-05-08 03:46:22

标签: google-analytics multiple-accounts

我需要分割两个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。任何想法如何实现这个?

1 个答案:

答案 0 :(得分:8)

首先,_setCustomVar必须在_trackPageview之前。

现在问题:

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

您有3个选项。

1)使用Universal Analytics

这里的正确途径是使用Universal Analytics。 Classic中没有正式支持多跟踪,因为它可能会出现错误,正如您可能已经注意到的那样。事情很容易打破。

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

例如: 如果您通过管理界面在UA-XXXXXXX-1UA-XXXXXXX-2上的dimension2配置了维度1。

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)。

与User scoped Custom Vars不同,Session Scoped 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)保留经典和用户范围的简历,但每个跟踪器使用不同的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']);

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

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

此外,如果您使用_gaq.push(['_setDomainName', 'none']);_gaq.push(['_setAllowHash', false]);,则上述技巧将无效,并且Cookie会发生冲突。你的数据会很奇怪。只是不要这样做。你已被警告过了。

我无法强调的是,这是在没有保证的情况下提供的,如果您的数据打破了它。多个跟踪器很棘手,这就是它从未得到官方支持的原因。

更多信息: