用于发送GA购买事件的自定义脚本在GTM上不再起作用

时间:2018-11-23 13:14:15

标签: google-analytics google-tag-manager

我使用了这个自定义脚本来发送GA购买事件,但工作正常,但是后来我切换到了Google跟踪代码管理器,该脚本不再起作用。

逻辑是,当某人购买服务时,他们会被定向到“谢谢”页面,在该页面中,交易数据从PHP费用中填充到URL中。

然后,该脚本在该页面上触发并读取URL以分配交易信息,并发送至分析:

var pkg,
      value,
      ID = window.location.href.split("=")[1];

if (window.location.href.indexOf("starter") > -1) {
  value = 150;
  pkg = "Starter";
} else if (window.location.href.indexOf("professional") > -1) {
  value = 250;
  pkg = "Professional";
} else if (window.location.href.indexOf("entrepreneur") > -1) {
  value = 350;
  pkg = "Entrepreneur";
} else {
  value = 0;
  pkg = "error";
}

if (value > 0) {
    // Google Analytics Ecommerce Tracking
    gtag('event', 'purchase', {
      "transaction_id": ID,
      "value": value,
      "currency": "USD",
      "items": [
        {
          "id": pkg,
          "name": pkg,
          "quantity": 1,
          "price": value
        }
      ]
    });
}

使用GTM,我将此脚本作为“自定义html”标记。

如果我进行测试收费并填充该URL /谢谢页面,则会收到控制台错误,提示gtag()不是函数。

所以我尝试了ga(),它不会产生错误,但也不会发送事件。

然后我阅读了有关dataLayer的内容,因此我尝试将其包装而不是ga()/ gtag():

dataLayer.push({
    'event', 'purchase', {
    "transaction_id": ID,
    "value": value,
    "currency": "USD",
    "items": [
      {
        "id": pkg,
        "name": pkg,
        "quantity": 1,
        "price": value
      }
    ]
  }
});

这给了我一个JavaScript错误。似乎我可能还需要在页面上的某个地方放置一个空的dataLayer变量,但不确定其工作原理。

有什么想法吗?或者,我应该改为通过PHP发送此事件吗? (不确定如何将PHP与GA一起使用)。

2 个答案:

答案 0 :(得分:0)

当您将datalayer.push的代码添加到GTM代码之后(因为GTM初始化了dataLayer变量),或者如果您在推送之前(以及GTM代码之前,如果初始化了)声明了dataLayer变量,则datalayer.push的代码将起作用GTM代码GTM之后的dataLayer无法正常运行)。

不知疲倦的Simo Ahava当然有blog post on datalayer initialization,应该回答您所有的问题。

答案 1 :(得分:0)

如果将来有人发现它,这就是可行的方法。

代码:

<script>
var value, ID, pkg;

// populate variables

// push vars to the datalayer
if (value > 0) {
    dataLayer = [];
    dataLayer.push({
       'transactionId': ID,
       'transactionTotal': value,
       'transactionProducts': [{
           'sku': pkg,
           'name': pkg,
           'price': value,
           'quantity': 1}],
       'event' : 'purchase'
   });
}

// GTM script here
</script>

GOOGLE标记管理器:

然后我在GTM中创建了一个标签。

标记类型: Google Analytics-通用Analytics(分析)

跟踪类型:交易

触发器:在“谢谢”页面(脚本位于此处)

现在,交易正在完美追踪:D