Как мы устанавливаем код Universal Analytics с помощью Google Tag Manager
Установка кода отслеживания Google Analytics — типовая операция, в интернете можно найти десятки инструкций как это сделать, в том числе и через GTM. Так почему возник этот вопрос?
Ответ простой. Практика показала, что при установке кода через GTM типовыми способами (по инструкции), в custom dimension счётчика Google Analytics частично не передаётся ClientId. Потери могут составлять 20-40%.
Если у вас уже настроена передача ClientId, то проверить это достаточно просто. В Google Analytics зайти в Отчет «Весь трафик >> Источник/канал» и в качестве «Дополнительного параметра» выбрать ваш кастомный параметр.
Если всё в порядке, то в столбце «Сеансы» у вас будет отображаться 90-100%.
Почему это важно
Если вы планируете в дальнейшем выстраивать у себя сквозную аналитику с помощью Google Analytics, то точная передача параметра ClientId — один из ключевых пунктов.
Именно с помощью него мы потом привязываем продажи в вашей CRM (CMS) к конкретному посетителю сайта и можем видеть какие рекламные каналы дали реальные покупки.
Упрощенно говоря: Если в столбце «Сеансы» отображается, например, 70% сеансов, то это означает, что в 30% случаев мы не сможем привязать сделанную Продажу к конкретному Посетителю и статистика в Google Analytics будет не полной.
Это не совсем точная формулировка, но суть она отражает верно.
Что мы обычно делаем
1. Добавляем код отслеживания только в виде «Пользовательский HTML».
2. Используем немного модифицированный код счётчика Universal Analytics:
<script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); // Здесь в строке надо указать ваш номер счётчика Google ga('create', 'UA-XXXXXX-1', 'auto'); function getCookie(name) { var matches = document.cookie.match(new RegExp( "(?:^|; )" + name.replace(/([.$?*|{}()[]\/+^])/g, '\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : '(not_set)'; } /* dimension1 - заменить на Специальный параметр, который вы добавили в настройках вашего Ресурса счётчика Google. В этот параметр передаём clientId посетителя */ ga(function (tracker) { client_id = tracker.get('clientId'); client_id = client_id ? client_id : getCookie('_ga'); tracker.set('dimension1', client_id); }); /* Через 15 секунд после загрузки страницы отправляем событие, чтобы в счётчике не было завышенного показателя отказов. Показатель отказов в идеале будет совпадать с данными в Яндекс.Метрике */ setTimeout(function(){ ga('send', 'event', 'Новый посетитель', location.pathname); }, 15000); ga('send', 'pageview'); </script>
Этот код не аксиома, можно использовать и другие варианты. В нашем случае он работает безошибочно и этого достаточно.
3. В коде счётчика помимо передачи ClientId заодно передаем событие «Новый посетитель», оно срабатывает через 15 секунд после открытия страницы посетителем.
Вещь простая, но нужная. Помогает скорректировать показатель отказов в отчетах Google Analytics. Можно реализовать в GTM и другим способом, через триггер типа «Таймер», но зачем плодить сущности :0)
После этого, цифры по «Отказам», «Глубине просмотра» и «Времени на сайте» в Google Analytics и Яндекс.Метрика начинают совпадать (отклонения в районе 1-2%).