标记管理器无法识别Google跟踪代码管理器dataLayer

时间:2017-07-14 23:30:15

标签: javascript google-tag-manager enhanced-ecommerce google-datalayer

请帮助。我正在尝试使用GTM dataLayer跟踪我的销售确认页面上的购买情况。我添加了dataLayer,它位于GTM容器代码段之上,但Google跟踪代码管理器完全无法识别数据层。就像它在页面上不存在一样。为什么?您可以在源代码中看到所有内容都已正确格式化:view-source:http://www.maverickhelicopter.com/survey.aspx但GTM预览工具甚至无法识别数据层的存在。 screenshot of GTM preview tool

1 个答案:

答案 0 :(得分:0)

问题是你在定义dataLayer的GTM代码片段之前调用dataLayer.push()函数。如您的页面所示:

enter image description here

您必须在定义dataLayer之后移动dataLayer.push,或者在正文中的GTM代码段之后移动dataLayer.push。这真的取决于你什么时候想要解雇你的“预订推送”活动。如果您在头部包含推送功能,例如:

dataLayer = [{
    'page': {
        'type': 'confirmation',
        'environment': 'production'
    }
}];

dataLayer.push({
    'ecommerce': {
        'purchase': {
            'actionField': {
                'id': '0',
                'affiliation': '0',
                'revenue': '0'
            },
            'products': [{
                'name': '0',
                'id': '{{tourID}}',
                'price': '0',
                'category': 'None',
                'variant': 'None',
                'quantity': parseInt(document.getElementById("ctl00_ContentPlaceHolder1_hfGTMSEATS").value)
            }]
        }
    },
    'event': 'reservationPushed'
});

“预订推送”事件将在之前页面视图中解除。

或者,您可以将整个推送功能移动到GTM代码段下方,以在页面视图后触发事件。只是不要错误地移动dataLayer变量,根据开发人员指南,这位于正确的位置:https://developers.google.com/tag-manager/devguide

因此,您可以选择以下方式构建代码:

<html>
...
<script>
dataLayer = [{
'page': {
  ...
}
}];
</script>
...

<!-- Google Tag Manager -->
...
<!-- End Google Tag Manger -->
<script>
dataLayer.push({
'ecomerce': {
...
}
</script>
...
</html>