我需要分割两个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。任何想法如何实现这个?
答案 0 :(得分:8)
首先,_setCustomVar
必须在_trackPageview
之前。
这是因为用户级自定义变量存储在cookie中。由于您的跟踪器共享相同的cookie,因此第二个跟踪器将与第一个跟踪器上设置的变量一起发送。
您有3个选项。
这里的正确途径是使用Universal Analytics。 Classic中没有正式支持多跟踪,因为它可能会出现错误,正如您可能已经注意到的那样。事情很容易打破。
On Universal所有自定义维度都在服务器端进行评估,因此支持此设置。自定义维度的Cookie中不存储任何数据。
例如:
如果您通过管理界面在UA-XXXXXXX-1
和UA-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'
});
更多信息:
如果您明确无法迁移到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']);
您可以配置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会发生冲突。你的数据会很奇怪。只是不要这样做。你已被警告过了。
我无法强调的是,这是在没有保证的情况下提供的,如果您的数据打破了它。多个跟踪器很棘手,这就是它从未得到官方支持的原因。
更多信息: