Сбой отслеживания событий Google Analytics для некоторых отправлений - PullRequest
0 голосов
/ 26 сентября 2019

Я использую Google Tag Manager на нашем веб-сайте, и через него я отправляю события в Google Analytics после отправки формы.Следующий код просто печатается вместе с подтверждением отправки.

$(document).ready(function() {
    sendGA('form_submit_completed', '{form_id}', '{form_sender}');
});

А функция sendGA определяется следующим образом.

function sendGA(anec, anea, anel) {

   if(typeof dataLayer === 'undefined') {
    console.log('Google analytics undefined, aren\'t you logged in?');
    return;
   }

   dataLayer.push({
    'event': 'ga_custom_event',
    'ga_anec': anec,
    'ga_anea': anea,
    'ga_anel': anel
   });

   console.log('ga_sent: {anec: ' + anec + ', anea: ' + anea + ', anel: ' + anel + '}');
}

При сравнении данных из Google Analytics сМатериалы, записанные в нашей базе данных, я вижу, что некоторые материалы просто не записываются в Google Analytics.Я не смог воспроизвести это ни в одном браузере.

Кто-нибудь знает, что может вызвать такое поведение?Я знаю, что все операции являются асинхронными, поэтому иногда запрос может просто не пройти, если пользователь сразу покинет страницу.Но на прошлой неделе это произошло с ~ 10% всех представлений, что довольно много, чтобы быть вызвано этим.

1 Ответ

0 голосов
/ 28 сентября 2019

Это может быть какое-то состояние гонки.Если GTM был загружен после запуска кода DOM ready, ваш код не будет пытаться отслеживать (согласно вашей проверке typeof dataLayer === 'undefined').

На практике в этом случае не нужно беспокоиться о времени, так какdataLayer - это очередь сообщений.Даже если он еще не существует (т. Е. GTM не загружен), вы все равно можете поместить на него что-нибудь, и ваши теги сработают, когда GTM догонит.

Попробуйте изменить следующее:

function sendGA(anec, anea, anel) {

   window.dataLayer = window.dataLayer || [];
   window.dataLayer.push({
    'event': 'ga_custom_event',
    'ga_anec': anec,
    'ga_anea': anea,
    'ga_anel': anel
   });

   console.log('ga_sent: {anec: ' + anec + ', anea: ' + anea + ', anel: ' + anel + '}');
}

Если вы все еще видите пропущенные данные после этого изменения, возможно ли, что есть также пропущенные переменные?Если у вас нет значений для категории события или действия события (в вашем случае это переменная действия), попадание события будет недействительным и будет игнорироваться во время сбора в Google Analytics.

Примечание: если переменная {form_sender} является адресом электронной почты пользователя или другой личной информацией, вам не следует собирать ее, так как это противоречит условиям предоставления услуг GA по сбору личной информации (PII).

https://support.google.com/analytics/answer/2795983?hl=en

...