Уходим с GA

С 1 июля 2024 года вступили в силу изменения в законодательстве, которые ограничивают использование Google Analytics для российских сайтов. Расскажу, как перенёс аналитику на Яндекс.Метрику и настроил всё правильно с точки зрения защиты персональных данных.

Почему пришлось уходить

Новые требования ограничивают передачу данных российских пользователей в страны, которые не обеспечивают должный уровень защиты персональных данных. Google Analytics хранит всё на серверах в США, что теперь создаёт правовые риски.

Выбор простой: или переходим на отечественные решения, или готовимся к возможным штрафам.

Что понадобится

Для миграции нужно:

  • Аккаунт в Яндексе
  • Доступ к коду сайта
  • Понимание, где сейчас установлен Google Analytics

Создание счётчика

Процесс довольно простой:

  1. Заходим на metrika.yandex.ru
  2. Нажимаем «Добавить счётчик»
  3. Указываем адрес сайта
  4. Получаем код

Но не спешите его сразу устанавливать.

Правильная установка с учётом GDPR

Главное правило — счётчик должен запускаться только после явного согласия пользователя на использование cookies.

Базовый код

<!-- Yandex.Metrika counter -->
<script type="text/javascript">
   (function(m,e,t,r,i,k,a){
      m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
      m[i].l=1*new Date();
      for (var j = 0; j < document.scripts.length; j++) {
         if (document.scripts[j].src === r) { return; }
      }
      k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)
   })(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");

   window.yaCounterInit = false;
</script>
<!-- /Yandex.Metrika counter -->

Логика запуска

const initYandexMetrika = function() {
    if (typeof ym !== 'undefined' && !window.yaCounterInit) {
        ym(12345678, "init", {
            clickmap: true,
            trackLinks: true,
            accurateTrackBounce: true,
            webvisor: true
        });
        window.yaCounterInit = true;
    }
}

// Проверяем сохранённое согласие
if (localStorage.getItem('cookies_accepted')) {
    initYandexMetrika();
} else {
    document.getElementById('cookie-banner').style.display = 'block';
}

// Обработка согласия
document.getElementById('accept-cookies').addEventListener('click', function() {
    localStorage.setItem('cookies_accepted', 'true');
    document.getElementById('cookie-banner').style.display = 'none';
    initYandexMetrika();
});

Баннер согласия Простой баннер внизу экрана

Важный момент про noscript

Яндекс.Метрика предлагает добавить такой код для пользователей без JavaScript:

<!-- Не используйте это -->
<noscript>
  <div><img src="https://mc.yandex.ru/watch/12345678" style="position:absolute; left:-9999px;" alt="" /></div>
</noscript>

Проблема в том, что эта картинка загружается всегда, даже когда пользователь не давал согласия. Это нарушение принципа информированного согласия. Просто не добавляйте этот код.

Настройка параметров

Рекомендуемые настройки:

ym(12345678, "init", {
    clickmap: true,           // Карта кликов
    trackLinks: true,         // Отслеживание внешних ссылок
    accurateTrackBounce: true,// Точный показатель отказов
    webvisor: false,          // Лучше отключить для соблюдения GDPR
    ecommerce: "dataLayer"    // Для интернет-магазинов
});

Частые проблемы

Данные не поступают

Блокировщики рекламы. AdBlock и подобные расширения блокируют счётчики. Для тестирования временно отключите их.

Проблемы с геолокацией. Если ваш трафик идёт через зарубежные серверы (корпоративная сеть, спутниковый интернет), Метрика может некорректно определять местоположение.

Режим инкогнито. В приватном режиме localStorage работает только до закрытия окна.

Проверка работы

  1. Откройте консоль разработчика (F12)
  2. Перейдите на вкладку Network
  3. Введите в фильтр mc.yandex
  4. Обновите страницу и дайте согласие
  5. Проверьте, что запросы отправляются

Консоль разработчика

Перенос целей

Если использовали цели в Google Analytics, их нужно адаптировать:

// Google Analytics
gtag('event', 'purchase', {
    value: 1000,
    currency: 'RUB'
});

// Яндекс.Метрика
ym(12345678, 'reachGoal', 'purchase', {
    order_price: 1000,
    currency: 'RUB'
});

Чек-лист после миграции

  • Удалён код Google Analytics
  • Установлена Яндекс.Метрика
  • Настроен запуск после согласия
  • Удалён noscript-код
  • Проверена работа в разных браузерах
  • Обновлена политика конфиденциальности
  • Перенесены важные цели

Итог

Переход на Яндекс.Метрику — вынужденная, но не такая уж страшная мера. Основной функционал похож, есть свои интересные возможности вроде карты скроллинга и аналитики форм. Главное — правильно настроить с учётом требований о защите персональных данных.