Telegram, Google Analytics, GTM, BiqQuery… На этой неделе наши власти ясно дали понять, что нечего засматриваться на всякие западные бесовские штучки.
Сообщения о сбоях или вовсе отсутствии работоспособности популярных интернет-сервисов и даже банальных Google Таблиц сыпались как из рога изобилия.
Многие сайты не могли корректно загрузиться из-за того, что используемые скрипты, например Google Analytics, были размещены на серверах, ip которых щедро забанил Роскомнадзор.
Какое-то время не работал данный блог. И чтобы восстановить его работоспособность, пришлось комментить код GTM, который подгружал скрипты Google Analytics и Яндекс Метрики. Но совсем без аналитики оставаться нельзя, в результате чего было принято решение захардкодить скрипт Яндекс Метрики, то есть установить его по старинке прямо в шаблона сайта.
Раньше я заглядывал в Метрику, чтобы поиграться с Вебвизором, но видимо теперь придется освоить ее на более продвинутом уровне. Для начала неплохо бы передать в Метрику Client ID пользователя, который присвоил ему счетчик Google Analytics (подробнее о Client ID).
Данный идентификатор будем доставать из cookie _ga
и записывать в параметры посетителей Метрики. Ниже код с моими комментариями, который необходимо разместить в шаблоне вашего сайта перед </head>, но после кода GTM:
<!-- Yandex.Metrika counter --> <script type="text/javascript" > // Читаем куку содержащую Client ID function getCookie(name) { var matches = document.cookie.match(new RegExp( "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; } var google_client_id = getCookie('_ga') ? getCookie('_ga').slice(6) : ''; // Сам код счетчика. Не забудьте заменить '11111111' в идентификаторе счетчика на свой номер (function (d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter11111111 = new Ya.Metrika({ id:11111111, clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, // Передаем Client ID в параметры пользователей userParams:{ "GoogleClientID": google_client_id, } }); } catch(e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = "https://mc.yandex.ru/metrika/watch.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "yandex_metrika_callbacks"); </script> <noscript><div><img src="https://mc.yandex.ru/watch/11111111" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter -->
После размещения код нужно протестировать:
- Для этого заходим по ссылке http://yoursite.ru/?_ym_debug=1
- Открываем консоль F12
- И проверяем передался ли просмотр страницы (PageView) и параметр посетителя (User params)
- Через некоторое время проверяем появились ли параметры в Метрике.
Видим User params и PageView:
Радуемся наличию Google Client ID в Метрике:
Зачем все это нужно?
А затем, чтобы можно было сопоставить данные двух систем между собой и обогатить их.
Что дальше?
Теперь я исповедую такой подход — Google Analytics устанавливается и настраивается как и раньше, через GTM. Но параллельно в коде сайта хардкодится Яндекс Метрика, настраивается фиксация ключевых целей, в параметры которых дублируются Event Category
, Event Action
, Event Label
и Event Value
событий Google Analytics (об этом в одной из следующих статей).
Это позволит не остаться без аналитики при блокировке Google, чего я очень надеюсь, никогда не произойдет, но, как говорится, бережёного бог бережёт.
- Кейс: как построить отдел аналитики в большой компании? - 06.05.2022
- Учимся применять оконные функции - 29.09.2020
- Автоматизация отчетности при помощи SQL и Power BI - 05.04.2020
Помогло, благодарю. А подскажите как передать еще один параметр из другой куки? Кука promocode значение к примерку 12345?
Если я вас правильно понял, вы хотите передать промокод в пользовательский параметр.
Тогда нужно просто дополнить код в этих частях:
…
var google_client_id = getCookie(‘_ga’) ? getCookie(‘_ga’).slice(6) : »;
var promocode = getCookie(‘_promocode ‘); // тут записываем в переменную значение из куки промокода
…
userParams:{
«GoogleClientID»: google_client_id,
«Promocode»: promocode // тут нужно указать название переменной хранящей промокод
}
});
…
Получилось, спасибо огромное!
Роман, скажите пожалуйста, а если в моем случае есть переменная которую можно вывести с помощью команды window.call_value, как в таком случае интегрировать эту переменную в userParams?
Благодарю
Как-то так:
userParams:{
«GoogleClientID»: google_client_id,
«Promocode»: promocode,
«call_value»: window.call_value
}
Роман, столкнулся с такой проблемой, не всегда передаются данные. При открытии страницы в дебаге нет данных, если обновить страницу то они появляются. Как решить эту проблему?
Благодарю. https://uploads.disquscdn.com/images/73e69289ed31ed73c8cedb1ef99e8aeb774a8c1108cc1ce3aaf5dce13460b021.png https://uploads.disquscdn.com/images/e233d0a685ca42128032cffc340a69fc4c9adb48f8de6c432cb628499f4e8303.png https://uploads.disquscdn.com/images/dfa497972714ce1fe8e852f61ed028f49fd244137eb54119fef6ae9990944e1a.png
Тег с метрикой нужно загружать после аналитики в таком случае или все равно?
После, так как кука _ga может не успеть создаться при первом заходе пользователя на сайт.
Подскажите, как можно этот параметр использовать в вебвизоре? Я хочу посмотреть визиты пользователей с определенным client id (который я взяла из ГА). GoogleClientID уже передается в Метрику
Здравствуйте!
Вам в Вебвизоре нужно применить сегмент созданный на основе параметра посетителей содержащего Google Client ID и указать какой именно ID вас интересует: https://uploads.disquscdn.com/images/483ed0f756c1844e93e6f0ac6a270483d8e6146412ec29081f1af017d8ac16ce.png