请帮忙。我正在尝试使用 GTM dataLayer 在我的销售确认页面上跟踪购买情况。我已经添加了 dataLayer,它位于 GTM 容器片段的上方,但 Google Tag Manager 完全无法识别该数据层。就像它在页面上不存在一样。为什么?您可以在源代码中看到所有内容均已正确格式化:查看源代码:http: //www.maverickhelicopter.com/survey.aspx但 GTM 预览工具甚至无法识别数据层的存在。GTM预览工具截图
问问题
2687 次
1 回答
0
问题是您在定义 dataLayer 的 GTM 代码片段之前调用 dataLayer.push() 函数。如您的页面所示:
您必须在定义 dataLayer 之后或在正文中的 GTM 代码片段之后移动 dataLayer.push 。这真的取决于你什么时候想触发你的“reservationPushed”事件。例如,如果您在头部包含推送功能:
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'
});
“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>
于 2017-07-17T13:49:25.660 回答