Корректировка статистики реферального трафика в Google Analytics

Из-за технических особенностей Google Universal Analytics (далее - UA) и размещения счетчиков статистики в Google Tag Manager (далее - GTM) может некорректно учитываться источник, через который пользователь пришел на сайт, построенный на технологии SPA посредством AJAX.

Статистика искажается из-за ошибочного определения источника перехода пользователя. Это создает угрозу неправильной интерпретации полученных данных, увеличивается вероятность ошибки при подготовке стратегии продвижения сайта.

Предыстория

В начале июля мы обратили внимание на канал yabs.yandex.ru, который приносил конверсии на сайт клиента. Также заметили, что этот канал по очереди с yandex / cpc фигурирует в отчете о многоканальных последовательностях. Мы решили разобраться, откуда появился yabs.yandex.ru и на какие данные мог повлиять.

Yabs.yandex.ru — технический поддомен Яндекса для рекламных систем, который используется для сбора поведенческих показателей пользователя, чтобы улучшить алгоритмы индивидуализации рекламы. Его можно заметить, если после клика по рекламной ссылке посмотреть на адресную строку — сначала она будет иметь такой вид:
https://yabs.yandex.ru/count/WqCejI_zO4u3pHa0r2mrr1MPeCdau0K0JWGGW0Wn9MSMOG00000u1
09mxF2da8iMW06ajjEpiDQ1xDK1Y06FkMoG0VxSivx3YlgE1w01bhISYCM0W802g06Mj9o8HRW1lk71n
n_00LpO0UYhZo3W0PoduXte0Ue2c0A6mwy3e0Bqko_00e-
vRDW20l02bgtigm_u0l3gyU2XnhZLvG6O0zdJ9iU60_W4g9SmY0Mebp2G1TplDQ05nzaEg0Nxdmom1
VkV3BW5azaD3-WtntFGd5u08sA8G_ZHcK2m1u20c3ou1xG6q0SEyGU0Tp8pV-
_v88081D08X8AGWSJwtHU02W6O2fBTAiaA-eOd_%E2%80%A6%E2%80%A6
После редиректа ссылка примет стандартный вид адреса страницы с UTM-меткой:
domain.ru/kategoriya/dlya-muzhchin-odezhda-bryuki/?
yclid=4654989507752405482&typ=SEM&anbieter=Yandex_DSA&matchkey=1776783&aktion
=WOM_DSA%20&version=c:52986135
Мы предполагали, что причина кроется в битых UTM-метках, поэтому решили проверить метки работающих в Яндексе кампаний. Ошибок не нашли, подтвердив тем самым наши догадки о масштабе проблемы. Стало понятно, что проблема не в Яндексе или метках рекламных кампаний, а в сайте.

В процессе изучения проблемы мы находили статьи об аналогичных ситуациях с многоканальными последовательностями на одностраничных сайтах. Так, yabs.yandex.ru оказался отличным показателем того, что на сайте присутствуют проблемы. По статистике канала можно отслеживать изменения после внедрения корректировок.

Остальные каналы не позволяют увидеть эту информацию — у других рекламных систем или органических каналов нет доменов для редиректа, поэтому изменения становятся неочевидными.

Технические причины

Для корректной работы UA необходима полная перезагрузка страницы, которая не происходит на SPA сайтах и сайтах, частично реализованных с помощью AJAX. Из-за асинхронности UA не получает данных о параметрах пользователя при его переходе на другую страницу.

В большинстве случаев первый переход на сайт фиксируется как yandex / cpc, но в последующих источник уже yabs.yandex.ru, после чего он снова меняется на yandex / cpc или yandex / referral:
Это связано с тем, что при переходе по рекламной ссылке GA учитывает параметры UTM как более приоритетные, а при переходе на следующую страницу по AJAX значение UTM теряется. Сессия обрывается и GA начинает учитывать referrer страницы, в котором отсутствуют данные о рекламном канале, но существует информация о том, откуда пришел пользователь.

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

В нашем случае проблема была обнаружена на страницах фильтров в каталоге, загружающихся через AJAX.

Зачем исправляли

  1. Нельзя получить корректные данные об эффективности канала из-за того, что часть трафика и всех сопутствующих показателей уходит в yabs.yandex.ru. Картина о yandex / cpc становится неполной и неактуальной.

  2. Помимо платного трафика из Яндекса ошибочные данные будет отображать другой канал — часть платного трафика из Google превратится в органический, а трафик из таргета в direct / none.
В результате мы не можем полноценно оценить эффективность продвижения сайта — SEO-специалисты и специалисты по контекстной рекламе не видят реальную картину. А также не получится сформировать точную стратегию продвижения из-за некорректных данных по каналам — финансовые показатели не будут совпадать с реальностью, из-за чего конверсионная кампания может быть отключена.

Решение проблемы

Нужно сохранить для трекера URL первой страницы перехода, который содержит UTM параметры или yclid, gclid. Для этого в GTM добавляем DataLayer — переменную уровня данных (фактически контейнер с другими переменными). В нашем случае использовался следующий код:
<script>
if(!{{originalLocation}}) {
	window.dataLayer = window.dataLayer || [];
	window.dataLayer.push({
		originalLocation: document.location.protocol + '//' +
			document.location.hostname +
			document.location.pathname +
			document.location.search
});
}
</script>
Его нужно добавить как отдельный тег с настройками. Пример на скриншоте:
Тег DataLayer должен загружаться раньше тега UA, чтобы UA получал оттуда данные.

Далее указываем триггер Загрузки DOM для уровня данных, чтобы он активировался после загрузки скелета страницы:
После этого добавляем переменную OriginalLocation, которая будет записывать данные о первом URL в DataLayer:
function() {
  return {{originalLocation}} || window.location.protocol + '//' + window.location.hostname + window.location.pathname + window.location.search;
}
Для того, чтобы трекер не использовал доминирующий параметр document.location, необходимо добавить переменную для параметра Page:
function() {
  return document.location.pathname + document.location.search + document.location.hash;
}
И указать переменные Page и Location в конфигурации трекера UA:
На скрине видно, что добавлена дополнительная переменная title — без нее не всегда корректно передавался meta title страницы. Это делается с помощью переменной document.title:

Итог

За несколько дней мы серьезно снизили количество реферального трафика в GA:
В течение трех недель количество транзакций постепенно снижалось, а на третью неделю достигло нуля. На данный момент показатель остается на том же уровне — это является одним из важных требований клиента.
Ожидаемо снизился показатель отказов у канала yandex / cpc. При сравнении аналогичных периодов разница составляет больше 70%.
Если решение не сработало сразу, попробуйте изменить триггер активации datalayer — если у вас загружается virtual pageview в tag assistant, то попробуйте использовать его — за него тоже можно цепляться.

После внедрения обратите внимание на «Новых пользователей» в GA. Их количество должно резко уменьшиться, но не уйти полностью — часть пользователей будут определяться как новые, только у них не будет ClientId. Такое явление встречается при наличии у пользователя включенного блокировщика рекламы. При этом «Старые пользователи» будут иметь более низкую динамику снижения.

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

Источники