首页 > 解决方案 > 坚持通过 GTM 添加 GA 标准电子商务交易

问题描述

我们使用 GTM 将 GA 添加到我们的网站。GA 中启用了标准电子商务跟踪。为了开始这个项目,我正在使用相同 GTM/GA 帐户的 DEV 环境中进行测试。只有来自实时站点的数据显示在 GA 中,所以 DEV 被过滤掉(我不确定这是如何完成的)。我有两个问题。

  1. 如何设置“transactionProducts”以循环浏览购物车中的商品并单独显示它们,而不是全部一起显示?
  2. 我该怎么做才能从 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 数据?

标签: google-analyticsgoogle-tag-managerdata-layers

解决方案


您必须items通过购物车中的产品元素构造您的对象,而不是获取所有spans 的组合文本值:一些示例代码可能如下所示:

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
});

推荐阅读