Урок 04

Яндекс.Метрика: установка счётчика

Что такое Метрика

Яндекс.Метрика — бесплатная система веб-аналитики.

Что даёт:

  • Трафик и источники.
  • Поведение — клики, скроллы, время.
  • Вебвизор — запись сессий.
  • Цели и конверсии.
  • Карты скроллинга.
  • Аудитория.

Правило: для рунета — обязательна.

Ссылка

metrika.yandex.ru

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

Шаги:

  1. Войти с Яндекс.Аккаунтом.
  2. Нажать «Добавить счётчик».
  3. Ввести имя (для себя).
  4. Ввести домен.
  5. Настроить параметры.
  6. Сохранить.

Что получишь: номер счётчика (8 цифр).

Настройки счётчика

Что важно:

  • Часовой пояс.
  • Валюта.
  • Доступ — кто видит.
  • Вебвизор — включить.
  • Карта скроллинга — включить.
  • Аналитика форм — включить.
  • Электронная коммерция — если магазин.
  • Асинхронный код — включить.
  • Отслеживание хеша — если SPA.
  • Запрет индексировать — включить.

Базовый код

Что даёт Яндекс:

<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");

    ym(XXXXXXXX, "init", {
        clickmap:true,
        trackLinks:true,
        accurateTrackBounce:true,
        webvisor:true
    });
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/XXXXXXXX" style="position:absolute; left:-9999px;" alt="" /></div></noscript>

Что здесь:

  • XXXXXXXX — номер счётчика.
  • clickmap — карта кликов.
  • trackLinks — отслеживание внешних ссылок.
  • accurateTrackBounce — точный отказ.
  • webvisor — запись.
  • noscript — без JS.

Установка в HTML

Куда: перед </head> или после <body>.

Правило: перед </body> — рекомендуется.

Установка в Laravel

Blade-шаблон:

{{-- resources/views/layouts/app.blade.php --}}

@if(config('services.yandex.metrika_id'))
    <script>
        (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");

        ym({{ config('services.yandex.metrika_id') }}, "init", {
            clickmap:true,
            trackLinks:true,
            accurateTrackBounce:true,
            webvisor:true
        });
    </script>
    <noscript>
        <div><img src="https://mc.yandex.ru/watch/{{ config('services.yandex.metrika_id') }}" style="position:absolute; left:-9999px;" alt="" /></div>
    </noscript>
@endif

.env:

YANDEX_METRIKA_ID=12345678

config/services.php:

'yandex' => [
    'metrika_id' => env('YANDEX_METRIKA_ID'),
],

Установка в Next.js

Компонент:

'use client';

import Script from 'next/script';

const YM_ID = process.env.NEXT_PUBLIC_YANDEX_METRIKA_ID;

export default function Metrika() {
    if (!YM_ID) return null;

    return (
        <Script id="yandex-metrika" strategy="afterInteractive">
            {`
                (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");

                ym(${YM_ID}, "init", {
                    clickmap:true,
                    trackLinks:true,
                    accurateTrackBounce:true,
                    webvisor:true
                });
            `}
        </Script>
    );
}

В layout.tsx:

export default function RootLayout({ children }) {
    return (
        <html lang="ru">
            <body>
                {children}
                <Metrika />
            </body>
        </html>
    );
}

Проверка

Как проверить:

  1. Открыть сайт.
  2. Открыть Метрику.
  3. Смотреть «Сводка» → «Посетители онлайн».
  4. Должен быть ты.

Если нет:

  • Проверить номер счётчика.
  • Проверить блокировщики.
  • Проверить консоль DevTools.
  • Проверить через визит.

Правило: приходит в течение 15 минут.

Отслеживание хеш-навигации

Для SPA (React, Next, Vue):

ym(XXXXXX, 'init', {
    clickmap: true,
    trackLinks: true,
    accurateTrackBounce: true,
    webvisor: true,
    trackHash: true,
});

Что даёт: работает переход по хеш-ссылкам.

Virtual pageview

Для SPA с history API:

ym(XXXXXX, 'hit', window.location.href, {
    title: document.title,
    referrer: document.referrer,
});

Что даёт: правильно считает переходы без перезагрузки.

Цели

Что важно: настроить до запуска.

Что можно отслеживать:

  • Посещение страницы.
  • Клик по кнопке.
  • Отправка формы.
  • Событие JavaScript.
  • Внешняя ссылка.
  • Скачивание файла.

Правило: без целей — нет конверсий.

Доступ

Кто видит:

  • Владелец.
  • Гости — с ограничениями.
  • Публичный доступ.

Правило: SEO-агентству — свой доступ.

Несколько сайтов

Что делать:

  • Отдельные счётчики.
  • Или один с фильтрами.

Правило: отдельные — проще.

Практика

1. Создайте счётчик.

2. Настройте: вебвизор, карту, аналитику форм.

3. Установите код в Laravel или Next.js.

4. Проверьте «Посетители онлайн».

5. Настройте 3 цели:

  • Форма.
  • Кнопка.
  • Спасибо-страница.

6. Дождитесь данных 24 часа.

7. Посмотрите первый отчёт.

Частые ошибки

1. Не установлен:

Нет данных

Решение: установить.

2. Неверный номер:

Данные не приходят

Решение: проверить.

3. Блокировщик:

AdBlock режет

Решение: проверить в incognito.

4. Не настроен вебвизор:

Нет записи

Решение: включить.

5. Без целей:

Нет конверсий

Решение: настроить.

6. Для SPA без trackHash:

1 сессия на всё

Решение: включить.

7. Публичный доступ:

Конкуренты видят

Решение: ограничить.

8. Не проверять:

Месяцы без данных

Решение: проверить сразу.

Итог

  • Метрика — обязательна для рунета.
  • Номер счётчика — 8 цифр.
  • Установка: Laravel / Next.js.
  • Вебвизор, карта, формы — включить.
  • trackHash для SPA.
  • hit для virtual pageview.
  • Цели — обязательны.
  • Проверка — посетители онлайн.
  • Доступ — правильный.
  • Регулярность — смотреть отчёты.

Дальше — Метрика: цели, конверсии, поведенческие отчёты.