Google 分析:dataLayer.push 不工作?

Google analytics: dataLayer.push not working?

基于此线程:Tracking events using Google Tag Manager

我创建了自己的版本,位于例如http://test.site.com

<!DOCTYPE html>
<html>
<head>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

  <script>
    window.dataLayer = window.dataLayer || [];  

    dataLayer.push({
      'event':'GAevent',
      'eventCategory': 'App4', 
      'eventAction': 'Click',
      'eventLabel': 'iOS4'
    });


  </script>
</head>

<body>
  <!-- Start google tag manager -->
  <script>
    (function(w, d, s, l, i) {
        w[l] = w[l] || [];
        w[l].push({
            'gtm.start': new Date().getTime(),
            event: 'gtm.js'
        });
        var f = d.getElementsByTagName(s)[0],
            j = d.createElement(s),
            dl = l != 'dataLayer' ? '&l=' + l : '';
        j.async = true;
        j.src =
            '//www.googletagmanager.com/gtm.js?id=' + i + dl;
        f.parentNode.insertBefore(j, f);
    })(window, document, 'script', 'primecont', 'GTM-1234');
  </script>
  <!-- End google tag manager -->

</body>
</html>

我打开了 google 标签管理器调试模式并在 google 分析上实时观看。

我有 2 个标签触发规则:

  1. {{url}} 包含 test.site.com
  2. {{event}} 等于 GAevent

我得到的是“event category: undefined”和“event action: undefined”实时google分析。

如果我删除 "{{url}} contains test.site.com",则不会实时显示任何内容。

更新 我使用了一个单独的 google 标签管理器帐户并创建了一个测试页面,所以一切都是最小的。它似乎是实时工作的。非工作 google 标签管理器由学校和院系共享。我怀疑是这个原因?

由于多种原因,您的代码使用错误的变量触发。

如果 dataLayer.push() 正确,您的标签只需要 {{url}} 匹配 RegEx .* 作为其规则,因为所有在容器片段可用于所有页面规则之前发生的推送。

但是,如果您愿意,您也可以推送 'event' : 'GAEvent' 预容器代码段。但是随后您必须删除 {{url}} 规则,因为它会使您的代码触发 两次 :首先使用 {{event}} 等于 GAEvent 然后使用 {{url}} 规则。

即使您修复了上述问题,您的代码仍无法运行的原因是您在容器代码段中重命名了 dataLayer 对象:

})(window, document, 'script', 'primecont', 'GTM-1234');

'primecont' 字符串是您出于某种原因为 Google 跟踪代码管理器的数据层提供的新名称。这就是为什么您的 dataLayer.push() 不起作用,因为 Google 跟踪代码管理器正在监听 primecont.push()

因此,要么将所有 dataLayer 交互更改为 primecont,要么将容器代码段的调用行编辑为如下所示:

})(window, document, 'script', 'dataLayer', 'GTM-1234');