Предотвращение дублей транзакций/конверсий в Google Analytics

16 апреля, 2020

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

Повторяющиеся транзакции/конверсии означают, что в инструментах аналитики несколько раз регистрируется одно и тоже обращение. Эта проблема может возникать по нескольким причинам:

  • пользователь обновляет страницу;
  • пользователь через некоторое время возвращается на эту страницу из закладок, по электронной почте, прямому заходу и т.д., чаще всего - в новом сеансе;
  • пользователь возвращается на страницу с помощью кнопок в браузере Вперед - Назад;

Наиболее распространенная причина, по которой происходят повторяющиеся обращения, заключается в том, что событие о транзакции/конверсии отправляется в Google Analytics каждый раз при загрузке страницы с благодарностью. Есть пользователи, которые сохраняют эту страницу и возвращаются, чтобы проверить идентификатор заказа или номер заявки. А некоторые компании отправляют в электронном письме URL с подтверждением заказа.

Чтобы узнать, есть ли у вас в аналитике повторные транзакции, создайте в Google Analytics специальный отчет с двумя метриками: Параметр - Идентификатор транзакции, Показатель - Транзакции:

Отслеживание дублей транзакций/конверсий

Специальный отчет - примеры дублей транзакций

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

Если есть строчки, где вместо 1 стоит другое число (как в примере выше), то это явный признак дублей. Аналитика несовершенна, и поэтому не стоит сразу бить тревогу, искать виновных и бежать исправлять. Необходимо оценить масштаб проблемы. Сравните количество транзакций с количеством строк в таблице. Если ваш коэффициент дублирования транзакций составляет > 10-15%, тогда задумайтесь об исправлении ситуации. Если ниже, то просто понаблюдайте за изменениями во времени. Вполне вероятно, что это просто статистическая погрешность и редкие сбои в отслеживании.

При большом количестве трафика повторных обращений может быть значительная доля. А искажение данных затрудняет их анализ, особенно в e-commerce, где с увеличением количества транзакций также увеличивается и доход, и изменяются показатели, непосредственно связанные с транзакциями, например, цена за транзакцию и коэффициент транзакции. Впоследствии это приведет к неверным выводам.

Дубли встречаются не только в интернет-магазинах, но и у обычных сайтов, чаще всего - на все тех же страницах благодарности, на которые перенаправляются пользователи после успешной отправки формы. Существует несколько способов решения проблемы, не связанных с работой маркетолога. Понадобится разработчик, который сможет на стороне сервера осуществить проверку информации о заказе пользователя после его оформления. Когда человек оставляет заказ на сайте, данные о транзакции сохраняются в базе данных. Далее идет проверка - если в базе ID транзакции нет, данные отправляются в Google Analytics - если ID транзакции уже существует, то ничего не отправляется. Еще можно реализовать так - после успешного оформления заказа перенаправлять пользователя на другую страницу. А при каждой его попытке вернуться на страницу с благодарностью - снова делать редирект. Но этот способ менее предпочтительный, чем описанный выше.

Если говорить о работе интернет-маркетолога, то он тоже может отследить дубли транзакций/конверсий, чтобы запретить повторную передачу данных в Google Analytics. Способов на момент публикации этой статьи существует большое количество. Есть реализация для расширенной электронной торговли от Симо Ахавы (Simo Ahava) с помощью customTask, универсальное решение от Дэвида Вальехо (David Vallejo), один из первых способов отслеживания от Lunametrics и дополненный от команды Renta, в некоторых случаях можно использовать Measurement Protocol.

Я хочу разобрать в этой статье отслеживание как повторяющихся транзакций для интернет-магазина, так и дубли конверсий (для посадочной страницы) с помощью 3 переменных, 2 триггеров и 1 тега, используя cookie и GTM. Способ подойдет для разных типов сайтов.

Дубли транзакций для интернет-магазинов

Пример: на сайте установлена расширенная электронная торговля, которая настроена через Google Tag Manager. Для отслеживания действий используется уровень данных (dataLayer), на странице с успешно оформленным заказом отправляется действие purchase согласно документации Google:

Отслеживание дублей транзакций/конверсий

Заказ на сайте

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

Но стоит дождаться нового сеанса, скопировать полный URL-адрес https://site.ru/order/order_step2/?ORDER_ID=53982 в адресную строку браузера и нажать Enter, как мы снова отправим событие об успешной транзакции с тем же ID. А в отчетах Google Analytics увидим дубль транзакции:

Отслеживание дублей транзакций/конверсий

Дубль транзакции

Что же делать?

Алгоритм настройки в Google Tag Manager следующий:

  1. создаем переменную, которая будет извлекать со страницы благодарности ID транзакции;
  2. создаем переменную, которая будет извлекать значение из куки;
  3. создаем переменную, которая сопоставляет значения двух переменных и выдает результат true или false;
  4. создаем тег, который будет устанавливать значение для cookie при удовлетворении условия;
  5. используем существующий триггер purchase, настроенный для отслеживания успешной отправки заказа;
  6. создаем триггер-блокировки, который добавим в исключения;

Рассмотрим настройку более подробно.

1. Создание переменной с ID транзакции (Переменная уровня данных)

