Google Analytics Web+App 事件配置:错误“gtag 未定义”

Tim*_*eld 6 google-analytics google-tag-manager

我正在尝试为网站设置 Google Analytics App+Web 的电子商务事件配置。请参阅此处的文档。

因为电子商务配置有很多自定义代码,所以我不能使用通用的 GA App+Web webevent 模板,所以在这种情况下我使用自定义 HTML 标签。

作为第一个测试,我尝试触发以下简单事件:

<script>

  gtag('event', 'blabla', {
  'test_param1': 'test_value_1'
});

</script>
Run Code Online (Sandbox Code Playgroud)

但是,事件没有正确发送到 GA;相反,控制台中返回以下错误:

未捕获的 ReferenceError:gtag 未定义

要重现,请参阅以下页面:https : //www.hema.nl/mooi-gezond/make-up/make-up-accessoires/toilettassen-1/toilettas-11830901.html

附加信息:

  • GA App+Web 基础初始化是(成功)通过 GTM 完成的,通过 GA App+Webconfiguration 模板标签。
  • 我还通过 GA App+Web webevent 模板标签通过 GTM 配置了一些其他(简单的非电子商务)GA App+Web 事件,这些事件成功发送到 GA。

有谁知道出了什么问题,为什么会出现控制台错误以及为什么事件没有发送到 GA?

Cri*_*bem 6

简答

除了 GTM GA App+Web 标记之外,您还需要添加以下代码以定义 gtag():

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
</script>
Run Code Online (Sandbox Code Playgroud)

长答案

根据官方文档(https://developers.google.com/analytics/devguides/collection/ga4),这是您应该在您的网站中包含的代码:

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=MEASUREMENT_ID"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'MEASUREMENT_ID');
</script>
Run Code Online (Sandbox Code Playgroud)

在检查带有此标签的网站后,我发现 GTM 注入了第一行,这足以使分析工作。但它没有添加其他行,其中一些行有效地将gtag全局函数定义为将事物推送到分析数据层的“语法糖”。

就个人而言,我觉得这真的很奇怪,因为使用 GTM 是将 Google Analytics 添加到网站的最规范的做法,而且它是由同一家公司提供的。


小智 5

这可能有点重复已接受的答案,但我想确认(某些)Google 文档确实建议将以下代码片段手动添加到您网站的 <head> 部分,就在您的网站上方现有跟踪代码管理器容器代码段:

<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
</script>
Run Code Online (Sandbox Code Playgroud)

如果出现以下情况,这是必要的:

  • 您正在使用 Google 跟踪代码管理器而不是“Google 跟踪代码”部署 Analytics 跟踪代码
  • 您希望利用gtag()语法将事件发送到您的 GA4 Analytics 媒体资源

来源: https: //developers.google.com/analytics/devguides/migration/ecommerce/gtm-ga4-to-ua#4_enable_the_gtagjs_api


Tim*_*eld 1

问题的原因已经找到了。问题似乎是,如果应用程序+Web 基本设置是使用 GTM 应用程序+Web 基本模板标记完成的,则 gtag() 不起作用。相反,应首先将事件推送到 GTM 数据层,然后应使用 GTM App+Web 事件模板将事件发送到 Google Analytics。

非常感谢 Gino(在 Merkle 工作)解决了这个问题!

  • 嗨,蒂莫,您是否有机会提供解决方案的代码片段?谢谢! (25认同)