4

概括

随着时间的推移,Google 跟踪代码管理器 dataLayer 会被值堵塞,这使得规则和标签过于复杂,尤其是在 AJAX 繁重的网站上。


问题

我正在一个重跟踪的网站上实施 GTM,并为以下问题寻找一个干净的解决方案。我将以谷歌分析为例。

它允许您设置和使用 4 个宏进行事件跟踪:

  • 类别 {{ga 事件类别}}
  • 动作 {{ga 事件动作}}
  • 标签 {{ga 事件标签}}
  • 值 {{ga 事件值}}

值和标签是可选的,但 dataLayer 是持久的,不是吗?那么我该如何处理以下场景:

dataLayer.push({
  'event':'gaEvent', 
  'gaEventCategory':'my-category', 
  'gaEventAction':'my-action',
  'gaEventLabel':'my-label',
  'gaEventValue':'my-value'
});

但是稍后在同一页面上,我必须跟踪另一个事件,但没有标签和值:

dataLayer.push({
  'event':'gaEvent', 
  'gaEventCategory':'another-category', 
  'gaEventAction':'another-action',
});

如果我设置了一个类似“Event is gaEvent”的规则,然后我会触发如下所示的“Google Analytics”标签(在此处使用 HTML 标签而不是内置标签):

<script type="text/javascript">
  _gaq.push(['_trackEvent', '{{ga event category}}', '{{ga event action}}', '{{ga event label}}',  {{ga event value}}]);
</script>

第二个事件将被推送到_gaq前一个事件的标签和值。

如何处理此类案件?

对于那些想知道的人,我需要能够在同一事件的某些点上触发不同的标签,这就是为什么我想要这个“动态”解决方案,但是 dataLayer 像这样持久化会搞砸规则。

编辑1:测试例程

这是我如何测试它。

  • 我在 Chrome 中安装了 Google Analytics Debugger
  • 我在调试模式下有 GTM
  • 加载站点后,在控制台中,我从描述中执行第一个 dataLayer 推送
  • 我从 GA Debug 输出中看到 GA 事件是用 4 个值触发的
  • 我从控制台进行第二次推送
  • GA 调试输出告诉我 GA 事件是使用新类别和操作触发的,但之前推送的标签和值

这就是我所说的坚持。为了规避这一点,我只能想出不同的事件类型,如,gaCustomEvent等,然后为每一个提出规则和标签。这太荒谬了,你不同意吗?gaCustomEventWithLabelgaCustomEventWithOption

4

3 回答 3

7

您可以将一个对象推送到包含与单个事件相关的所有信息的 dataLayer 中,例如:

dataLayer.push({
    'gaEvent':{
        'category': 'foo',
        'action': 'bar',
        'label': 'blah blah blah',
        'value': 1,
        'nonInteraction':false
    }
});

然后,您可以在 GTM 中设置相关宏来收集和使用相关字段,这些字段不会被转移到任何未来的事件中,因为仅使用推入 dataLayer 的对象的最后一个值。

于 2013-11-04T13:33:49.970 回答
0

我相信您的问题是在自定义 HTML 标记和规则中使用 _gaq.push {{event}} equals gaEvent

<script type="text/javascript">
_gaq.push(['_trackEvent', '{{ga event category}}', '{{ga event action}}', '{{ga event label}}',  {{ga event value}}]);
</script>

因此,当您执行 dataLayer.push 时,规则会被触发,从而导致自定义 HTML 标记将 _gaq.push 跟踪器发送到 GA。当您执行第二个 dataLayer.push 时,规则再次触发,但感觉它没有标签或值的值,它使用该 dataLayer.push 的标签和值的先前值。

我要做的是:

设置一个名为 events 的新宏 - 这是一个跟踪类型为 event 的 Google Analytics 标记。接下来为事件跟踪参数放入宏,并将标签设置为您当前用于 gaEvent ( {{event}} equals gaEvent) 的规则。

在此处输入图像描述

通过这种方式处理事件,您将使用 GTM 向 GA 发送事​​件的方法,并且您将阻止自己发送附加信息,例如标签、值等。

于 2013-09-25T17:23:27.650 回答
0

每个dataLayer.push()都是细粒度的、独立的,并触发具有匹配触发规则的标签。如果您希望您的第二个事件从第一个继承 dataLayer 变量,它可能最好在您的应用程序而不是 GTM 中处理。

另一种选择是在第二次推送时使用不同的事件名称,并将宏用于 dataLayer 变量默认值。您可以将 GA 事件跟踪代码配置为侦听多个触发规则。它是一个 any,所以任何一个都会触发_gaq.push().

于 2013-11-08T10:00:04.507 回答