我正在尝试在添加到购物车事件中访问数据层变量,但在标记管理器管理网站上未对其进行跟踪
*事件已触发,但未发送值
数据层推送:
<script>
dataLayer.push({
'event': 'addToCart',
'ecommerce': {
'currencyCode': 'EUR',
'add': {
'products': [
{
'name': 'test',
'id': 'ZZZ232323',
'price': 33,
'brand': '',
'category': 'test',
'variant': '','quantity': 1
}
]
}
}
});
</script>
我正在尝试使用以下方法访问数据层以获取产品名称:
dataLayer.find(x => x.event == 'addToCart').ecommerce.add.products[dataLayer.find(x => x.event == 'addToCart').ecommerce.add.products.length - 1].price
答案 0 :(得分:0)
数据层变量不需要引用dataLayer的特定步骤(数组元素)。当您创建对dataLayer变量的引用时,例如ecommerce
,Google跟踪代码管理器(GTM)会尝试在任何给定的GTM事件中对其进行评估,但会回落到undefined
或您指定的任何其他值。
这意味着,如果您在商品数据可用时触发Facebook Pixel跟踪代码(事件= addToCart),则对电子商务数据的正确引用将具有价值。有几种方法可以获取您的产品名称。
您可以创建通用的“电子商务”变量,将ecommerce
引用为数据层变量名称。在与Facebook Pixel相关的代码中,您将不得不移至所需的变量,并且还要注意任何可能的缺失值。但是,此电子商务变量可以在多个标签中使用。
var productName = {{Ecommerce}}.add.products[0].name; //assuming you'll always have just one product in products array
或者,您可以使用特定变量,在该变量中设置“电子商务-已添加到购物车的产品名称”,并在其中引用ecommerce.add.products[0].name
。这样,您可以使用{{Ecommerce - name of product added to cart}}