Google分析(通过代码管理器)在第一次网页加载后会丢失对访问者的跟踪

Eri*_*onn 7 google-analytics google-adwords backbone.js single-page-application google-tag-manager

我在使用Google代码管理器(GTM),Google分析(GA)和Google adwords时遇到了一个非常奇怪的问题.到目前为止,我无法解决它.

设置:
我们有一个单页应用程序(骨干和牵线木偶),我们使用GTM使用标准dataLayer.push事件(如果相关,还有电子商务事件)将虚拟网页浏览推送到GA.此设置通常正常.

问题:
问题是用户来自adwords,带有gclid标签.跟踪这些用户的第一次网页浏览并正确归因于adword广告系列,但只要他们点击网站上的任何链接,他们似乎就会在GA中获得新会话,然后原始会话计为退回.所有网页都在同一个网域上,我们已经确认这些广告系列用户实际上没有弹跳,他们仍然在网站上,但在某种程度上被GA错误标记.

IE

  1. 用户使用adwords中的gclid标记进入网站.
  2. 该访问被跟踪为谷歌cpc流量.
  3. 用户单击页面中的链接,或触发主干路由器.navigate功能以加载新内容.
  4. 来自(2)的原始会话结束并计入已退回,即使用户只是跟随站点内的链接.
  5. 创建一个新会话,不计入cpc-traffic(因为新页面没有gclid标记).

重要说明:此问题仅适用于广告系列访问者!没有广告系列标记的用户在点击链接时不会获得新会话.

以前有没有人遇到这样的问题?在单页应用上通过GTM使用adwords时是否有任何特殊事项需要考虑?什么可能导致谷歌分析失去这样的会议?

有问题的网站是https://fyndiq.se,在移动设备中(它使用动态服务,问题不在桌面版本上,而不是SPA).


编辑 - 问题摘要和当前不完善的解决方案

我们已经设法达到了可接受的水平,但它远非完美.由于解决方案全部在评论中展开,我想我会在这里总结一下结果.

问题确实是Google Analytics为Adwords用户创建了新会话,从而失去了对广告系列的跟踪.Analytics将在几种不同条件下为用户启动新会话.最常见的情况是当用户处于非活动状态30分钟,用户从新广告系列进入网站时,以及用户从已知搜索引擎进入网站时.

最后两个是这里的问题.Google根据广告系列代码(gclid或utm_)和引荐来源的组合判断这些条件,并且在单个页面上应用引荐来源不会更新!

IE

  1. 用户通过adwords进入www.example.com.分析网页内容将包含gclid广告系列代码和Google作为引荐来源.
  2. 用户单击内部链接,SPA处理路由.
  3. 广告系列代码已移除,在非SPA上,引荐来源将更改为www.example.com,但由于这是SPA,因此没有真正的网页加载,而引荐来源仍为Google.
  4. Google Analytics获取综合浏览量,发现广告系列和引荐来源组合已更改且引荐来源属于搜索引擎,并假定用户离开了网页,然后从搜索字词中重新输入.
  5. Google Analytics(分析)会在没有广告系列的情况下启动新会话,并将会话定义为自定义流量(因为它相信从谷歌搜索匹配中输入的用户),并且广告系列会话是反弹的.

为了防止这种情况,我们最终做了两件事.首先,我们手动向Google跟踪代码管理器发送引荐来源(如果没有发送,则默认为document.referrer,如上所述,不会更新).在第一个页面加载中,我们使用真正的引荐来源,以便正确地归属命中.在任何后续页面加载中,我们将自己的域名作为引荐来源发送,就像它在非SPA上一样.这告诉分析我们正在内部路由并且它不应该启动新会话.

引用者可以像发送虚拟网页浏览网址一样发送给GTM,并且(在写作的那一刻)设置在与url和pagetitle相同的位置.我们确保在发送到分析的所有事件上完成此操作,而不仅仅是网页浏览.

第二件事来自下面的Jareds答案,我们确保设置页面而不仅仅是位置(见下文为什么这些不同).可以在GTM的高级设置中设置页面.只需要这两件事中的一件,但我们两件事都只是为了安全.

这似乎给了我们大部分正确的数据.与adwords的数据相比,我们仍然缺少大约15%的cpc交易,但我们很难知道我们到底有多接近.Adwords和analytics不会测量相同的东西,因此可以预期差异,差异的大小会因页面而异.然而,对我们来说,它足以用于测试和营销,因此它现在必须要做.


如果有人发现更一致的解决方案,请写一个新的答案!

小智 2

我们 betabrand.com 也遇到了非常相似的问题。

上个月,我们使用 angularJs 从多页应用程序切换到单页应用程序,并立即开始跟踪 Universal Analytics 和 Google Analytics 的广告收入不佳。

我们还使用 Google 跟踪代码管理器来启动我们的活动。

我们当前的领先优势来自https://developers.google.com/analytics/devguides/collection/analyticsjs/single-page-applications

其中指出:

不更新文档位置

与跟踪器使用 document.referrer 作为引荐来源网址字段的方式相同,它使用 document.location 作为位置字段,该字段通常会以附加到 URL 末尾的查询参数的形式包含活动数据或其他元数据。

更新 Google Analytics(分析)正在检查的任何营销活动字段或其他元数据可能会导致当前会话结束并开始新会话。为了避免此问题,在单页面应用程序中跟踪虚拟综合浏览量时,请勿更新位置字段。请改用页面字段。

它还包括此注释

注意:如果您发送的命中同时包含位置和页面字段,并且路径值不同,Google Analytics(分析)将使用为页面字段指定的值。

对我们来说,这意味着如果您包含“页面”字段,它将胜过“位置”字段值,并且如果您在初始页面加载后包含没有“页面”字段的“位置”字段,您将面临启动的风险可能会删除活动跟踪的新会话。

使用谷歌分析调试器 Chrome 扩展,我们能够识别确实触发位置参数但没有页面参数的事件。

用户点击我们的页面,GTM 会使用“位置”参数触发页面视图。随后的虚拟页面视图包括“位置”和“页面”参数。然而,当用户打开购物车时,我们也会触发一个事件,其中包含“位置”参数而不是“页面”参数。

我们刚刚更新了 GTM 配置来尝试解决此问题,并祈祷它能够发挥作用。如果我们找到解决方案,我会更新我的帖子。

我们已经为此苦苦挣扎太久了。