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, чего я очень надеюсь, никогда не произойдет, но, как говорится, бережёного бог бережёт.

