通过标签管理器跟踪谷歌分析电子商务中的折扣值

ell*_*ott 5 google-analytics google-tag-manager

我们正在按照以下文档使用 GTM 实施 GA 转换跟踪,但我没有找到有关如何在订单级别处理折扣(优惠券)的任何信息。 https://support.google.com/tagmanager/answer/6106097?hl=en https://developers.google.com/analytics/devguides/collection/analyticsjs/ecommerce

我可以发送收入、运费和税金,但对于包含折扣的订单,这些金额的总和不正确。如果下单如下:

T-Shirt:     $5
Socks:       $5
subtotal:   $10
tax:         $2
shipping:    $3
discount:   -$5
order total: $10
Run Code Online (Sandbox Code Playgroud)

我的数据层应该像这样吗?

<script>
dataLayer = [{
    'transactionId': '1234',
    'transactionAffiliation': 'Acme Clothing',
    'transactionTotal': 10,
    'transactionTax': 2,
    'transactionShipping': 3,
    'transactionProducts': [{
        'sku': 'DD44',
        'name': 'T-Shirt',
        'category': 'Apparel',
        'price': 5,
        'quantity': 1
    },{
        'sku': 'AA1243544',
        'name': 'Socks',
        'category': 'Apparel',
        'price': 5,
        'quantity': 1
    }]
}];
</script>
Run Code Online (Sandbox Code Playgroud)

这会导致 GA 中的任何不准确或不一致吗?

Tea*_*ach 6

我和一个同事现在正在解决同样的问题。

在我开始之前,尽管您永远不应该像那样声明您的 dataLayer。可悲的是,这似乎是谷歌自己在所有代码示例中的做法,但它非常危险,因为它会用一个只包含那些键值对的新数据层覆盖您现有的数据层。而是检查 dataLayer 是否存在,如果不存在则创建它,然后推送到它。

window.dataLayer = window.dataLayer || [];
dataLayer.push({
  'key' : 'value'
});
Run Code Online (Sandbox Code Playgroud)

此外,假设您已切换到 Universal Analytics,请考虑切换增强型电子商务跟踪。它同时是一种更强大、更清洁的电子商务跟踪实现。

到目前为止,我们已经提出了几个看似可行的方法。您可以像上面一样忽略所有折扣,并在应用折扣后手动报告总收入。如果您切换到增强型电子商务,我要添加的一件事是优惠券代码,用于确认产品已应用折扣。

<script>
  window.dataLayer = window.dataLayer || [];
  dataLayer.push({
    'ecommerce': {
      'purchase': {
        'actionField': {
          'id': '1234',
          'affiliation': 'Acme Clothing',
          'revenue': '10.00',
          'tax':'2.00',
          'shipping': '3.00',
          'coupon': 'SUMMER_SALE' //Transaction-scope coupon. This would
//be where you'd include discounts like '$10 off purchases of $50 or more'
        },
        'products': [{
          'name': 'T-Shirt',
          'id': 'DD44',
          'price': '5.00',
          'category': 'Apparel',
          'quantity': 1
         },
         {
          'name': 'Socks',
          'id': 'AA1243544',
          'price': '5.00',
          'category': 'Apparel',
          'quantity': 1,
          'coupon': 'FREE_SOCKS' //Product-scope coupon. This would be for 
//discounts like 'free socks with purchase of a t-shirt'
         }]
      }
    }
  });
</script>
Run Code Online (Sandbox Code Playgroud)

或者,您可以将折扣作为负值 SKU 输入,并将它们作为交易中自己的行项目进行跟踪。

<script>
  window.dataLayer = window.dataLayer || [];
  dataLayer.push({
    'ecommerce': {
      'purchase': {
        'actionField': {
          'id': '1234',
          'affiliation': 'Acme Clothing',
          'revenue': '10.00',
          'tax':'2.00',
          'shipping': '3.00'
        },
        'products': [{
          'name': 'T-Shirt',
          'id': 'DD44',
          'price': '5.00',
          'category': 'Apparel',
          'quantity': 1
         },
         {
          'name': 'Socks',
          'id': 'AA1243544',
          'price': '5.00',
          'category': 'Apparel',
          'quantity': 1,
         },
         {
          'name': 'Socks-Discount',
          'id': 'free-socks',
          'price': '-5.00',
          'category': 'Apparel',
          'quantity': 1,
         }]
      }
    }
  });
</script>
Run Code Online (Sandbox Code Playgroud)

最终,我的建议是反映您如何处理购物车中的折扣的逻辑。如果折扣是他们自己的行项目,在您的购物车中有自己的 SKU,则以相同的方式在 GA 中报告它们。如果优惠券代码更有意义,那就这样做。如果您愿意,您甚至可以将两者结合起来。


Jef*_*mes 0

您在 DL 中的交易总额应该被推送到 addTrans 调用。因此,只要确保您发送给它的值就是您想要发送的值即可。GA 并不关心你如何定义收入。