Хардкодим Яндекс Метрику и передаем Google Client ID

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 -->

После размещения код нужно протестировать:

  1. Для этого заходим по ссылке http://yoursite.ru/?_ym_debug=1
  2. Открываем консоль F12
  3. И проверяем передался ли просмотр страницы (PageView) и параметр посетителя (User params)
  4. Через некоторое время проверяем появились ли параметры в Метрике.

Видим User params и PageView:

Проверка передачи Google Client ID в Метрику

Радуемся наличию Google Client ID в Метрике:

Google Client ID в Метрике

Зачем все это нужно?

А затем, чтобы можно было сопоставить данные двух систем между собой и обогатить их.

Что дальше?

Теперь я исповедую такой подход — Google Analytics устанавливается и настраивается как и раньше, через GTM. Но параллельно в коде сайта хардкодится Яндекс Метрика, настраивается фиксация ключевых целей, в параметры которых дублируются Event Category, Event Action, Event Label и Event Value событий Google Analytics (об этом в одной из следующих статей).
Это позволит не остаться без аналитики при блокировке Google, чего я очень надеюсь, никогда не произойдет, но, как говорится, бережёного бог бережёт.

Роман Романчук

Веб-аналитик. Сертифицированный специалист Google Analytics, Google AdWords и Яндекс Директ.