【发布时间】:2019-10-20 00:48:30
【问题描述】:
我最近在我们的产品和结帐页面上添加了一个 dataLayer,用于 Google Analytics 增强型电子商务,遵循 Simo 博客上的约定。但是,自从我们添加了 dataLayer 后,发生了一些奇怪的事情 - gtm.load 和 gtm.dom 调用不再触发。
如果我进行一次硬刷新,清除我的 cookie 并完成一次流程,一切似乎都能正常启动。但是,一旦我返回主页或网站的其他部分,我只会看到 gtm.js 被触发,而我的触发器都不起作用。
例如,导航流程是首页 -> 产品列表 -> 产品详情。该站点是一个 React 单页应用程序,因此我有一个历史事件触发器来触发 GA 标记。如果我是新用户,并且浏览了这 3 个页面,我将在 dataLayer 中看到以下内容(如预期的那样):gtm.js、gtm.dom、gtm.load、gtm.history。但是,如果我返回主页并再次执行流程,gtm.dom 和 gtm.load dataLayer 对象就会消失,因此我的 GTM 触发器永远不会触发。有关上述流程的产品详细信息页面上的 dataLayer 外观示例,请参见下图。
我在这里不知所措,因为我从未见过 gtm.load 不触发
产品列表页面上的数据层代码: var window.dataLayer = 窗口.dataLayer || []
dataLayer.push({
'ecommerce': {
'currencyCode':'CAD',
'impressions': [ //the array of products present within the listing
{ 'id':'123456', // Product SKU
'name':'GOOD FOOD', // Product Name
'price':'7.20', // Display price - use only xxxx.xx formatting
'brand':'No Name', // Product Brand
'category':'Food',
'position':0, // Product position within the list
'list':'Products page' // leave as is
}, { //second product
'id':'456890',
'name':'ABC Nuts',
'price':'8.50',
'brand':'ABC',
'category':'Food',
'position':1,
'list':'Products page'
},
...
{
'id':'1001010',
'name':'Fish Oil',
'price':'95.00',
'brand':'Zenn',
'category':'Oil',
'position':21,
'list':'Products page'
}
]
}
}); </script>
产品详情页面上的dataLayer:
<script>
var window.dataLayer = window.dataLayer || []
dataLayer.push({
'event': 'detail',
'ecommerce' : { 'detail' :
{ 'products' : [{
'name': 'Product ABC', // Full product name
'id': '123456', // Product SKU
'price': '15.25', // Price
'brand': 'Noname', // Brand of product
'category': 'Food', // Product category: Oil, Capsule, Flower or Accessory
'variant': '5g' // Size
}]
}
}
});
</script>
【问题讨论】:
-
你是在初始化一些东西还是重置主页上数据层的值?您能否在主页上发布与您如何实现 GA 相关的代码以及与历史触发器相关的代码?
-
我已将 dataLayer 代码粘贴到产品列表和产品详细信息页面上。主页上没有设置自定义数据层,只有标准的 GTM sn-p 和 GA
标签: reactjs google-analytics google-tag-manager google-datalayer