google-analytics - 坚持通过 GTM 添加 GA 标准电子商务交易
问题描述
我们使用 GTM 将 GA 添加到我们的网站。GA 中启用了标准电子商务跟踪。为了开始这个项目,我正在使用相同 GTM/GA 帐户的 DEV 环境中进行测试。只有来自实时站点的数据显示在 GA 中,所以 DEV 被过滤掉(我不确定这是如何完成的)。我有两个问题。
- 如何设置“transactionProducts”以循环浏览购物车中的商品并单独显示它们,而不是全部一起显示?
- 我该怎么做才能从 DEV 站点查看 GA 中的结果 - 我无法实时测试 - 除非我在带有假数据的实时站点上创建一个 noindex/nofollow 静态页面,以查看它是否会将其发送到 GA。
我根据 GA 方向创建了 GTM 电子商务标签: 标签类型:谷歌分析:通用分析 跟踪类型:交易 谷歌分析设置:在此标签中启用覆盖设置(我们有一个 GA 变量,但我决定不使用它,以防它可能干扰) 跟踪ID: UA-########-#
我根据 GA 方向创建了 GTM 电子商务触发器: 触发器类型:页面视图(DataLayer 在 GTM 脚本之后出现) 此触发器触发:某些页面视图 触发此触发器...:页面 URL 包含 /order/confirmation
确认页面是提交订单页面之后的自己的页面。
因此,DataLayer 是:
<script>
if(window.location.pathname == "/order/confirmorder"){
// capture values from the spans with the following classes
var GAtransactionId = jQuery(".lblOrderNumber").text();
var GAtransactionTotal = jQuery(".lblTotal").text();
var GAtransactionTax = jQuery(".lblTax").text();
var GAtransactionShipping = jQuery(".lblShippingHandling").text();
// transactionProducts data from the spans with the following classes
var GAsku = jQuery(".lblProductSKU").text();
var GAname = jQuery(".lblProductSKU").text();
var GAprice = jQuery(".lblYourPrice").text();
var GAquantity = jQuery(".lblOrderItemQty").text();
// Checking my variables before they go thru
alert("GAtransactionId: " + GAtransactionId + " GAtransactionTotal: " + GAtransactionTotal + " GAtransactionTax: " + GAtransactionTax + " GAtransactionShipping: " + GAtransactionShipping + " GAsku: " + GAsku + " GAname: " + GAname + " GAprice: " + GAprice + " GAquantity: " + GAquantity);
window.dataLayer = window.dataLayer || [];
dataLayer.push({
'transactionId': GAtransactionId,
'transactionTotal': GAtransactionTotal,
'transactionTax': GAtransactionTax,
'transactionShipping': GAtransactionShipping,
'transactionProducts': [{
'sku': GAsku, // returns each item - but smooshed together
'name': GAname, // returns each item - but smooshed together
'price': GAprice, // returns each item - but smooshed together
'quantity': GAquantity // returns each item - but smooshed together
}]
});
}
</script>
在 GTM 预览模式下,我确实看到了数据层的当前值:但如果我的购物车中有多个商品,则“transactionProducts”商品会全部融合在一起。
transactionProducts: [
{
sku: 'ABCDEFGHIJK''
name: 'Blue CoatRed Coat',
price: '$30.99$31.99',
quantity: '11'
}
]
如何遍历“transactionProducts”以分别显示购物车中的每个项目?我猜一个 for 循环可能会做,但我将如何设置它,然后我将它添加到 DataLayer 的哪里,这样它就不会破坏任何东西?另外,我是否需要从结果中删除“$”符号(我知道该怎么做)?
我在哪里可以找到一个过滤器来阻止来自 DEV 站点的数据被发送 - 所以我可以在测试时暂时禁用它?我是否需要发布 GTM 标记/触发器以使其实际发送数据,或者我可以使用预览模式并期望在 GA Conversions > Ecommerce > Overview 中看到 DataLayer 数据?
解决方案
您必须items
通过购物车中的产品元素构造您的对象,而不是获取所有span
s 的组合文本值:一些示例代码可能如下所示:
var items = []
$('.some-product-selector').each(function () {
items.push({
'sku': $(this).find('.lblProductSKU').text(),
'price': $(this).find('.lblYourPrice').text()
// the same pattern for other fields
})
})
// ...
dataLayer.push({
'transactionId': GAtransactionId,
'transactionTotal': GAtransactionTotal,
'transactionTax': GAtransactionTax,
'transactionShipping': GAtransactionShipping,
'transactionProducts': items // use your items here
});
推荐阅读
- python - ImportError:没有名为 adafruit_motor 的模块
- android - 按下四个按钮中的任何一个时,我的应用程序崩溃了
- mysql - 在 CGP 数据库上使用 asp.net REST API(API 在 GCP 上)时,GCP(谷歌云平台)的连接字符串是什么?
- django - 在 Django 2.1 中查询模型时返回 ManyToManyField ID?
- php - Laravel 部署配置
- telegram - 为什么电报群会自动变成超级群?
- rest - 为什么 GET + DELETE 不是幂等的?
- php - 多个 select2 在表单提交时仅返回一个选择
- c# - Xamarin.Forms 中 View 和 ViewModel 之间的通信
- python - 如何找到第一个非零元素和最后一个非零元素并修剪它