Google Analytics 由 Google Tag Manager 管理时如何跟踪自定义事件?
How to track custom events when Google Analytics is managed by Google Tag Manager?
我最终不得不为我的网站使用 Google 跟踪代码管理器,因此 Google 分析现在是其中的一部分。一切都设置正确并且工作正常。但是,我曾经能够非常轻松地跟踪我网站上的自定义事件,with the ga() function:
ga('send', 'event', 'Videos', 'play', 'Fall Campaign');
但是,现在 ga() 不再定义;我在控制台中收到错误 ReferenceError: ga is not defined
。然后我 tried the gtag() method 但它也不起作用(相同的错误消息):
gtag('event', 'aaa', {
'event_category' : 'bbb',
'event_label' : 'ccc'
});
如何使用 Javascript 代码跟踪事件?
明确地说,我不想对 Google 标签管理器大惊小怪。在那里完成任何事情都需要一百万次点击。 ;-) 我只想像以前一样直接调用 Javascript。
Google 默认情况下,标签管理器 (GTM) 为每个跟踪器使用随机名称,为每个 Universal Analytics 标签生成。 AS GTM 仅创建命名跟踪器,因此不会创建默认 (t0) 跟踪器。由于没有创建默认跟踪器,您必须自己提供一个跟踪器名称。因此,您现在需要跟踪器名称,或者以某种方式查询和引用它们,才能正常工作,只能通过直接从 JavaScript.
调用 ga()
可以为跟踪器使用固定名称,即 highly discouraged。
我有一个推荐的解决方法。您仍然需要进行一些 GTM 设置,但您可以创建一个 Google Analytics 通用事件调度程序标记,稍后您可以使用它发送来自 JavaScript.
的任何 Analytics 事件调用
您的代码设置看起来像这样,您可以在其中引用您的 Analytics 设置,以及来自数据层的所有事件相关变量:
您的事件跟踪代码将如下所示:
dataLayer.push({
'event': 'GAEvent',
'eventCategory': 'Videos',
'eventAction': 'play',
'eventLabel': 'Fall campaign',
'eventValue': undefined,
'eventNI': true
});
请注意,建议始终在 dataLayer 中设置所有相关事件值,即使不应跟踪任何字符串或值,以便在推送合并期间不会继承较早的 dataLayer 值。此外,您应该根据需要更新非交互标志。您的触发器应与 event
键的值匹配。
我在跟踪代码管理器中创建了一个新的 "custom html" 代码。然后我在下面添加了 analytics.js 代码并将标签设置为在页面加载时触发。这使我可以使用我的代码中现有的 ga
调用来触发自定义事件,而不是 re-writing 我所有的事件都像其他答案所建议的那样通过 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 -->
我最终不得不为我的网站使用 Google 跟踪代码管理器,因此 Google 分析现在是其中的一部分。一切都设置正确并且工作正常。但是,我曾经能够非常轻松地跟踪我网站上的自定义事件,with the ga() function:
ga('send', 'event', 'Videos', 'play', 'Fall Campaign');
但是,现在 ga() 不再定义;我在控制台中收到错误 ReferenceError: ga is not defined
。然后我 tried the gtag() method 但它也不起作用(相同的错误消息):
gtag('event', 'aaa', {
'event_category' : 'bbb',
'event_label' : 'ccc'
});
如何使用 Javascript 代码跟踪事件?
明确地说,我不想对 Google 标签管理器大惊小怪。在那里完成任何事情都需要一百万次点击。 ;-) 我只想像以前一样直接调用 Javascript。
Google 默认情况下,标签管理器 (GTM) 为每个跟踪器使用随机名称,为每个 Universal Analytics 标签生成。 AS GTM 仅创建命名跟踪器,因此不会创建默认 (t0) 跟踪器。由于没有创建默认跟踪器,您必须自己提供一个跟踪器名称。因此,您现在需要跟踪器名称,或者以某种方式查询和引用它们,才能正常工作,只能通过直接从 JavaScript.
调用 ga()可以为跟踪器使用固定名称,即 highly discouraged。
我有一个推荐的解决方法。您仍然需要进行一些 GTM 设置,但您可以创建一个 Google Analytics 通用事件调度程序标记,稍后您可以使用它发送来自 JavaScript.
的任何 Analytics 事件调用您的代码设置看起来像这样,您可以在其中引用您的 Analytics 设置,以及来自数据层的所有事件相关变量:
您的事件跟踪代码将如下所示:
dataLayer.push({
'event': 'GAEvent',
'eventCategory': 'Videos',
'eventAction': 'play',
'eventLabel': 'Fall campaign',
'eventValue': undefined,
'eventNI': true
});
请注意,建议始终在 dataLayer 中设置所有相关事件值,即使不应跟踪任何字符串或值,以便在推送合并期间不会继承较早的 dataLayer 值。此外,您应该根据需要更新非交互标志。您的触发器应与 event
键的值匹配。
我在跟踪代码管理器中创建了一个新的 "custom html" 代码。然后我在下面添加了 analytics.js 代码并将标签设置为在页面加载时触发。这使我可以使用我的代码中现有的 ga
调用来触发自定义事件,而不是 re-writing 我所有的事件都像其他答案所建议的那样通过 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 -->