Google Tag Manager 多个增强型电子商务事件
Posted
技术标签:
【中文标题】Google Tag Manager 多个增强型电子商务事件【英文标题】:Google Tag Manager Multiple Enhanced eCommerce Events 【发布时间】:2016-10-03 12:33:16 【问题描述】:我是 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
);
只有结帐会在 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 -->
【问题讨论】:
【参考方案1】:要触发标签触发,您需要有一个事件,无论该事件是来自先前的推送还是当前的推送,因此将event
与 一起推送总是一个好习惯 您要发送到 GA 的数据点。 Simo 的例子完美地说明了这一点。但由于 dataLayer 还保留 key:value 对,因此它将始终使用它看到的最新事件。如果您同时推送了多个event
,则最后一个推送的会覆盖之前的。这就是为什么您不能在单个 dataLayer.push 中包含多个事件并期望所有关联的标签都会触发。
您需要按照 Simo 的示例进行操作,并将每个数据集/对象连同其自己的 event
一起推送到 dataLayer 中。推送到 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
);
【讨论】:
您能否修改一个代码示例以帮助我理解?因为我是如何阅读它的,当你说我需要用自己的事件推送每个数据集时,我认为这就是我在问题的第一个代码块中所做的。 在您的第一个代码块中,您通过声明第二个事件来覆盖第一个事件。请记住,正常的 JS 规则适用,所以如果你给一个变量赋值,然后再赋值另一个,那么最后一个会生效。 所以我采用了您的示例代码,并使用我正在使用的完整代码编辑了我的问题。但是,似乎只有结帐事件被推送。分析显示没有添加到购物车的会话,但结帐的会话显示正确。 您必须展示您是如何配置触发器和标签的。每个事件应该有两个触发器(addToCart
和 checkout
)。我在我的页面上使用了与您完全相同的代码,我看到点击数被触发,所以不应该是语法问题。只是好奇,为什么同时推送两个事件?
你是对的,代码运行良好。我的问题是我没有为每个事件设置触发器。一旦我设置它们,上面的代码就完美了。感谢您的帮助。以上是关于Google Tag Manager 多个增强型电子商务事件的主要内容,如果未能解决你的问题,请参考以下文章
javascript Google Tag Manager表单提交
带有 Google Tag Manager 并手动添加 Google Analytics 的页面
React + Router + Google Tag Manager
来自 Google Tag Manager 的用户数据摄取流程,用于 Recommendation AI Google 云平台