GTM 如何跟踪结帐步骤,我的情况很特别

GTM how to track checkout step, my case it pretty special

以前,我知道我可以通过 GA 跟踪电子商务,就像这样

ga("ec:setAction","checkout", {"step": 1,"option": "don't understand this"});

..

现在我必须从 GA 转移到 GTM,所以我阅读了 Google's DevGuide,并尝试了这个

function onCheckout() {
  dataLayer.push({
    "event": "checkout",
    "ecommerce": {
      "checkout": {
        "actionField": {"step": 1, "option": "don't understand this"},
        "products": [{
          "name": "Some pXXn BD",
          "id": "x100-2",
          "price": "29.0",
          "brand": "SOD",
          "quantity": 1
       }]
     }
   },
   "eventCallback": function() {
      document.location = "some_next_page.html";
   }
  });
}

但是,我无法使用 eventCallback 函数,因为我站点中的 Next 按钮 link 只是一个简单的 javascript 代码,例如

void(0);

真正的页面流是由一些我无法修改的外部.js 文件控制的。所以我尝试了另一种方法,但无法正常工作。我在结帐跟踪上仍然一无所获...

<script>
dataLayer.push
({
  'event': 'checkout',
  'ecommerce': {'checkout': {'actionField': {'step': 1}}}
});
</script>

欢迎大家提建议~

只是不要使用 eventCallback。如果您的逻辑不需要它,则没有必要使用它。

检查所有必需的变量: https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce

eventCallback 功能基本上可以让您确保在页面导航发生之前所有必要的标记都已完成触发。这是保证代码触发的一种方式。

在您的情况下,您可以简单地从数据层中省略 eventCallback。当然,这意味着页面导航发生在 之前 该标记有机会触发的可能性很小,但这种可能性非常小,因为标记通常会在几毫秒内触发。将上述内容推送到 dataLayer 后,您当然需要在 GTM 界面中配置一个标签来捕获此数据并将其发送到 GA。

因此您将执行此代码:

<script>
  dataLayer.push({
    'event': 'checkout',
    'ecommerce': {
      'checkout': {
        'actionField': {'step': 1},
        'products': [{
          'name': 'Triblend Android T-Shirt',
          'id': '12345',
          'price': '15.25',
          'brand': 'Google',
          'category': 'Apparel',
          'variant': 'Gray',
          'quantity': 1
       }]
     }
   }
  });
</script>

然后您将在 GTM 中设置一个标签,如下所示:

触发如下:

P.S。 option 属性用于捕获可由用户针对特定结帐步骤 select 编辑的设置。例如,在付款结账步骤中,用户可能 select 使用现金或信用卡购物车。结帐选项旨在捕获此值。