5

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

4

1 回答 1

8

首先,_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 会发生冲突。你的数据会很奇怪。只是不要这样做。你已经被警告过了。

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

更多信息:

于 2014-05-12T20:09:53.013 回答