标签: google-tag-manager

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

我在使用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不会测量相同的东西,因此可以预期差异,差异的大小会因页面而异.然而,对我们来说,它足以用于测试和营销,因此它现在必须要做.


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

google-analytics google-adwords backbone.js single-page-application google-tag-manager

7
推荐指数
1
解决办法
2967
查看次数

Google跟踪代码管理器容器可以移动到其他帐户吗?

不是在谈论复制(即导入/导出,这需要替换所有网站的跟踪代码),而是关于在错误的帐户中打开容器和/或需要合并时的情况.

可能吗?

google-tag-manager

7
推荐指数
1
解决办法
6361
查看次数

Jwplayer使用GTM进行视频跟踪

首先,我是GTM的新手.我正在尝试在我们使用JW播放器的网站上实施GTM视频跟踪.

我跟着几篇文章如下:

https://www.thyngster.com/jwplayer-video-tracking-using-google-tag-manager/

在上面的一个中,我无法在放置标签代码后做什么,因为我找不到如何触发它.

我也按照这个链接,但它也没有工作:

http://ecommppc.com/2014/11/30/track-jw-player-videos-on-gtm/

google-analytics jwplayer google-analytics-api google-tag-manager

7
推荐指数
1
解决办法
862
查看次数

如何在React中添加两个onClick函数

嘿〜我正在尝试在React上的同一个onClick上触发提交功能和谷歌点击事件.我如何在React中执行此操作?

这是代码:

<button className={s.button} onClick={this.submit} onClick={ () => {gaClickEvent('where-to-buy', 'submit' , undefined)}}>
Run Code Online (Sandbox Code Playgroud)

javascript function onclick google-tag-manager reactjs

7
推荐指数
1
解决办法
2万
查看次数

如何正确使用Angular 4的Google跟踪代码管理器?

我有一个使用Angular 4构建的单页面应用程序.我已将GTM代码段放在index.html的body标签下方.然后在Google代码管理器面板中,我创建了一个历史记录更改事件.如文档中所述

当我用户注册时,有3个步骤1)步骤一次(当我点击电子邮件链接时,我来到此页面)2)第二步(一旦完成步骤1并点击下一步2打开)3)第三步(一次)第2步完成,点击下一步3打开)4)第四步(一旦完成第3步,点击下一步4打开)

But I cannot track my goals correctly for step 4. 
Run Code Online (Sandbox Code Playgroud)

第4步的Google分析仅显示2,但我的管理员的实际数量为92但是第1步正确跟踪.

难道我做错了什么?

google-analytics single-page-application google-tag-manager angular

7
推荐指数
0
解决办法
3533
查看次数

滚动深度 GTM - 盖茨比

我在运行具有 GTM 滚动深度的基于 gatsby 的页面时遇到问题。问题是 gtm 滚动深度与 SPA 不兼容,并且在移动到下一页时不会重置。是否有人使用任何其他脚本来测量滚动深度,与 gatsby 和 gtm/ga 集成起来既简单又快速?

google-analytics single-page-application google-tag-manager reactjs gatsby

7
推荐指数
1
解决办法
653
查看次数

如何强制GTM在&lt;head&gt;中添加标签?

我已按照以下步骤在我的网站内添加 AdSense 脚本:

  1. 现在您已将代码转到 GTM。
  2. 创建一个新标签。
  3. 提供一个名字。
  4. 选择自定义 HTML 作为标记模板。
  5. 将代码复制并粘贴到文本字段中。
  6. 将触发器设置为在所有页面或您想要投放广告的页面上触发。
  7. 单击保存并提交以推送代码。

我做到了,一切都很好。这是我的完整代码:(在谷歌标签管理器中定义为标签)

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script>
  (adsbygoogle = window.adsbygoogle || []).push({
    google_ad_client: "ca-pub-<token>",
    enable_page_level_ads: true
  });
</script>
Run Code Online (Sandbox Code Playgroud)

问题是:

上面的脚本将单独添加到dom中。我的意思是,这部分:

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
Run Code Online (Sandbox Code Playgroud)

附加到该<head>部分,这部分:

<script>
  (adsbygoogle = window.adsbygoogle || []).push({
    google_ad_client: "ca-pub-<token>",
    enable_page_level_ads: true
  });
</script>
Run Code Online (Sandbox Code Playgroud)

附加到本<body>节。所以 Google AdSense 说:

代码缺失或不完整

知道如何让 GTM 强制在部分内紧接着添加两个脚本吗<head>

html javascript adsense google-tag-manager

7
推荐指数
1
解决办法
8964
查看次数

使用 Google Optimize 和 GTM 进行的多个服务器端实验

我想知道是否可以使用 Google Optimize 和 Google Tag Manager 设置多个服务器端实验。我们关注了/sf/answers/3651048621/,它似乎对从数据层发送的值工作得很好,但考虑到 Analytics 变量名称(expId 和 expVar),感觉我们只能这样做在任何给定时间进行一次实验。

google-analytics google-tag-manager google-optimize

7
推荐指数
1
解决办法
869
查看次数

如何在flutter应用程序中添加谷歌标签管理器?

我正在尝试在 flutter 应用程序中使用 Google 跟踪代码管理器。有没有任何插件或包可以帮助在flutter中编写GTM代码?

dart google-tag-manager flutter

7
推荐指数
1
解决办法
8412
查看次数

GTM 的 Google 同意模式

我正在使用 Google 同意模式实施 Google Analytics。
它适用于这两个脚本。它实际上会像预期的那样在不设置 cookie 的情况下进行跟踪。

<script>
    window.dataLayer = window.dataLayer || [];
    function gtag() { dataLayer.push(arguments); }
    gtag("consent", "default", {
        ad_storage: "denied",
        analytics_storage: "denied",
        wait_for_update: 500
    });
    gtag('set', 'url_passthrough', true);
</script>
Run Code Online (Sandbox Code Playgroud)

<script async src="https://www.googletagmanager.com/gtag/js?id=MYCODE"></script>
<script>
    gtag('js', new Date());
    gtag('config', 'MYCODE');
</script>
Run Code Online (Sandbox Code Playgroud)

但如果我删除最后一部分并通过 GTM 进行跟踪,则它不起作用。
它仅跟踪我是否将“拒绝”更改为“授予”。

有人知道如何通过 GTM 实施分析和同意模式吗?

google-analytics google-tag-manager

7
推荐指数
2
解决办法
4694
查看次数