我有一个单页电子商务应用程序,需要设置Google电子商务渠道。我的应用程序在标签管理器dataLayer中设置了渠道步骤
文档中没有任何内容指示何时将数据层实际发送到Google跟踪代码管理器。
window.dataLayer从以下页面开始:
event: 'checkout',
ecommerce: {
checkout: { actionField: {step: 1, option: 'Checkout Options'}}
}
在第一个按钮上单击
$(document).one('click','#button-payment-address', function () {
window.dataLayer.push({
'event': 'checkout',
'ecommerce': {
'checkout': {
'actionField': {
'step': 2,
'option': 'Billing Details'
}
}
}
});
});
dataLayer变为:
event: 'checkout',
ecommerce: {
checkout: { actionField: {step: 2, option: 'Billing Details'}}
}
在第二个按钮上
$(document).one('click', "#button-shipping-address", function(){
window.dataLayer.push({
'event': 'checkout',
'ecommerce': {
'checkout': {
'actionField': {
'step': 3,
'option': 'Delivery Details'
}
}
}
});
console.log(window.dataLayer);
});
dataLayer变为:
event: 'checkout',
ecommerce: {
checkout: { actionField: {step: 3, option: 'Delivery Details'}}
}
等等...
什么时候发送dataLayer或有什么方法可以强制发送,请重新初始化dataLayer然后执行下一步?
更新:我在Firefox DevTools / network / XHR下寻找通信,但找不到任何通信。在DevTools / network / images下查看,将显示每次单击时发布的数据。
最佳答案
将数据添加到dataLayer不会将其发送到任何地方。它只是从GTM内部以结构化方式提供数据。每当您将名为“事件”的键推入dataLayer时,GTM都会扫描dataLayer结构并使用更改或添加的值更新其内部数据模型。
这基本上为变量创建一个名称空间。变量可能会被覆盖,因此每次创建新的JS变量时,都需要确保不要重复使用现有名称,并且不小心将新值分配给变量,依此类推。相反,如果您将数据添加到dataLayer,则只需要确保您没有第二个dataLayer变量即可。
话虽如此,您的情况有所不同。您拥有的是Google Universal Analytics增强型电子商务的特殊数据结构。您的Google Analytics(分析)浏览量或事件标签中至少有一个应配置为启用增强型电子商务,并且该设置应从数据层中提取数据。
如果您在GTM中没有标签,那么数据将完全不会发送。
关于javascript - dataLayer.push之后何时将数据发送到Google,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59760514/