我是GTM的新手,我在尝试在dataLayer中提交2个增强型电子商务事件时遇到了问题。当我查看Google Analytics时,似乎只发送了最后一个事件。
我遇到http://www.simoahava.com/analytics/ecommerce-tips-google-tag-manager/,在摘要之前,似乎总结了我所说的关于它只提交最后一个的内容。
dataLayer.push({
'event': 'addToCart',
'ecommerce': {
'currencyCode': 'GBP',
'add': {
'products': dataLayerProducts
}
}
});
dataLayer.push({
'event': 'checkout',
'ecommerce': {
'checkout': {
'actionField': {'step': 1},
'products': dataLayerProducts
}
}
});
只有结帐才能在Google Analytics中注册。我尝试过以下内容:
dataLayer = [{
'event': 'checkout',
'event': 'addToCart',
'ecommerce': {
'add': {
'products': dataLayerProducts
},
'checkout': {
'actionField': {'step': 1},
'products': dataLayerProducts
}
}
}];
和
dataLayer = [{
'event': 'addToCart',
'ecommerce': {
'add': {
'products': dataLayerProducts
},
}
}, {
'event': 'checkout',
'ecommerce': {
'checkout': {
'actionField': {'step': 1},
'products': dataLayerProducts
}
}
}];
但我也没有这样的运气。如果它不可能,那么任何有用的解决方法都将非常受欢迎。
使用新代码进行更新
仍然只发送最后一个事件(结账)。代码会在打开<body>
标记后立即显示。
<script>
dataLayer = [];
dataLayerProducts = [];
dataLayerProducts.push({
'name': 'Product Name',
'id': 'SKU',
'price': '29.95',
'brand': 'Brand',
'category': 'Some/Category',
'quantity': 1
});
dataLayer.push({
'event': 'addToCart',
'ecommerce': {
'add': {
'products': dataLayerProducts
},
}
});
dataLayer.push({
'event': 'checkout',
'ecommerce': {
'checkout': {
'actionField': {'step': 1},
'products': dataLayerProducts
}
}
});
</script>
<!-- Google Tag Manager -->
// Code
<!-- End Google Tag Manager -->
答案 0 :(得分:0)
要触发标记触发,您需要有一个事件,无论该事件是来自上一个事件还是当前事件,这就是为什么它始终是一个好的做法来推动{<1}}沿 要发送到GA的数据点。西莫的例子完美地说明了这一点。但由于dataLayer还持久存在键:值对,因此它将始终使用它看到的最新事件。如果你同时推送了多个event
,那么推送的最后一个将覆盖之前的那个。这就是为什么您无法在单个dataLayer.push中拥有多个事件并期望触发所有相关标记的原因。
您需要做什么遵循Simo的示例,并将每个数据集/对象与其自己的event
一起推送到dataLayer。推送到dataLayer(event
),而不是在示例中声明它们,允许内置的侦听器接收这些特定的数据点。
编辑:修改OP的代码作为示例:
dataLayer.push