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

Mem*_*fis 5 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]);
Run Code Online (Sandbox Code Playgroud)

它正在运行,但我在两个帐户中都有自定义变量.我真正需要的是仅为UA-XXXXXXX-1帐户跟踪customVar1,仅为UA-XXXXXXX-2帐户跟踪customVar2.任何想法如何实现这一点?

Edu*_*rdo 8

首先,_setCustomVar必须来之前_trackPageview.

现在你的问题:

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

你有3个选择.

1)使用Universal Analytics

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

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

例如:如果您通过Admin界面配置了dimension1 on UA-XXXXXXX-1和dimension2 on UA-XXXXXXX-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'
});
Run Code Online (Sandbox Code Playgroud)

更多信息:

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']);
Run Code Online (Sandbox Code Playgroud)

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']);
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

更多信息: