Подтвердить что ты не робот

Google analytics посылает функцию обратного вызова события

Я пытаюсь отправить событие go google analytics после регистрации пользователя и до, он перенаправил. Я использую Диспетчер тегов Google и univerasl js.

Во-первых, я пытался использовать объект dataLayer, как описано здесь: developers.google

То, что моя функция выглядела так:

//Registering new user via ajax
$.ajax('/register/', {
    success: function() {

        //Pushing event to dataLayer
        dataLayer.push({
                'Category': 'Registration Process',
                'event': 'Registration Submit Btn'
            });

        //Logging in new user and redirecting the page with a timeout
        setTimeout(function(){
            loginAction();
        }, 500)
    }
})

Проблема в том, что я получал около 25% всех событий, все остальные потеряны. Я не знаю, когда и когда событие действительно отправлено в Google после добавления объекта в dataLayer, и я думаю, что 75% событий вообще не отправлялись.

Теперь я пытаюсь реализовать другой подход:

//Registering new user via ajax
$.ajax('/register/', {
    success: function() {

        //Sending event through ga('send')
        parent.ga('send', 'event', 'Registration Process', 'Registration Submit Btn');

        //Logging in new user and redirecting the page with a timeout
        setTimeout(function(){
            loginAction();
        }, 500)
    }
})

Но ga ('send') снова не имеет функции обратного вызова!

Как я могу убедиться, что событие действительно отправлено в Google, используя dataLayer или ga ('send')?

4b9b3361

Ответ 1

Наконец-то понял. Это довольно сложно и не описано в документах. В моем случае я использую Диспетчер тегов Google, поэтому некоторые способы обхода, которые я должен был сделать, чтобы успешно запустить событие и получить обратный вызов.

Во-первых, мы должны получить ClientId, который требуется при любом событии, отправленном на серверы Google. Фактически он хранится в файлах cookie, но Google не рекомендует брать их прямо оттуда.

Вот как Google рекомендует его получить, но этот не работает, если вы используете Диспетчер тегов Google.

 ga(function(tracker) {
       var clientId = tracker.get('clientId');
 });

Вместо этого вы должны получить ClientId из метода getAll.

 var clientId = ga.getAll()[0].get('clientId');

После этого вам нужно создать новый трекер

    ga('create', 'UA-XXX-YYY', {
        'clientId': clientId
    });

И после этого мы можем отправить событие:

 ga('send', 'event', {
   'eventCategory': 'YOUR Category Name', //required
   'eventAction': 'YOUR Action name', //required
   'eventLabel': 'YOUR Label',
   'eventValue': 1,
   'hitCallback': function() {
       console.log('Sent!!');
      //callback function
    },
   'hitCallbackFail' : function () {
      console.log("Unable to send Google Analytics data");
      //callback function
   }
});

Ответ 2

Из документа Google Analytics https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#hitCallback Новости

// Alerts the user when a hit is sent.
ga('send', 'pageview', {
  'hitCallback': function() {
    alert('hit sent');
  }
});

Вы можете отредактировать функцию hitCallback для вашей.

ИЛИ

// Use a timeout to ensure the execution of critical application code.
ga('send', 'pageview', {'hitCallback': criticalCode});
setTimeout(criticalCode, 2000);

// Only run the critical code once.
var alreadyCalled = false;
function criticalCode() {
  if (alreadyCalled) return;
  alreadyCalled = true;

  // Run critical code here...
}

Здесь вы можете определить свою функцию (criticalCode) в приведенном выше примере, который может обеспечить отправку данных в Google Analytics, а затем работать с вашим кодом.

Для многозначности api аналитического, fyr: https://developers.google.com/analytics/devguides/collection/analyticsjs/command-queue-reference

Ответ 3

Из документов: https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#hitCallback

ga('send', 'pageview', {
  'page': '/my-new-page',
  'hitCallback': function() {
  alert('analytics.js done sending data');
}
});

В этом примере объект имени поля настраивает как параметр страницы, так и установку hitCallback. Как только трекер завершит отправку данных, пользователю будет показано окно с предупреждением.

Вы можете использовать hitCallback для событий, просмотров страниц и т.д.