Дублирующие транзакции в Google Analytics является одной из самых распространенных ошибок во внедрении электронной торговли в Google Analytics.
Ошибка приводит к завышение реальных доходов с рекламных каналов, что влечет за собой ошибочные выводы об их эффективности.
Из-за чего возникает дублирование данных?
Когда код отвечающий за отправку данных о транзакции отрабатывает большего одного раза.
При повторной загрузки страницы с подробностями о заказе (thank you page). На которую пользователь может переходить несколько раз. Например, с email-a с подробностями об оформленном заказе или при обновлении страницы во время повторной загрузки браузера.Ошибка в логике ваше сайта присвоение номера транзакции (встречается намного реже). Необходимо исправлять на уровне backand-a.
Как выявить дублирующие транзакции?
Для выявления дубликатов самый простой способ — это создать пользовательский отчет с двумя полями: transactionId and transactions.
Исправление дублирующих транзакций при помощи Google Tag Manager
В нашем кейсе дублирующие заказы поступали на уровне одного устройства.
Для решение проблемы мы решили доработать решение, которые встретили в блоге lunametrics. Оно нам понравилось идеей, но оттолкнуло необходимость привлечения разработчика.
Суть метода
Мы подготовили скрипт, который активируется во время отправки данных электронной торговли, и выполняет две функции:
Сохраняет id-транзакции в cookie браузера. Таким образом, в браузере пользователя всегда хранится его последний идентификатор транзакции.
При сохранении id-транзакцию в cookie определяет является ли она уникальной. В зависимости от ответа, отправляется пользовательское событие: newTransaction или duplicateTransaction.
Логика проверки id-транзакции на уникальность происходит путем сравнения идентификатора транзакции, которую мы планируем записать в cookie, с id-транзакцией которая уже была сохранена в cookie.
Для этого необходимо создать:
transaction_id — переменная уровня данных,
Transaction Checker — custom html tag,
newTransaction — trigger — custom event.
DataLayer TransactionId
Возвращает номер транзакции о заказе.
Для её создание, перейдите в переменные и создайте новую перменную уровня datalayer:
Данная переменная будет подставлять id-транзакции в javascript-код, отвечающий за запись данной транзакции в cookie пользователя.
Transaction Checker
Создайте тег пользовательского типа. Разместите в него следующий код (обратите внимание, что он ссылается на переменную transaction_id, которая была создана на первом шаге):
В качестве триггера выполнения тега задайте условие, при котором данные об электронной торговле уже будут выведены на странице:
В нашем примере это страница thank you page.
NewTransaction trigger
В теге, отвечающем за отправку тр анзакций в Google Analytics, нужно обновить триггер срабатывания. Он должен выполняться только в случае, если тег Transaction Checker вернул ответ newTransaction.
Для этого необходимо перейти в триггеры и создать новый:
Также можно создать дополнительный триггер и в качестве значения использовать duplicateTransaction. Данный триггер в дальнейшем можно использовать для подсчета количества дублирующих транзакций, например, через события.
Вы должны помнить:
Если пользователь очистит куки, после чего повторно сработает код отправляющий транзакции — транзакция пр одублируется.
Google Analytics фильтрует дублирующие транзакции, которые приходят в рамках одной сессии. Это значит, что если по каким-то причинам ваш код отрабатывает два раза подряд, это не приведет к дублированию транзакций.