Пользовательский скрипт для отправки события покупки GA больше не работает с GTM - PullRequest
0 голосов
/ 23 ноября 2018

У меня был этот скрипт, отправляющий событие покупки GA, работающий нормально, но затем я переключился на Google Tag Manager, и скрипт больше не работает.

Логика в том, что когда кто-то покупает услугу, онВы перенаправлены на страницу с благодарностью, где данные транзакции заполняются в URL из платы PHP.

Затем этот скрипт запускается на этой странице и читает 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 у меня есть этот сценарий в качестве тега "custom 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 голосов
/ 30 ноября 2018

Если кто-нибудь найдет это в будущем, вот что сработало.

КОД:

<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 TAG MANAGER:

Затем я создал тег в GTM.

Тип тега: Google Analytics - Universal Analytics

Тип трека: Транзакция

Триггер: На странице благодарности (где скрипт)

А теперь транзакции отслеживаются отлично: D

0 голосов
/ 23 ноября 2018

Ваш код для datalayer.push будет работать, если вы включите его после кода GTM (потому что GTM инициализирует переменную dataLayer), или если вы объявите переменную dataLayer до своего нажатия (и перед кодом GTM, если вы инициализируетеслой данных после кода GTM GTM не будет работать должным образом).

Неутомимая Симо Ахава имеет, конечно, сообщение в блоге об инициализации слоя данных , которое должно ответить на все ваши вопросы.

...