Google Analytics 跨域跟踪和 _setDomainName()

Posted

技术标签:

【中文标题】Google Analytics 跨域跟踪和 _setDomainName()【英文标题】:Google Analytics Cross Domain Tracking and _setDomainName() 【发布时间】:2012-03-21 01:04:12 【问题描述】:

我正在尝试在两个完全不同的域(不是子域)之间设置跨域跟踪。浏览 Google 文档的不同页面似乎给了我关于在 _setDomainName 方法中放入什么的不同建议。

我不知道什么时候应该使用这三个中的哪一个:

_gaq.push(['_setDomainName', 'mysite.com']);
_gaq.push(['_setDomainName', '.mysite.com']);
_gaq.push(['_setDomainName', 'none']);

有人可以给我一些指导或解释吗?

【问题讨论】:

【参考方案1】:

Ben,最好的解释在 Google 文档页面 - http://code.google.com/apis/analytics/docs/tracking/gaTrackingSite.html#domainToNone。了解此页面,有很多方法可以配置您的 GA 设置,并且在不了解更多有关您所需配置的信息的情况下,没有明确的方式可以说“这就是您需要设置跨域跟踪的方式”。该页面上的场景肯定会有所帮助。

使用 _setDomainName 的不同变体有 3 个不同的原因。

'none' - 当您想要独立于任何子域跟踪***域时,您只需要使用此功能,因为此参数将使域的 cookie 无法被其子域访问-域。

'mysite.com' - 在域和另一个域的子目录之间进行跟踪时使用此选项。例如,您的“mysite.com”个人资料还应记录来自“yourblog.othersite.com”的点击。

'.mysite.com' - 当您想要跨域及其子域进行跟踪时使用此选项。这会将***域和子域视为一个实体并在同一配置文件中进行跟踪。例如,“mysite.com”个人资料应记录“blogs.mysite.com”和“shop.mysite.com”。

我建议设置一些测试配置文件并试验您的配置,这样您就不会“弄脏”您的真实数据。

希望这会有所帮助!

【讨论】:

我已经阅读了该 Google 页面大约 100 次。您的解释确实有助于澄清一点。我看到对于我的场景,示例代码似乎告诉我我的主站点 (mysite.com) 应该将 _setDomainName 设置为“mystie.com”,但另一个站点 (my-ecommerce.com) 应该设置 _setDomainName为“无”。我不知道为什么。 你确定吗?我认为“无”表示您希望确保您的子域不被该配置文件跟踪。我认为在您的示例中,您可以在该网站和“my-ecommerce.com”上将其设置为“mysite.com”。希望您可以快速测试该理论,而不会对您的数据产生任何影响。您可以设置它并使用新的实时报告对其进行采样,以查看其跟踪是否正确。 是的。如果您查看文档的这一部分:code.google.com/apis/analytics/docs/tracking/… 您将看到在“主”站点上他们使用 url,然后在“博客”站点上他们使用“无”。我实际上是在一些测试站点上进行全新安装以对其进行全面测试,但只是先尝试​​尽可能多地减少未知数。感谢您的意见。 优秀。现在,在创建新网站以创建 Dev、QA 和 Live 配置文件时,我将其作为标准做法。这样我就可以轻松地将测试数据排除在生产 GA 报告之外。 RE: 'none' -- 我认为定义是不正确的,实际上是颠倒的。将 _setDomainName 设置为“none”实际上允许所有域共享 cookie 数据。见:seotakeaways.com/cross-domain-tracking-google-analytics-works【参考方案2】:

文档页面有点落后,因为最近发生了一些变化,改变了最好的方法。

_setDomainName 的默认设置是'auto'。这会将 cookie 设置为您的完整域,除非您在 www 域上,在这种情况下,它将设置为 mysite.com 而不带前导点。此设置可能会导致问题,我避免坚持使用它们。我总是改变它

www.mysite.com设置域名有2个选项。

_setDomainName('.mysite.com') -> 当您还想跟踪所有子域时,这是必要的。 _setDomainName('www.mysite.com') -> 如果你不想跟踪你的子域,你应该使用这个。

在 99% 的情况下,我会选择第一个选项。将其设置为***域,但使用前导点。 你会看到很多人反对领先的点。喜欢来自roirevolution 的这个古老但很好的帖子。围绕前导点的担忧是它可能导致 cookie 重置。但只有当有人已经拥有 cookie 时才会发生这种情况。如果这是一个新的实现,你就没有这个问题。

_setDomainName('none') 等价于 _setDomainName('auto') + _setAllowHash(false)。但由于_setAllowHash(false) 已被弃用,我想_setDomainName('none') 也应该被弃用。

【讨论】:

我已将域名设置为 www.mysite.com,但 GA 仍将 cookie 域设置为 .mysite.com,从而破坏了我的 CDN 子域。那么,我应该使用none吗? RE: 'none' -- 将 _setDomainName 设置为 'none' 实际上允许所有域共享 cookie 数据。见:seotakeaways.com/cross-domain-tracking-google-analytics-works【参考方案3】:

我认为mysite.com 将跟踪该站点及其一级子域(如mysite.comcats.mysite.com),而.mysite.com 将跟踪该站点及其一级和二级子域(如mysite.comcats.mysite.comstore.cats.mysite.com)。

我基于谷歌和其他一些文章所说的。

none 将禁止任何子域跟踪(所以我假设它会将 cookie 的域设置为:www.mysite.com)。

我猜测默认选项 auto 将通过 document.domain 将其设置为 www.mysite.com (但如果不在 www 域上,则可能是 mysite.com 基于 Eduardo 在上方/下方的回答,以允许更智能的 1 级子域跟踪)。

auto/none 是我的猜测,如果您选择 blah.mysite.com 并设置了这些 none/auto 选项,不确定它会给域带来什么。

【讨论】:

【参考方案4】:

如果是跨域

tracking,_gaq.push(['_setDomainName', 'mysite.com']);

_gaq.push(['_setDomainName', '.mysite.com']);

没有任何区别,因为 cookie 信息不会以任何方式在这两个不同的域之间共享。

我在域 1 和域 2 之间设置了跟踪,单向跟踪。最初按照 Google Analytics 中的建议,我在两个域上都添加了_gaq.push(['_setDomainName', 'none']);。用于新的 Google Analytics A/B 测试,A/B 测试的验证导致错误。因此,我从域 1 中删除了_gaq.push(['_setDomainName', 'none']);,并将其保留在域 2 上,并且运行良好。

I've documented it here.

【讨论】:

这里有一些总结会很好,以防止它被删除为“不是答案”甚至是垃圾邮件。

以上是关于Google Analytics 跨域跟踪和 _setDomainName()的主要内容,如果未能解决你的问题,请参考以下文章

具有多个跟踪器的 Google Analytics(分析)跨域跟踪

Shopify 的传统 Google Analytics 跨域跟踪不传递数据

使用 Google Analytics 对子域进行跨域跟踪

我想使用 Google Analytics 跨域跟踪,它只适用于锚标签吗?

Google Analytics 跨域:链接器参数哈希错误或过期

ga 或 _gaq.push 用于 Google Analytics 事件跟踪?