Поскольку dataLayer у нас уже сформирован, то остается только извлечь значение ID транзакции с помощью пользовательской переменной типа Переменная уровня данных. Это проще всего сделать с помощью расширения для браузера Datalayer Checker. Оно отобразит конечный массив с данными на странице покупки. ID транзакции хранится в переменной id, а вся переменная (формат flat) выглядит как ecommerce.purchase.actionField.id.

Отслеживание дублей транзакций/конверсий

Извлечение данных из переменной ID транзакции с помощью Datalayer Checker

В GTM:

Отслеживание дублей транзакций/конверсий

Извлечение ID транзакции

2. Создание переменной (1st Party Cookie)

Переменная типа Основной файл cookie. Она будет читать значение из куки. Введите произвольное имя, например, orderCookie:

Отслеживание дублей транзакций/конверсий

Переменная orderCookie

3. Создание переменной (Собственный код JavaScript)

Переменная типа Собственный код JavaScript. Код ее выглядит так:

В Google Tag Manager:

Отслеживание дублей транзакций/конверсий

Проверка

Переменная возвращает false, если значение транзакции в куки совпадает с текущим ID транзакции, и возвращает true, если не совпадает.

4. Создание тега (Пользовательский HTML)

Приведенный ниже код с помощью функции setCookie устанавливает cookie с именем orderCookie и значением переменной Transaction ID, при условии, что переменная transactionCheck, настроенная шагом ранее, вернула значение true.

В функции есть три параметра:

  • name - имя для куки;
  • value - значение для куки;
  • expires - срок жизни куки;

Подробнее о куках можете прочитать в статье Cookie и Google Tag Manager.

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

Отслеживание дублей транзакций/конверсий

Пользовательский тег HTML

5. Существующий триггер успешной покупки

В теге в качестве условия активации используем существующий триггер purchase, настроенный в электронной торговле для отслеживания успешной отправки заказа. В моем примере - это триггер типа Пользовательское событие.

6. Создание триггера блокировки

Необходимо скопировать триггер успешной покупки и добавить к нему условие, которое блокировало бы срабатывание тега транзакции дважды. Таким условием будет transactionCheck - содержит - false:

Отслеживание дублей транзакций/конверсий

Триггер блокировки

Тег транзакции не будет запускаться, если cookie уже содержит идентификатор текущей транзакции.

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

Отслеживание дублей транзакций/конверсий

Добавление триггера блокировки к тегу транзакции

Сохраняем все изменения. В режиме отладки Google Tag Manager мы можем проверить корректность настройки и посмотреть, будут ли передаваться дубль транзакции в аналитику.

Отслеживание дублей транзакций/конверсий

Установка куки orderCookie со значением ID транзакции

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

Дубли конверсий для сайтов

Пример: мой тестовый сайт graphanalytics.ru. На нем есть форма с бесплатным аудитом и заказом услуг по настройке веб-аналитики, контекстной рекламы и индивидуальных консультаций. После заполнения и ее отправки пользователя перенаправляет на страницу "Спасибо". У этой страницы есть конечный URL http://graphanalytics.ru/thank-you.html

Если бы мы хотели настроить отслеживание цели в Google Analytics, то просто бы создали цель на посещение этой страницы. Однако при попадании того же пользователя, но в другом сеансе, статистика будет искажаться. Достижение цели будет (+1), а новой заявки нет, поскольку пользователь не заполнял форму повторно. В результате, когда мы будем считать расход на рекламу и количество достигнутых целей, то получим некорректные данные как по стоимости конверсии, так и по конверсии сайта.

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

Я не буду снова описывать процесс настройки отслеживания дублей, поскольку он аналогичен. Отмечу лишь то, что я добавил в качестве отдельного тега типа Пользовательский HTML строчку кода с dataLayer.push, которая активирует событиe myLead каждый раз на странице /thank-you.html.

Отслеживание дублей транзакций/конверсий

Активация события myLead на странице /thank-you

Логика простая - если человек попал на эту страницу, значит он оставил заявку на сайте. А настройка в GTM через dataLayer.push упрощает отслеживание дублей и становится схожа с настройкой отслеживания транзакций из предыдущего примера.

Поскольку на моей странице нет никакого идентификатора заявки или номера обращения (как в случае с ID транзакции), я могу задать произвольное значение с самого начала. Например, использовать константу со значением success.

Отслеживание дублей транзакций/конверсий

Константа

Если у вас на странице благодарности присутствует идентификатор обращения, то извлеките это значение в пользовательскую переменную типа Элемент DOM.

Остальное все тоже самое. Создается переменная типа Основной файл cookie, затем переменная типа Собственный код JavaScript, после тег типа Пользовательский HTML, затем триггер (в моем примере - Пользовательское событие myLead) и триггер блокировки, который добавляется в тег Universal Analytics, отвечающий за отправку данных в Google Analytics.

Для наглядности продемонстрирую коротким видео:

Отслеживание дублей транзакций/конверсий

Демонстрация работы

Все! Теперь событие будет передаваться в Google Analytics только один раз в течение установленного вами времени срока жизни куки, или пока сам пользователь не почистит данные. На него можно настроить цель-событие (конверсию), которая будет точнее отслеживать количество достигнутых целей. В завершении хотелось бы отметить, что приведенный способ отслеживания поможет снизить количество дублей транзакций и конверсий в Google Analytics. Но избавится от них на 100% все же не удастся.

Получайте бесплатные уроки и фишки

По контекстной, таргетированной рекламе и аналитике