Дублирующие транзакции в 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.
Если транзакция уникальна, то в google tag manager-e должен активироваться тег, отвечающий за отправку данных о транзакции в Google Analytics.
Для этого необходимо создать:
- transaction_id — переменная уровня данных,
- Transaction Checker — custom html tag,
- newTransaction — trigger — custom event.
DataLayer TransactionId
Возвращает номер транзакции о заказе.
Для её создание, перейдите в переменные и создайте новую перменную уровня datalayer:
В качетве значения укажите: ecommerce.purchase.actionField.id.
Данная переменная будет подставлять id-транзакции в javascript-код, отвечающий за запись данной транзакции в cookie пользователя.
Transaction Checker
Создайте тег пользовательского типа. Разместите в него следующий код (обратите внимание, что он ссылается на переменную transaction_id, которая была создана на первом шаге):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<script type="text/javascript"> function checkCookies() { var cookievalue = ""; var cname = "_transactionId="; var ca = document.cookie.split(';'); for(var i=0; i<ca.length; i++){ var ck = ca[i].trim().toString(); if (ck.indexOf(cname)==0) { cookievalue = ck.substring(cname.length).toString(); break; }; }; if ("{{transaction_id}}" != "") { if (!cookievalue || cookievalue != "{{transaction_id}}") { var d = new Date(); d.setTime(d.getTime() + (365 * 2 * 24 * 60 * 60 * 1000)); var expires = "expires=" + d.toGMTString(); document.cookie = cname + "{{transaction_id}}; " + expires; dataLayer.push({ 'transactionType': 'new' }); dataLayer.push({'event':'newTransaction'}); } else { dataLayer.push({ 'transactionType': 'duplicate' }); dataLayer.push({'event':'duplicateTransaction'}); } dataLayer.push({ 'event': 'transaction' }); } }; checkCookies(); </script> |
В качестве триггера выполнения тега задайте условие, при котором данные об электронной торговле уже будут выведены на странице:
То есть datalayer, содержащий данные о заказе, в том числе transaction_id, должен быть инициализирован до тега Transaction Checker.
В нашем примере это страница thank you page.
NewTransaction trigger
В теге, отвечающем за отправку транзакций в Google Analytics, нужно обновить триггер срабатывания. Он должен выполняться только в случае, если тег Transaction Checker вернул ответ newTransaction.
Таким образом, в Google Analytics будут переданы только уникальные идентификаторы транзакции.
Для этого необходимо перейти в триггеры и создать новый:
В качестве типа триггера задайте Custom Event, в значении которого укажите newTransaction.
Также можно создать дополнительный триггер и в качестве значения использовать duplicateTransaction. Данный триггер в дальнейшем можно использовать для подсчета количества дублирующих транзакций, например, через события.
Вы должны помнить:
-
- Если пользователь очистит куки, после чего повторно сработает код отправляющий транзакции — транзакция продублируется.
- Google Analytics фильтрует дублирующие транзакции, которые приходят в рамках одной сессии. Это значит, что если по каким-то причинам ваш код отрабатывает два раза подряд, это не приведет к дублированию транзакций.
Спасибо! Очень полезная статья. Все получилось!Наконец-то можно видеть реальную картину в аналитиксе 😉
Здорово! Рады, что помогли 🙂
Here is where the magic happens. This Custom HTML will take care of all of the work, checking for cookies, setting cookies, and checking the timestamp. The result is then pushed to the data layer with a custom event.