开发者问题收集

当 Google Analytics 由 Google Tag Manager 管理时,如何跟踪自定义事件?

2019-04-14
2526

我最终不得不为我的网站使用 Google Tag Manager,因此 Google Analytics 现在是其中的一部分。一切都设置正确,运行良好。但是,我以前能够非常轻松地跟踪我网站上的自定义事件, 使用 ga() 函数

ga('send', 'event', 'Videos', 'play', 'Fall Campaign');

但是,现在 ga() 不再定义;我在控制台中收到错误 ReferenceError:ga 未定义 。然后我 尝试了 gtag() 方法 ,但它也不起作用(相同的错误消息):

gtag('event', 'aaa', {
  'event_category' : 'bbb',
  'event_label' : 'ccc'
});

如何使用 Javascript 代码跟踪事件?

需要说明的是,我不想对 Google Tag Manager 大惊小怪。在那里完成任何事情都需要点击一百万次。;-) 我只想直接调用 Javascript,就像以前一样。

2个回答

默认情况下,Google 跟踪代码管理器 (GTM) 为每个跟踪器使用随机名称,该名称是为每个 Universal Analytics 代码生成的。由于 GTM 仅创建命名的跟踪器,因此不会创建默认 (t0) 跟踪器。由于不会创建默认跟踪器,您必须自己提供跟踪器名称。因此,您需要知道跟踪器名称,​​或者以某种方式查询和引用它们,才能通过直接从 JavaScript 使用 ga() 调用来实现此功能。

可以使用固定名称作为跟踪器,但 强烈不建议

我有一个推荐的解决方法。您仍需要进行一些 GTM 设置,但您可以创建一个 Google Analytics 通用事件调度程序标记,稍后您可以使用该标记从 JavaScript 发送任何 Analytics 事件调用。

您的标记设置将如下所示,您可以在其中引用 Analytics 设置以及来自 dataLayer 的所有事件相关变量:

在此处输入图片说明

您的事件跟踪代码将如下所示:

dataLayer.push({
  'event': 'GAEvent',
  'eventCategory': 'Videos',
  'eventAction': 'play',
  'eventLabel': 'Fall campaign', 
  'eventValue': undefined,
  'eventNI': true 
});

请注意,建议始终在 dataLayer 中设置所有相关事件值,即使不应跟踪任何字符串或值,以便在推送合并期间不会继承任何早期的 dataLayer 值。此外,您还应根据需要更新非交互标志。您的触发器应与 event 键的值相匹配。

kgrg
2019-04-15

我在标签管理器中创建了一个新的“自定义 html”标签。然后我添加了下面的 analytics.js 代码并将标签设置为在页面加载时触发。这样我就可以使用代码中现有的 ga 调用来触发自定义事件,而不是像其他答案建议的那样重写所有事件以通过 dataLayer 与 Universal Analytics 配合使用。

<!-- Google Analytics -->
<script>
    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
    ga('create', 'UA-XXXXXXXXX-Y', 'auto');
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>
<!-- End Google Analytics -->
benlarkins
2019-07-08