概括
随着时间的推移,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
等,然后为每一个提出规则和标签。这太荒谬了,你不同意吗?gaCustomEventWithLabel
gaCustomEventWithOption