在GTM中指定Tag的依存关系

Google Tag Manager便利了网站分析师的工作,我一直认为它有一个局限性:一个Container中的Tag是异步加载的,各个Tag之间没有顺序,因此,如果一些Tag之前有依存关系,即如果B tag必须要在A Tag执行之后执行才有效。比如GA触发Beacon的Tag(trackPageview,trackEvent等),必须要在定义了跟踪器对象及各种参数之后执行才有效,不然轻者造成数据丢失,重则造成数据异常。关于这一点纪杨同学的文章中也有提到,昨天我也有和Rokie同学聊到这一点,并且在他那里找到了一个相对完美的解决方案(话说他的项目都有够复杂,Minisite用到虚拟电子商务跟踪有木有~)。

解决方案的思路是这样利用GTM的Data layer为A Tag的触发指定一个Event,B Tag的触发条件定义为这个事件。OK,很精巧的一个逻辑,不需要很复杂的东西。

以我的Blog为例,首先你需要在页面上放置GTM的Data Layer,很简单,只需要在页面的Body部分放置:

<script>
  dataLayer = [];
</script>

我将定义GA跟踪器参数的那一堆Tag(不包含trackPageview等触发Beacon的Tag)定义为GAS-GTAC,我用的是cardinal path的插件,跟踪器名称有一些小小的差异。同时要在这个Tag的最底部指定一个Event:

dataLayer.push({'event': 'gatc'});

这样在这个tag执行之后就在data layer中产生一个event,而这个event可以用于其他tag的触发规则,这样就保证其他的tag是在这个tag执行后触发。 这个tag的触发规则为:

All Pages Rule

All Pages Rule

最后再将触发beacon的tag放在一个tag里面,比如trackPageview等,定义为GAS-trackPageview,GAS还提供了一些其他的功能比如form监测,outbound监测。

这个tag的触发规则为:

GATC-Rule

GATC-Rule

OK,这样就在两个Tag之间建立的依存关系,GAS-trackPageview的触发是在GAS-GATC之后。

用GTM Preview结果如下:

GTM preview

GTM Preview

Tag触发正常。

GA Debugger也显示GA的Beacon发送正常。

GA Debugger

GA Debugger

大功告成,Happy Analytics~



6 Thoughts on “在GTM中指定Tag的依存关系

  1. 蓝色微笑 on October 25, 2012 at 4:05 pm said:

    A/B测试的时候,使用GTM代码无法验证成功,好像是必须要用原来的代码才可以。

    • 因为GTM是异步加载的,而A/B Test必须要在页面加载的最开始加载,不可能用户看到A内容之后再跳转到B,因此,目前GTM是不支持的。同样的道理,document.write也是不支持的。

  2. Pingback: Google Tag Manager中指定Tag的依存关系 - 蓝枫博客

  3. 钻研啊 :-)

    文章里的链接指向我的文章吧:http://jiyang.me/?p=441

    dataLayer 的事件触发可以看这儿的官方介绍:
    https://developers.google.com/tag-manager/devguide#events

  4. Pingback: Google Tag Manager 答疑 | Rokie的数字分析与优化

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Post Navigation

无觅相关文章插件,快速提升流量