首先,_setCustomVar
必须先来_trackPageview
。
现在解决您的问题:
这是因为用户级别的自定义变量存储在 cookie 中。由于您的两个跟踪器共享相同的 cookie,因此第二个跟踪器将与第一个跟踪器上设置的变量一起发送。
你有 3 个选项。
1) 使用通用分析
正确的方法是使用 Universal Analytics。正如您可能注意到的那样,Classic 不正式支持多轨,因为它有问题。而且东西很容易坏。
在 Universal 上,所有自定义维度都在服务器端进行评估,因此支持此设置。没有数据存储在自定义维度的 cookie 中。
例如:如果您通过管理界面配置了dimension1 onUA-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'
});
更多信息:
2) 保留经典分析,但使用会话级 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']);
or _gaq.push(['_setAllowHash', false]);
,上述技巧将不起作用,cookie 会发生冲突。你的数据会很奇怪。只是不要这样做。你已经被警告过了。
我不能强调这是在没有保证的情况下提供的,如果您的数据中断,则由您自己承担。多个跟踪器很棘手,这就是它从未得到官方支持的原因。
更多信息: