Google 跟踪代码管理器多个增强型电子商务事件
Google Tag Manager Multiple Enhanced eCommerce Events
我是 GTM 新手,尝试在数据层中提交 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
}
}
});
只有结账才会注册到 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 -->
要触发标签,您需要有一个事件,无论该事件是来自之前的推送还是当前的推送,因此推送 event
始终是一个好习惯和 您要发送到 GA 的数据点。 Simo 的例子完美地说明了这一点。但由于 dataLayer 还保留 key:value 对,因此它将始终使用它看到的最新事件。如果同时推送了多个 event
,则最后推送的将覆盖之前的。这就是为什么您不能在单个 dataLayer.push 中有多个事件并期望触发所有关联的标签。
你需要做什么按照 Simo 的例子,将每个数据 set/object 连同它自己的 event
推入数据层。推送到 dataLayer (dataLayer.push
),而不是像您的示例中那样声明它们,允许内置侦听器获取那些特定的数据点。
编辑:以修改OP的代码为例:
dataLayer.push({
'event': 'addToCart',
'ecommerce': {
'add': {
'products': // dataLayerProducts, one object per product
},
}
});
dataLayer.push({
'event': 'checkout',
'ecommerce': {
'checkout': {
'actionField': {'step': 1},
'products': // dataLayerProducts, one object per product
}
}
});
我是 GTM 新手,尝试在数据层中提交 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
}
}
});
只有结账才会注册到 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 -->
要触发标签,您需要有一个事件,无论该事件是来自之前的推送还是当前的推送,因此推送 event
始终是一个好习惯和 您要发送到 GA 的数据点。 Simo 的例子完美地说明了这一点。但由于 dataLayer 还保留 key:value 对,因此它将始终使用它看到的最新事件。如果同时推送了多个 event
,则最后推送的将覆盖之前的。这就是为什么您不能在单个 dataLayer.push 中有多个事件并期望触发所有关联的标签。
你需要做什么按照 Simo 的例子,将每个数据 set/object 连同它自己的 event
推入数据层。推送到 dataLayer (dataLayer.push
),而不是像您的示例中那样声明它们,允许内置侦听器获取那些特定的数据点。
编辑:以修改OP的代码为例:
dataLayer.push({
'event': 'addToCart',
'ecommerce': {
'add': {
'products': // dataLayerProducts, one object per product
},
}
});
dataLayer.push({
'event': 'checkout',
'ecommerce': {
'checkout': {
'actionField': {'step': 1},
'products': // dataLayerProducts, one object per product
}
}
});