Ставить GA4 прямо на сайт куском кода — устаревший подход. Правильно — через Google Tag Manager (GTM): контейнер один, теги внутри управляются мышкой без правок кода, есть версионирование, есть предпросмотр, есть откат. Дальше — базовая связка «GTM → GA4 config → page_view» плюс 6 событий, без которых аналитика — просто счётчик визитов: отправка формы, клик по email, клик по телефону, скролл до 75% страницы, клик по исходящей ссылке, скачивание файла. Пятиминутная проверка через DebugView, отсечение своего IP и трафика из офиса — и Metrics/Reports начинают показывать деньги, а не «сессии».
«Мы поставили GA4, но там ничего не понятно». Слышу эту фразу от каждого второго клиента, у которого GA4 стоит «просто чтобы был». Проблема не в GA4 — проблема в том, что его настраивают за 5 минут и забывают: событие page_view отправляется, всё остальное — тишина. В отчётах «Отправка форм» — 0, «Клики по кнопке звонка» — 0, конверсии — 0. Не потому что их нет, а потому что никто не сказал GA4 их считать.
Дальше — пошагово, как поставить GA4 через GTM с нуля, какие 6 событий обязательно настроить в первый день, как это проверить и что делать с внутренним трафиком, чтобы не портил статистику.
Зачем GA4 ставить через GTM, а не напрямую
Прямой код GA4 (тот, что даёт Google в интерфейсе — <script src="https://www.googletagmanager.com/gtag/js?id=G-XXX">) — работает, но плох тем, что любое новое событие требует правок в вёрстке. Захотел трекать клик по кнопке — зови разработчика, деплой, ждать пока раскатается. С GTM всё делается в веб-интерфейсе за 3-5 минут: создал триггер, привязал тег, опубликовал версию — работает.
Что даёт GTM конкретно:
- Один тег на сайте — тысяча настроек внутри. Один раз ставишь контейнер GTM, дальше все аналитики/пиксели (GA4, Метрика, Facebook Pixel, TikTok Pixel, Google Ads) живут внутри него.
- Версионирование и откат. Каждая публикация — новая версия. Сломал что-то — переключился на предыдущую в пару кликов.
- Preview-режим. Проверяешь ВСЕ теги перед публикацией без риска сломать боевой сайт.
- Условия срабатывания. «Отправлять event только с конкретной страницы» / «только если пользователь скроллил ниже 50%» / «только на мобилке» — гибче любого захардкоженного кода.
- Работа без разработчика. Маркетолог сам добавляет цели, не дёргая CTO с релизом.
Единственное разумное исключение — сайт на закрытой SaaS-платформе, куда нельзя вставить контейнер GTM. В остальных случаях GTM на сайте — стандарт с 2018 года.
Шаг 1. Создать ресурс GA4 и получить Measurement ID
Заходишь в analytics.google.com, «Администратор» → «Создать» → «Аккаунт» (или используешь существующий) → «Ресурс». Указываешь название («mostly.by» или «Основной сайт»), часовой пояс — обязательно Europe/Minsk (для белорусских клиентов) или Europe/Moscow, валюту BYN/RUB/USD в зависимости от рынка. Часовой пояс потом поменять можно, но данные до смены останутся в старом — лучше сразу правильно.
Дальше «Поток данных» → «Веб» → указываешь URL (с https://) и название потока. Google выдаёт Measurement ID формата G-XXXXXXXXXX — запиши, он нужен на шаге 3.
В настройках потока сразу включи:
- «Улучшенное измерение» — Google сам поймает page_view, scroll, outbound_click, site_search, video_engagement, file_download. Часть шагов ниже дублирует эти события — сознательно, потому что «Улучшенное измерение» захватывает не все случаи, а событие через GTM даёт полный контроль.
- «Показать все сеансы Google Signals» — включи, если планируешь использовать демографию и ремаркетинг. Иначе не включай — это тоже персональные данные.
Шаг 2. Установить контейнер GTM на сайт
Идёшь на tagmanager.google.com, «Создать аккаунт» → название компании → контейнер → тип «Веб» → домен. Google выдаёт две вставки:
- Первая — в
<head>, максимально высоко (сразу после<meta charset>). - Вторая — в
<body>, сразу после открывающего тега.
Обе вставки — обязательны. Первая ставит сам GTM, вторая нужна для noscript-фолбэка (когда у пользователя выключен JavaScript — редко, но встречается). Ставишь их в шаблон сайта — так, чтобы код был на КАЖДОЙ странице. Проверяешь через расширение Google Tag Assistant: заходишь на сайт, кликаешь по расширению, видишь «GTM-XXX ✓».
header.php. Для Tilda — «Настройки сайта» → «Ещё» → «HTML-код для вставки внутри HEAD» + «HTML-код для вставки после тега BODY». Готовые плагины типа «MonsterInsights» на WordPress использовать НЕ рекомендую — они ставят GA4 напрямую, минуя GTM, и потом не масштабируются под события.
Шаг 3. Отправить page_view из GTM в GA4
В GTM создаёшь: «Теги» → «Создать» → тип тега «Google Аналитика: конфигурация GA4» → вставляешь тот самый Measurement ID (G-XXXXXXXXXX). Триггер — «All Pages» (уже готовый, срабатывает на каждой странице). Название тега — «GA4 - Config». Сохраняешь.
Это ВСЁ, что нужно для базового трекинга. Дальше GA4 будет сам собирать page_view (визиты по URL). Осталось опубликовать контейнер («Отправить» → «Опубликовать» в правом верхнем углу GTM) и убедиться, что данные пошли — но об этом ниже, в шаге проверки.
Шаг 4. Настроить 6 обязательных событий
По одиночке они простые, вместе — превращают счётчик визитов в реальную бизнес-аналитику. Каждое событие в GTM = триггер (когда срабатывает) + тег (что отправляем в GA4).
1. form_submit — отправка формы
Зачем. Главное конверсионное событие для бизнес-сайта услуг. Без него нельзя узнать, сколько заявок принёс канал, работает ли новая landing, растут ли конверсии после правки CTA.
Как настроить. Триггер «Отправка формы» с фильтром по CSS-селектору или ID формы (например, #mstl-form form). Если сайт использует AJAX (форма не перезагружает страницу — как на большинстве современных сайтов), стандартный триггер НЕ сработает. В этом случае — Custom Event: в коде формы после успешной отправки вызываешь dataLayer.push({event: 'form_submit', form_name: 'Popup'}), а в GTM создаёшь триггер «Custom Event» с именем form_submit. Тег — GA4 Event, event_name = form_submit, параметры: form_name (из dataLayer), page_location.
2. click_email — клик по mailto-ссылке
Зачем. Половина пользователей не отправляют форму, а копируют email и пишут вручную. Без этого события такие «конверсии» невидимы.
Как настроить. Триггер «Клик — только ссылки» с фильтром «Click URL содержит mailto:». Тег — GA4 Event, event_name = click_email, параметр link_url (из встроенной переменной {{Click URL}}).
3. click_tel — клик по номеру телефона
Зачем. Аналогично email — на мобильных клик по номеру = звонок. Прямая конверсия.
Как настроить. Копия триггера выше, только «Click URL содержит tel:». Event_name — click_tel. Параметр link_url.
4. scroll_75 — доскролл до 75% страницы
Зачем. Метрика вовлечённости. Пользователь, доскроллевший до 75%, читает контент — это «прогретый» лид, а не bounce. Позволяет отделить трафик, который реально смотрит сайт, от того, кто ушёл через 3 секунды.
Как настроить. Триггер «Глубина прокрутки» → «Процент по вертикали» → 25, 50, 75, 90. Тег — GA4 Event, event_name = scroll, параметр percent_scrolled (встроенная переменная {{Scroll Depth Threshold}}). Одно событие покроет 4 порога — потом в GA4 можно строить сегменты «пользователи, доскроллевшие до 75%».
5. outbound_click — клик по внешней ссылке
Зачем. Понимать, куда уходит трафик с сайта. Если 40% пользователей уходят на страницу партнёра, а не заказывают у тебя — надо задавать вопросы к воронке.
Как настроить. Триггер «Клик — только ссылки» → включи галочку «Проверять валидацию» и в условии «Click URL не содержит mostly.by» (свой домен). Тег — GA4 Event, event_name = click_outbound, параметр link_url.
6. file_download — скачивание PDF / DOC / XLS
Зачем. Если у тебя на сайте есть коммерческое предложение / прайс / кейс-стади в PDF — понимать, сколько раз его скачали. Часто сильнее коррелирует с заявками, чем формы.
Как настроить. Триггер «Клик — только ссылки» → «Click URL соответствует регулярному выражению» → \.(pdf|docx?|xlsx?|pptx?|zip)$. Тег — GA4 Event, event_name = file_download, параметр file_name (можно вытащить через регэксп из URL, но обычно достаточно {{Click URL}}).
Шаг 5. Проверить через DebugView + Real-time
Прежде чем публиковать — обязательный этап. Открываешь GA4 в одной вкладке, GTM Preview-режим — в другой:
- В GTM жмёшь «Просмотр» (кнопка Preview в правом верхнем углу).
- Открывается интерфейс Tag Assistant — вводишь URL своего сайта, жмёшь Connect.
- Открывается сайт с зелёной плашкой «Debugger connected». Начинаешь кликать: заполнить форму, ткнуть email, скроллить вниз, скачать PDF.
- В Tag Assistant видишь список сработавших событий — каждое должно быть с зелёной галочкой «Tags Fired».
- Параллельно в GA4 идёшь «Администратор» → «DebugView» — видишь эти же события в реальном времени с параметрами.
Если тег не сработал — жмёшь на него в Tag Assistant, смотришь причину (обычно триггер не подошёл или переменная пустая). Правишь, публикуешь — проверяешь снова. На 6 событий уходит 30-45 минут вместе с отладкой.
Шаг 6. Фильтр внутреннего трафика
Твои визиты, визиты разработчика, визиты того, кто пишет статьи в блог — всё это идёт в статистику и портит цифры конверсий. На сайте с 200 визитами в день 20 внутренних = 10% шума. GA4 умеет их фильтровать:
- «Администратор» → «Потоки данных» → выбираешь поток → «Настроить параметры тегов» → «Показать все» → «Задать внутренний трафик».
- Правило: «IP-адрес — равен» → указываешь свой публичный IP (узнаёшь через 2ip.ru). Название правила — «Office».
- «Администратор» → «Настройки данных» → «Фильтры данных» → активируешь фильтр «Internal Traffic» (по умолчанию он в состоянии «Testing»).
Если у команды динамические IP — заведи по правилу на каждого + добавляй по мере необходимости. Для 100% чистоты можно ещё добавить UserAgent-фильтр через GTM (не отправлять события с внутренним cookie).
Что дальше — конверсии, аудитории, интеграции
Настроил 6 событий = аналитика уже работает. Дальше — тюнинг:
- Пометить конверсии. В GA4 «Администратор» → «События» → у нужных (обычно
form_submit,click_tel,click_email) флажок «Помечать как ключевое событие». Только помеченные показываются в «Обзоре ключевых событий». - Собрать аудитории. «Аудитории» → «Создать» → «Пользователи, отправившие форму, но не заказавшие звонок» → отдельный сегмент для ремаркетинга.
- Подключить BigQuery-экспорт (бесплатно на GA4 стандарт, до 1 млн событий в день). Хранит сырые данные без семплирования, живёт вечно, идёт в Looker Studio дашборды.
- Связать с Google Ads — конверсии из GA4 автоматически шлются в Ads, оптимизация Smart Bidding работает по реальным заявкам.
- Связать с Search Console — «Администратор» → «Ссылка на Search Console» → в отчётах «Приобретение» появится SEO-канал с реальными запросами.
Частые ошибки при настройке
| Ошибка | Симптом | Фикс |
|---|---|---|
| GTM установлен только в <head>, без noscript-фолбэка в <body> | ~2% пользователей без JS не считаются | Добавить вторую вставку в <body> |
| GA4-конфиг создан, но не опубликован (Preview-мод) | В реалтайме тишина, счётчик 0 | «Отправить» → «Опубликовать» в GTM |
| Форма отправляется через AJAX без dataLayer.push | form_submit не срабатывает | В код успешной отправки формы добавить dataLayer.push({event:'form_submit'}) |
| Измерение до вставки GTM на живом сайте | Внутренний трафик всё ещё идёт в GA4 | Настроить фильтр «Internal Traffic» до релиза |
| Улучшенное измерение выключено | Часть событий (page_view с параметрами, video_engagement) не собирается | «Поток данных» → включить «Улучшенное измерение» |
| Часовой пояс UTC вместо Europe/Minsk | Отчёты «по дням» смещены на 3 часа | «Администратор» → «Настройки ресурса» → сменить часовой пояс |
| Ремаркетинг-аудитории собираются 0 пользователей | Google Signals выключен | «Поток данных» → включить Google Signals |
Частые вопросы
Нужно ли GA4, если стоит Яндекс.Метрика?
Да. Метрика собирает данные о поведении, GA4 — о конверсиях в связке с Google Ads/Search Console. Плюс BigQuery-экспорт из GA4 — единственный способ хранить сырые данные бесплатно и вечно. Метрика такого не даёт. Ставить обе — стандарт для сайтов, работающих на Google + Яндекс. Подробно про Метрику — в отдельной статье.
Универсальная Analytics (UA) до сих пор актуальна?
Нет. Universal Analytics выключен Google 1 июля 2023 (стандартные ресурсы) и 1 июля 2024 (360-ресурсы). Данные до этих дат хранятся до момента, пока Google их не удалит (обещали 6-12 месяцев после отключения — многие уже удалены). Если на сайте всё ещё стоит UA-код (gtag.js с ID вида UA-XXXXXX) — снимай, ставь GA4.
Что делать, если сайт на закрытой SaaS-платформе (например, конструкторе), где GTM не поставить?
Смотри штатные интеграции. Большинство конструкторов позволяют вставить только Measurement ID GA4 (без GTM) — этого хватит для page_view и «Улучшенного измерения». Кастомные события через GTM — придётся жить без них. Аргумент за смену платформы, если конверсионная аналитика критична для бизнеса.
Сколько времени ждать первые данные?
Real-time и DebugView — секунды. Стандартные отчёты («Обзор», «Приобретение», «Ключевые события») — задержка 24-48 часов. Отчёт «Аудитории» и связка с Google Ads — до 72 часов, пока Google накопит критическую массу событий.
Сколько всё это стоит внедрить, если делать под ключ?
GA4 + GTM + 6 обязательных событий + фильтры + BigQuery-экспорт + Looker Studio-дашборд — обычно от 400-600 BYN одноразово (5-8 часов работы). Больше — только если сайт большой, много кастомных событий (add_to_cart для e-commerce, custom conversions, revenue-события), интеграция с Google Ads + Метрика в общий отчёт.
Как узнать, что аналитика реально работает через месяц после запуска?
Простой чек: в GA4 «Ключевые события» → форма должна показывать не 0. Если 0 — либо заявок реально нет (тогда проблема с сайтом, не с аналитикой), либо триггер отваливается (проверяй через DebugView). Второй чек — в «Приобретении» видны разные каналы (Organic Search / Direct / Referral / Paid). Если 100% Direct — не работает атрибуция, у пользователей режется referrer, разбирайся.
Аналитика без событий — это спидометр без стрелки. Знаешь, что машина едет, но не знаешь с какой скоростью. Ставишь GA4 просто «чтобы был» — потом в отчётах смотришь на графики визитов, не понимаешь что с этим делать, платишь SEO-специалисту и не можешь проверить, работает ли он. Настроил 6 событий за час — получил инструмент, по которому видно: работает канал или нет, конвертит landing или нет, растут заявки или падают.
Нужна настройка GA4 + GTM с событиями и фильтрами под твой бизнес — пиши на mostlycorp@gmail.com или через форму ниже. Настраиваем за 5-8 часов, подключаем BigQuery-экспорт, собираем дашборд в Looker Studio. От 400 BYN.