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

10 replies on “ Хардкодим Яндекс Метрику и передаем Google Client ID ”
  1. Помогло, благодарю. А подскажите как передать еще один параметр из другой куки? Кука promocode значение к примерку 12345?

    1. Если я вас правильно понял, вы хотите передать промокод в пользовательский параметр.
      Тогда нужно просто дополнить код в этих частях:

      var google_client_id = getCookie(‘_ga’) ? getCookie(‘_ga’).slice(6) : »;
      var promocode = getCookie(‘_promocode ‘); // тут записываем в переменную значение из куки промокода

      userParams:{
      «GoogleClientID»: google_client_id,
      «Promocode»: promocode // тут нужно указать название переменной хранящей промокод
      }
      });

      1. Роман, скажите пожалуйста, а если в моем случае есть переменная которую можно вывести с помощью команды window.call_value, как в таком случае интегрировать эту переменную в userParams?
        Благодарю

  2. Роман, столкнулся с такой проблемой, не всегда передаются данные. При открытии страницы в дебаге нет данных, если обновить страницу то они появляются. Как решить эту проблему?
    Благодарю. https://uploads.disquscdn.com/images/73e69289ed31ed73c8cedb1ef99e8aeb774a8c1108cc1ce3aaf5dce13460b021.png https://uploads.disquscdn.com/images/e233d0a685ca42128032cffc340a69fc4c9adb48f8de6c432cb628499f4e8303.png https://uploads.disquscdn.com/images/dfa497972714ce1fe8e852f61ed028f49fd244137eb54119fef6ae9990944e1a.png

  3. Тег с метрикой нужно загружать после аналитики в таком случае или все равно?

  4. Подскажите, как можно этот параметр использовать в вебвизоре? Я хочу посмотреть визиты пользователей с определенным client id (который я взяла из ГА). GoogleClientID уже передается в Метрику

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *