Есть ли безопасный способ использовать eventCallback с GTM DataLayer?

Когда кто-то нажимает кнопку «купить» на моем веб-сайте, я пытаюсь отследить это событие с помощью Диспетчера тегов Google, используя dataLayer и dataLayer.push.

Вот как это выглядит:

dataLayer.push({
  'event': 'service',
  'category': 'purchase',
  'action': 'product selected',
  'label': product
});

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

Я знаю, что есть опция eventCallback, которую вы можете использовать с dataLayer, которая выглядит так

dataLayer.push({
  'event': 'service',
  'category': 'purchase',
  'action': 'product selected',
  'label': product,
  'eventCallback': function () {
    //redirect to the shopping cart
  }
});

});

Но проблема с этой опцией заключается в том, что она вызывает зависимость, и были случаи, когда пользователь не перенаправлялся в корзину из-за какого-то сбоя в работе Google Tag Manger (это огромная проблема для нас).

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


person Eugene Krall    schedule 18.05.2016    source источник
comment
Вы можете использовать поле transport, которое в поддерживаемых браузерах отправляет обращение до того, как страница выгружается, developers.google.com/analytics/devguides/collection/.   -  person nyuen    schedule 18.05.2016


Ответы (1)


Есть свойство eventTimeout, которое вы можете использовать, чтобы игнорировать GTM и перенаправлять пользователя в любом случае. Однако также возможно, что браузер полностью блокирует GTM, поэтому вам также необходимо проверить, правильно ли загружен скрипт в вашем приложении, и если это не так, просто вызовите этот обратный вызов вместо нажатия на уровень данных.

person Thiago Camargo    schedule 25.08.2020