Запрет отправки событий расширенной электронной торговли GA в последующих просмотрах страниц в одностраничном приложении - PullRequest
0 голосов
/ 28 июня 2019

У меня есть одностраничное приложение (SPA), которое я оснастил Google Analytics (GA), которое подается через Google Tag Manager (GTM). Я отслеживаю начальные просмотры страниц, используя встроенный триггер «Все страницы», а последующие просмотры страниц - встроенный триггер «Изменение истории». Похоже, что оба они работают нормально, проблема возникает, когда мы представляем Enhanced Ecommerce Events. Мы отправляем расширенные события электронной торговли как событие через DataLayer в нашем коде и выбираем триггером пользовательского события внутри GTM. Полезная нагрузка для них выглядит так:

{
  event: 'eCommEvent',
  ecommerce: {
    currencyCode: 'GBP',
    impressions: [
      {id: 'blah', name: 'yadda', etc }, ... etc ...
    ]
  }
}

Поскольку они сохраняются в DataLayer, когда пользователь переходит на другую страницу, также отправляются данные электронной торговли из предыдущего события электронной торговли. Я решил это с помощью последовательности тегов внутри GTM, добавив тег очистки «Clear Ecomm Event», который запускается один раз за событие после запуска события электронной торговли. Код для этого тега выглядит следующим образом:

<script>
  (function(window) {
    var gtm = window.google_tag_manager[{{Container ID}}];
    try {
      gtm.dataLayer.set('ecommerce', undefined);
      // Notifies GTM our HTML Tag has finished
      gtm.onHtmlSuccess({{HTML ID}});
    } catch(e) {
      if({{Debug Mode}}) throw e;
      // Notifies GTM our HTML Tag has failed
      return gtm.onHtmlFailure({{HTML ID}});
    }
  })(window);
</script>

Когда я проверяю слой данных с помощью предварительного просмотра диспетчера тегов, я вижу оба события Ecommerce Event, за которыми следует событие очистки, и я вижу уровень данных с электронной коммерцией, для которой установлено значение undefined. Однако при последующих просмотрах страницы информация о впечатлениях по-прежнему отображается и отправляется в переменных ec: impression через расширение GA Debugger в Chrome при каждом последующем обращении. Существует ли ручной способ обеспечить полную очистку этих переменных?

...