И/ТОП.03 · ТЕМА 06События · параметры · ключевые действия

Событийная модельПЛАН ЗАНЯТИЯ · 1 / 95

Что сделаем сегодня

Тема 5 закончилась тем, что сайт опубликован на Vercel, в head каждой страницы стоит Google Tag, а в GA4 приходят просмотры страниц. О том, что посетитель делал на странице, сайт пока не сообщает.

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

Было в теме 5
открытая страница → page_view
Станет в теме 6
действие посетителя → scroll, click, file_download, form_start
Добавим кодом
generate_lead и cta_click с параметрами
Настроим в GA4
Custom Dimensions и Key Event

Событийная модельИСХОДНИК 89 · 2 / 95

Сайт уже передаёт данные в GA4

На теме 5 мы опубликовали сайт и установили Google Tag. В Realtime появились просмотры страниц.

Теперь проверим, какие действия посетителя превращаются в события и какие параметры приходят вместе с ними.

  1. 01USERдействие
  2. 02WEBSITEстраница
  3. 03GOOGLE TAGотправка
  4. 04GA4page_view

Событийная модельИСХОДНИК 90 · 3 / 95

GA4 построен вокруг событий

В GA4 каждое действие посетителя записывается как событие. Имя события отвечает на вопрос «что произошло».

page_view
открыли страницу
scroll
достигли глубины 90%
click
перешли на другой домен
file_download
нажали ссылку на файл
generate_lead
зафиксировали заявку
cta_click
нажали нашу CTA

Событийная модельИСХОДНИК 92 · 4 / 95

Event Name + Parameters

Имя сообщает, что произошло. Параметры уточняют подробности: какая ссылка, какой файл, какая кнопка.

EVENT NAMEfile_download
file_name
analytics-guide.pdf
file_extension
pdf
link_text
Скачать материал
Учебный состав события · параметры проверяем в DebugView

ДЕМОНСТРАЦИЯ · ЛОКАЛЬНО

Действие → запись события

Нажмите кнопку и раскройте запись.

Журнал пуст. В GA4 ничего не отправляется.

Событийная модельИСХОДНИК 93 · 5 / 95

Какие события бывают в GA4

Automatically collected
собираются базовым тегом
Enhanced Measurement
поддерживаемые взаимодействия при включённых настройках
Recommended Events
мы реализуем отправку с именем и параметрами Google
Custom Events
мы определяем собственное имя и смысл

Название generate_lead рекомендовано Google, но установка тега сама по себе не добавляет нашу бизнес-логику.

Событийная модельИСХОДНИК 94 · 6 / 95

Посмотрим, что GA4 уже собирает

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

  1. Собирается автоматически?Да → проверяем и используем существующее событие.
  2. Есть рекомендуемое имя?Да → реализуем отправку с именем Google.
  3. Нужен свой смысл?Создаём Custom Event и описываем его параметры.

Автоматические измеренияИСХОДНИК 95 · 7 / 95

Шаг 1. Открыть Enhanced Measurement

Откройте учебный ресурс GA4 и перейдите к его веб-потоку.

  1. 01AdminАдминистратор
  2. 02Data streamsПотоки данных
  3. 03Web streamваш Vercel URL

Найдите блок Enhanced measurement / Улучшенная статистика. Сверьте Measurement ID с тегом на сайте.

GA4: данные веб-потока — URL проекта, Measurement ID и блок Enhanced Measurement.

Автоматические измеренияИСХОДНИК 96 · 8 / 95

Часть событий можно получать без кода

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

Переключатель On / Включено только разрешает сбор. Приходят ли события, видно в отчётах.

Дальше выполним действие на сайте и найдём событие в Realtime.

GA4: блок Enhanced Measurement; переключатель находится в положении On.

Автоматические измеренияИСХОДНИК 97 · 9 / 95

Шаг 2. Посмотреть автоматические измерения

Нажмите значок настройки рядом с Enhanced measurement.

Page views
просмотры и изменения истории
Scrolls
глубокая прокрутка
Outbound clicks
внешние переходы
Site search
поиск на сайте
Video engagement
поддерживаемое встроенное видео
File downloads
ссылки на файлы
Form interactions
взаимодействия с формой
GA4: открытая панель Enhanced Measurement со списком автоматических измерений.

Автоматические измеренияИСХОДНИК 98 · 10 / 95

page_view

При загрузке HTML-страницы Google Tag отправляет page_view.

  1. 01Homepage_view
  2. 02Aboutpage_view
  3. 03Contactspage_view

В этом проекте у каждой страницы свой HTML-файл. Дополнительный ручной page_view при загрузке не нужен.

Автоматические измеренияИСХОДНИК 100 · 11 / 95

scroll

Стандартный scroll срабатывает один раз за просмотр страницы — при достижении 90% её вертикальной глубины.

порог 90%

Глубина 0%. Порог не пройден, событий scroll: 0.

Локальная модель · ничего не отправляет в Google

Автоматические измеренияИСХОДНИК 101 · 12 / 95

Шаг 3. Прокрутить страницу

Откройте длинную страницу About на своём Production URL и прокрутите почти до конца.

В Reports → Realtime найдите scroll в карточке Event count by Event name.

GA4 Realtime: в списке событий видно scroll после прокрутки длинной страницы.

Автоматические измеренияИСХОДНИК 102 · 13 / 95

GA4 не фиксирует автоматически любой клик

Автоматический click в Enhanced measurement относится к outbound clicks — переходам на другой домен.

/about.html
внутренняя ссылка, не outbound
https://github.com/
внешняя ссылка, возможен click
button#program-cta
кнопка сама по себе не создаёт автоматический click

Публикация измененийРАБОЧИЙ ЦИКЛ · 14 / 95

Как изменение попадает на сайт

Код студент правит у себя на компьютере, а сайт работает на сервере Vercel. Между ними GitHub: он хранит историю проекта и сообщает Vercel о новой версии.

  1. 01GitHubрепозиторий проекта
  2. 02VS Codeправка у себя
  3. 03Commitсохранённая версия
  4. 04Pushотправка в GitHub
  5. 05Vercelавтоматический деплой
  6. 06Сайтновая версия открыта

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

Публикация измененийРАБОЧИЙ ЦИКЛ · 15 / 95

Шаг A. Скопировать адрес репозитория

Откройте свой репозиторий проекта на GitHub. Нажмите зелёную кнопку Code, выберите вкладку HTTPS и скопируйте адрес.

Адрес выглядит так: https://github.com/ВАШ-ЛОГИН/ВАШ-ПРОЕКТ.git.

GitHub: кнопка Code, вкладка HTTPS и скопированный адрес репозитория.

Публикация измененийРАБОЧИЙ ЦИКЛ · 16 / 95

Шаг B. Склонировать проект

В VS Code откройте палитру команд (Cmd+Shift+P или Ctrl+Shift+P), введите Git: Clone и вставьте скопированный адрес. Выберите папку, куда положить проект.

То же самое из терминала:

text ·
git clone https://github.com/ВАШ-ЛОГИН/ВАШ-ПРОЕКТ.git

Клонировать нужно один раз. Дальше вы работаете в этой папке.

VS Code: команда Git: Clone и поле для адреса репозитория.

Публикация измененийРАБОЧИЙ ЦИКЛ · 17 / 95

Шаг C. Открыть нужный файл

VS Code откроет папку проекта. В Explorer слева видны файлы сайта: страницы, папка js, стили.

Откройте файл, который нужно изменить. На этом занятии первым будет index.html.

VS Code Explorer: файлы склонированного проекта, открыт index.html.

Публикация измененийРАБОЧИЙ ЦИКЛ · 18 / 95

Шаг D. Изменить и сохранить

Внесите изменение и сохраните файл: Cmd+S или Ctrl+S.

Пока файл не сохранён, на вкладке вместо крестика стоит точка, а справа от имени файла в Explorer появляется буква M — modified, изменён.

Несохранённый файл не попадёт ни в commit, ни на сайт.

VS Code: изменение сохранено, метка M у файла в Explorer.

Публикация измененийРАБОЧИЙ ЦИКЛ · 19 / 95

Шаг E. Посмотреть изменения

Откройте Source Control — третий значок на левой панели. Там перечислены файлы, изменённые с последнего коммита.

Нажмите на файл: VS Code покажет сравнение. Слева прежняя версия, справа новая; добавленные строки подсвечены зелёным.

Проверьте, что в списке только те файлы, которые вы правили.

VS Code Source Control: список изменённых файлов и сравнение версий.

Публикация измененийРАБОЧИЙ ЦИКЛ · 20 / 95

Шаг F. Сделать commit

Напишите сообщение коммита — короткую фразу о сути изменения, например Add external link and PDF guide. Нажмите Commit.

Commit сохраняет версию в истории проекта у вас на компьютере. На GitHub и на сайте изменений пока нет.

VS Code: сообщение коммита и кнопка Commit.

Публикация измененийРАБОЧИЙ ЦИКЛ · 21 / 95

Шаг G. Отправить в GitHub

Нажмите Sync Changes (или Push). VS Code отправит коммит в GitHub.

После отправки счётчик у кнопки обнулится, а история проекта на GitHub пополнится.

VS Code: кнопка Sync Changes после коммита.

Публикация измененийРАБОЧИЙ ЦИКЛ · 22 / 95

Шаг H. Проверить коммит на GitHub

Обновите страницу репозитория на GitHub. Ваш коммит виден в списке: его сообщение, автор и время.

Это первая проверка: код действительно ушёл с компьютера в репозиторий.

GitHub: новый коммит в истории репозитория.

Публикация измененийРАБОЧИЙ ЦИКЛ · 23 / 95

Шаг I. Дождаться деплоя

Откройте свой проект в Vercel и перейдите на вкладку Deployments.

Vercel увидел новый коммит и начал сборку. Сначала статус Building, затем Ready; у рабочей версии дополнительно стоит метка Production.

  1. 01Commitверсия в GitHub
  2. 02BuildingVercel собирает
  3. 03Readyсборка готова
  4. 04Productionадрес сайта обновлён
Vercel Deployments: коммит со статусами Ready и Production.

Публикация измененийРАБОЧИЙ ЦИКЛ · 24 / 95

Шаг J. Открыть обновлённый сайт

Откройте свой Production URL и проверьте изменение на живой странице.

Только теперь цикл закончен: код у вас, версия в GitHub, деплой Ready, изменение видно посетителю. Дальше в теме этот путь повторяется после каждой правки.

Production-сайт: изменение видно на опубликованной странице.

Автоматические измеренияИСХОДНИК 103 · 25 / 95

Шаг 4. Найти внешнюю ссылку

Найдите внешнюю ссылку в index.html. Если её нет, добавьте:

html ·
<a href="https://github.com/" target="_blank" rel="noopener noreferrer">
  Открыть GitHub
</a>

Сохраните файл, сделайте Commit и Push. Дождитесь Production Deployment со статусом Ready.

VS Code: внешняя ссылка на GitHub в index.html, видны href и target.

Автоматические измеренияИСХОДНИК 104 · 26 / 95

Шаг 5. Нажать внешнюю ссылку

На опубликованной странице нажмите Открыть GitHub. Затем вернитесь в GA4 Realtime и найдите click.

Сопоставьте время действия и домен ссылки. Одного названия события недостаточно, если пользователей несколько.

Если события нет, проверьте Outbound clicks, свежий деплой и блокировку аналитики в браузере.

GA4 Realtime: событие click после перехода по внешней ссылке.

Автоматические измеренияИСХОДНИК 105 · 27 / 95

GA4 знает, куда перешёл пользователь

Параметры внешнего перехода описывают ссылку, по которой нажал пользователь.

EVENT NAMEclick
link_url
https://github.com/
link_domain
github.com
outbound
true
Учебный состав события · параметры проверяем в DebugView

Также могут приходить link_id и link_classes. Значения зависят от HTML ссылки.

Автоматические измеренияИСХОДНИК 106 · 28 / 95

file_download

file_download фиксирует клик по ссылке на файл поддерживаемого расширения: например PDF, DOCX, XLSX, ZIP, CSV, MP3 или MP4.

  1. 01Ссылка на PDFнажатие
  2. 02file_downloadсигнал Google Tag

Автоматические измеренияИСХОДНИК 107 · 29 / 95

Шаг 6. Подготовить PDF для скачивания

Создайте папку assets/ и добавьте настоящий PDF. Готовый учебный файл есть в материалах этой темы.

text ·
ga4-analytics-lab/
├── assets/analytics-guide.pdf
├── index.html
├── about.html
└── contacts.html

Откройте PDF отдельно и убедитесь, что он читается. Не переименовывайте текстовый файл в .pdf.

Готовый файл: analytics-guide.pdf — положите его в папку assets/.

VS Code Explorer: файл assets/analytics-guide.pdf находится в проекте.

Автоматические измеренияИСХОДНИК 108 · 30 / 95

Шаг 7. Создать кнопку скачивания

В index.html добавьте ссылку:

html ·
<a href="assets/analytics-guide.pdf" download>
  Скачать материал
</a>
  1. 01SaveHTML и PDF
  2. 02Commitпроверить оба файла
  3. 03Pushотправить в GitHub
  4. 04Vercelдождаться Ready
VS Code: HTML-ссылка на analytics-guide.pdf с атрибутом download.

Автоматические измеренияИСХОДНИК 109 · 31 / 95

Шаг 8. Скачать файл

Откройте Production URL после публикации. Нажмите Скачать материал и проверьте, что файл действительно доступен.

Затем найдите file_download в Realtime.

Проверьте оба результата: PDF открывается, а file_download появляется в Realtime.

GA4 Realtime: событие file_download после нажатия ссылки на PDF.

Автоматические измеренияИСХОДНИК 110 · 32 / 95

Какой файл выбрали для скачивания

По параметрам видно, какой файл скачали и по какой ссылке.

EVENT NAMEfile_download
file_name
analytics-guide.pdf
file_extension
pdf
link_text
Скачать материал
link_url
https://ваш-проект.vercel.app/assets/analytics-guide.pdf
Учебный состав события · параметры проверяем в DebugView

Имя события одинаково для всех файлов. Различить их можно только по параметрам.

Форма и бизнес-смыслИСХОДНИК 111 · 33 / 95

Форма тоже может отслеживаться автоматически

При включённых Form interactions тег может автоматически собирать:

form_start
первое взаимодействие с формой в сессии
form_submit
сигнал отправки формы

Сработает ли автоматическое измерение, зависит от того, как сделана форма. Получение form_submit не подтверждает, что сервер принял заявку.

Форма и бизнес-смыслИСХОДНИК 112 · 34 / 95

Шаг 9. Form interactions

Вернитесь в настройки веб-потока и откройте Enhanced measurement.

Проверьте Form interactions / Взаимодействия с формами. Сохраните изменения, если включали измерение.

GA4: в настройках Enhanced Measurement включён пункт Form interactions.

Форма и бизнес-смыслИСХОДНИК 113 · 35 / 95

На странице должна быть форма

В шаблоне темы 5 форма имела id="contact-form". Для нового кода замените его на lead-form и сохраните блок #form-status.

html ·
<form id="lead-form">
  <label>Имя <input name="name" required></label>
  <label>Email <input name="email" type="email" required></label>
  <button type="submit">Отправить заявку</button>
  <p id="form-status" role="status"></p>
</form>

ID формы в HTML должен совпадать с селектором в JavaScript.

Форма Contacts в браузере и её HTML с id="lead-form" в VS Code.

Форма и бизнес-смыслИСХОДНИК 114 · 36 / 95

Не отправляем персональные данные в GA4

Мы измеряем действие, а не содержимое персональных полей.

Не передавайте в GA4 имя, email, телефон, пароль — ни в параметрах события, ни в URL, ни в названии страницы.

EVENT NAMEgenerate_lead
lead_source
contact_form
Учебный состав события · параметры проверяем в DebugView

Форма и бизнес-смыслИСХОДНИК 115 · 37 / 95

Шаг 10. Начать заполнять форму

Откройте Contacts, нажмите на поле и начните вводить учебные данные.

Проверьте form_start в Realtime. Для повторной проверки первого взаимодействия используйте новую сессию.

Если сигнала нет, проверьте настройку Form interactions и реализацию формы.

GA4 Realtime: событие form_start после первого взаимодействия с формой.

Форма и бизнес-смыслИСХОДНИК 116 · 38 / 95

Шаг 11. Отправить форму

Заполните обязательные поля и нажмите Отправить заявку. Проверьте form_submit в Realtime.

Пустая или невалидная форма может не вызвать submit: браузер сначала проверяет поля. Если обработчик формы вызывает preventDefault(), автоматическое измерение может не засчитать отправку: на этом сайте так и происходит.

Зафиксируйте фактический результат, а не ожидаемый. Отсутствие form_submit — тоже результат проверки.

GA4 Realtime после отправки учебной формы: form_start получен, form_submit не появился.

Форма и бизнес-смыслИСХОДНИК 117 · 39 / 95

От сигнала формы к заявке

form_submit — технический сигнал формы. Для успешного получения заявки используем generate_lead.

  1. 01Проверка полейбраузер
  2. 02Приём заявкисервер
  3. 03generate_leadпосле успеха

Рекомендуемое событиеИСХОДНИК 119 · 40 / 95

Шаг 12. Открыть script.js

Откройте js/script.js. В теме 5 там уже был обработчик #contact-form.

Замените прежний блок обработки формы новым кодом; не дописывайте второй обработчик рядом.

Функция gtag() объявлена в установленном Google Tag. Проверьте, что он сохранён в head всех трёх страниц.

VS Code: открыт js/script.js и найден блок обработки формы.

Рекомендуемое событиеИСХОДНИК 126 · 41 / 95

Разбор обработчика формы

Обработчик целиком заменяет прежний блок формы из темы 5. Разберём его построчно: нажмите строку в коде.

  1. });
  2. }
  3. 'Учебная форма проверена. Данные не отправлены.';
  4. });
  5. }

Рекомендуемое событиеИСХОДНИК 128 · 42 / 95

Шаг 13. Save → Commit → Push

Сохраните contacts.html и js/script.js. В Source Control проверьте переименование формы и замену старого обработчика.

Создайте commit Add generate_lead GA4 event и выполните Sync Changes / Push.

VS Code Source Control: изменения contacts.html и script.js готовы к коммиту.

Рекомендуемое событиеИСХОДНИК 129 · 43 / 95

Шаг 14. Проверить Deployment

Откройте Vercel → Project → Deployments.

Найдите деплой из коммита Add generate_lead GA4 event, проверьте Ready и Production.

  1. 01Commitнужная версия
  2. 02Readyпубликация завершена
  3. 03Production URLпроверяем сайт
Vercel Deployments: нужный коммит имеет статусы Ready и Production.

Рекомендуемое событиеИСХОДНИК 130 · 44 / 95

Шаг 15. Отправить тестовую заявку

Откройте Contacts на опубликованном сайте, заполните учебные поля и отправьте форму один раз.

На странице появится сообщение об учебной проверке. Затем найдите в Realtime вызов с lead_source: 'contact_form'.

Production-сайт: форма Contacts после одной успешной учебной отправки; виден URL.

Рекомендуемое событиеИСХОДНИК 131 · 45 / 95

Шаг 16. Найти generate_lead

В Reports → Realtime найдите generate_lead и сопоставьте время с отправкой формы.

Если события нет: проверьте Production-версию, ID формы, консоль, Google Tag и разрешение на аналитику.

GA4 Realtime: событие generate_lead после отправки формы.

Собственное событиеИСХОДНИК 132 · 46 / 95

Не для каждого действия есть готовое имя Google

На главной странице нужна отдельная метрика для кнопки Посмотреть программу.

Автоматический outbound click не описывает эту внутреннюю кнопку. Для нашей задачи введём Custom Event cta_click.

EVENT NAMEcta_click
button_name
program
page_section
hero
Учебный состав события · параметры проверяем в DebugView

Собственное событиеИСХОДНИК 133 · 47 / 95

Шаг 17. Подготовить HTML

В index.html добавьте кнопку с уникальным ID:

html ·
<button id="program-cta" type="button">
  Посмотреть программу
</button>

На странице оставьте один элемент с этим ID. В рабочем примере кнопка раскрывает описание программы.

VS Code: кнопка #program-cta в index.html.

Собственное событиеИСХОДНИК 135 · 48 / 95

Разбор обработчика кнопки

Кнопка уже есть в разметке. Теперь обработчик: он показывает описание программы и отправляет собственное событие. Нажмите строку, чтобы увидеть её роль.

  1. });
  2. });
  3. }

Собственное событиеИСХОДНИК 137 · 49 / 95

Стабильные имена событий

Правило курса: английские имена в lowercase_snake_case, отражающие смысл действия.

cta_click
понятное постоянное имя
course_card_open
понятное действие
button-click!!!
недопустимые символы
event_new_final
смысл неизвестен

Имена чувствительны к регистру. Начинайте с буквы, используйте буквы, цифры и подчёркивание; не берите зарезервированные имена и префиксы.

Собственное событиеИСХОДНИК 139 · 50 / 95

Шаг 18. Отправить изменения

Сохраните index.html и js/script.js. Создайте commit Add CTA analytics event и выполните Push.

В Vercel проверьте нужный commit, Ready и Production.

Source Control и Vercel: коммит CTA опубликован, deployment Ready.

Собственное событиеИСХОДНИК 140 · 51 / 95

Шаг 19. Нажать кнопку

Нажмите Посмотреть программу один раз на Production-сайте.

Найдите cta_click в Realtime. Для проверки количества и параметров затем перейдём к DebugView.

GA4 Realtime: событие cta_click после одного нажатия кнопки.

DebugViewИСХОДНИК 142 · 52 / 95

DebugView — режим диагностики GA4

DebugView показывает события устройств, для которых включён режим отладки.

Мы проверяем порядок действий, состав параметров и дубли при одном нажатии.

  1. 01Одно действиена учебном сайте
  2. 02Одно событиена debug-устройстве
  3. 03Параметрысверяем значения

DebugViewОТЛАДКА · 53 / 95

Открыть Tag Assistant

Tag Assistant включает режим отладки для одного сайта: события с него начинают приходить в DebugView вашего ресурса.

Откройте tagassistant.google.com. На странице виден список доменов и кнопка Добавить домен. Если сайт уже подключали, он будет в списке активных доменов.

Tag Assistant: список доменов и кнопка «Добавить домен».

DebugViewОТЛАДКА · 54 / 95

Подключить свой сайт

Нажмите Добавить домен. В окне вставьте свой Production URL и нажмите Подключить.

Галочка «Включить сигнал отладки в URL» добавляет к адресу параметр gtm_debug. По нему тег понимает, что страницу нужно отлаживать.

Tag Assistant: окно подключения с введённым Production URL.

DebugViewОТЛАДКА · 55 / 95

Вкладка отладки

Tag Assistant открывает ваш сайт в новой вкладке. В адресе появился gtm_debug, а внизу справа — плашка Tag Assistant подключен.

Дальше работайте именно в этой вкладке: события уходят в DebugView только отсюда. Переход по ссылкам внутри вкладки отладку не сбрасывает, а открытие сайта в другой вкладке — сбрасывает.

Вкладка отладки: адрес с gtm_debug и плашка «Tag Assistant подключен».

DebugViewОТЛАДКА · 56 / 95

Что видно в Tag Assistant

Сам Tag Assistant тоже показывает, что происходит на странице. Слева — список сообщений по порядку: инициализация, загрузка тега, затем ваши события.

Выберите событие в списке: в «Уровне данных» видно его имя и объект параметров — те самые button_name и page_section, которые вы задали в коде.

Tag Assistant: список сообщений и объект параметров события cta_click.

DebugViewОТЛАДКА · 57 / 95

Открыть DebugView

Вернитесь в GA4 и откройте Администратор → Просмотр данных → DebugView.

Экран DebugView показывает события только тех устройств, где включена отладка, поэтому вкладку Tag Assistant закрывать нельзя.

GA4: путь Администратор → Просмотр данных → DebugView.

DebugViewИСХОДНИК 144 · 58 / 95

Выбрать устройство отладки

Вверху экрана DebugView выберите своё устройство в списке Устройство для отладки. Пока подключение через Tag Assistant живо, устройство в списке есть.

Вкладку с сайтом не закрывайте: как только отладка выключится, устройство пропадёт из списка, а лента перестанет пополняться.

GA4 DebugView: открыт экран, выбрано своё debug-устройство.

DebugViewОТЛАДКА · 59 / 95

Из чего состоит экран DebugView

Экран разделён на три части.

Минуты
слева: сколько событий пришло за каждую минуту
Секунды
в центре: лента событий за выбранную минуту, сверху — самые свежие
Верхние события
справа: сводка за 30 минут

Лента обновляется сама, с задержкой в несколько секунд. Нажатие на событие открывает его параметры справа.

GA4 DebugView: минуты слева, лента секунд в центре, верхние события справа.

DebugViewОТЛАДКА · 60 / 95

Действие на сайте → событие в ленте

Проверим связь действия и записи. В отлаживаемой вкладке нажмите CTA один раз и переключитесь на DebugView.

Через несколько секунд в ленте секунд появится cta_click. Сопоставьте время нажатия и время события: так вы убеждаетесь, что в GA4 попало именно ваше действие, а не чужой визит.

Нажатие CTA на сайте и событие cta_click в ленте DebugView.

DebugViewИСХОДНИК 145 · 61 / 95

События почти по секундам

Лента DebugView показывает последовательность событий выбранного устройства. Нажатие на событие раскрывает параметры.

  1. 01page_view
  2. 02scroll
  3. 03cta_click
  4. 04page_view
  5. 05form_start
  6. 06form_submit
  7. 07generate_lead
GA4 DebugView: в ленте видна последовательность событий тестового визита.

DebugViewИСХОДНИК 146 · 62 / 95

Шаг 20. Открыть событие

Отправьте учебную форму один раз. В DebugView выберите generate_lead.

Сверьте время, имя и число срабатываний. Если для одной отправки пришло два события, найдите повторный обработчик или вторую настройку отправки.

GA4 DebugView: раскрыто событие generate_lead.

DebugViewИСХОДНИК 147 · 63 / 95

Параметр дошёл?

В параметрах generate_lead найдите:

EVENT NAMEgenerate_lead
lead_source
contact_form
Учебный состав события · параметры проверяем в DebugView

Если значения нет, проверьте объект третьего аргумента gtag(), свежий деплой и выбранное событие. Custom Dimension не нужна для просмотра параметра в DebugView.

GA4 DebugView: у generate_lead виден lead_source=contact_form.

DebugViewИСХОДНИК 148 · 64 / 95

Шаг 21. Проверить Custom Event

Нажмите CTA один раз и откройте её событие в DebugView.

EVENT NAMEcta_click
button_name
program
page_section
hero
Учебный состав события · параметры проверяем в DebugView

Сверьте оба значения. Затем повторите нажатие и проверьте, что появляется ещё одно событие, а не два.

GA4 DebugView: у cta_click видны button_name=program и page_section=hero.

Custom DimensionsИСХОДНИК 150 · 65 / 95

Параметр есть, а в отчёте его нет

В DebugView вы видели у cta_click параметр button_name = program. И DebugView, и Realtime отвечают на один вопрос: дошло ли событие прямо сейчас. Это поток последних минут с одного устройства.

Посчитать по нему, сколько нажатий собрала каждая кнопка за неделю, нельзя. За период считают отчёты, а в них cta_click — одна строка с общим числом: параметры в обработанные данные не попадают, пока их не зарегистрировали.

Что в отчёте сейчас
cta_click — 140 нажатий, все кнопки вместе
Что нужно получить
program — 90, pricing — 50
GA4 → Отчёты → Взаимодействие → События: список имён событий, параметров в таблице нет.

Custom DimensionsИСХОДНИК 150a · 66 / 95

Зачем параметр, если есть имя события

Может показаться, что параметр лишний: имя cta_click и так про кнопку. Пока кнопка на сайте одна — так и есть.

Когда кнопок станет три — в шапке, в карточке программы и в футере — появится соблазн завести cta_click_header, cta_click_footer и cta_click_pricing. Так делать не стоит: число разных имён событий в ресурсе ограничено, отчёт по каждому имени будет отдельным, и сравнить кнопки между собой в одной таблице не выйдет.

Имя события
что за действие: нажали кнопку
Параметр
какую именно кнопку и где она стоит

Поэтому приём один: общее имя события и параметр, который различает элементы. Тогда новая кнопка — это новое значение параметра, а не новое событие и не новая настройка в GA4.

Custom DimensionsИСХОДНИК 151 · 67 / 95

Шаг 22. Admin → Custom definitions

Перейдите Admin → Data display → Custom definitions (Администратор → Просмотр данных → Специальные определения).

Откройте Custom dimensions → Create custom dimension. Сначала проверьте, не зарегистрирован ли уже нужный параметр: повторная запись разреза не добавит, а место займёт.

На ресурс доступно ограниченное число разрезов с областью Event, поэтому регистрируют только те параметры, которые действительно нужны в отчётах. Для сохранения нужны права редактора ресурса.

GA4 Custom definitions: открыт список и кнопка создания определения.

Custom DimensionsИСХОДНИК 152 · 68 / 95

Шаг 23. Создать Event-scoped Dimension

Заполните форму и нажмите Save:

Dimension name
Button name
Scope
Event
Description
CTA button identifier
Event parameter
button_name

Имя параметра должно точно совпадать с ключом в JavaScript, включая регистр: button_name в коде и button_name здесь.

После сохранения в отчётах появится измерение Button name, и события cta_click можно будет разложить по кнопкам.

GA4 Create custom dimension: Event scope и параметр button_name.

Custom DimensionsИСХОДНИК 153 · 69 / 95

Шаг 24. Второй параметр

Создайте второй разрез:

Dimension name
Page section
Scope
Event
Description
Page section of CTA
Event parameter
page_section

Если параметра ещё нет в списке, введите его имя вручную. Затем отправьте новые события и дождитесь обработки.

Двух разрезов хватает, чтобы ответить на рабочий вопрос: какая кнопка и в каком блоке страницы срабатывает чаще. Когда кнопок станет больше, код менять не придётся — значения параметров просто добавятся к уже настроенным разрезам.

GA4 Create custom dimension: Event scope и параметр page_section.

Custom DimensionsОТЧЁТЫ · 70 / 95

Что настроено и где пригодится

Отдельных событий от регистрации не появится: cta_click остаётся одним событием. button_name и page_section становятся измерениями — колонками, по которым его можно разложить.

Отчёты → Взаимодействие → События
нажмите строку cta_click: под графиком появятся карточки по зарегистрированным параметрам
Исследования (Explore)
добавьте измерение Button name и метрику «Количество событий»

Дальше эти разрезы используются в теме про отчёты, а в теме про Google Tag Manager события переедут в контейнер — разрезы останутся прежними.

GA4: карточки Button name и Page section на странице события cta_click; (not set) — события до регистрации.

Custom DimensionsОТЧЁТЫ · 71 / 95

Что видно сразу, а что завтра

Важная особенность GA4: разные экраны обновляются с разной скоростью. На занятии вы увидите не всё, и это не ошибка настройки.

Сразу, за секунды
DebugView и Realtime: событие, его параметры, число срабатываний
Через сутки
раздел «События», карточки разрезов, отметка Key Event, отчёты за период

Поэтому дальше в теме мы разбираем экраны отчётов на готовых кадрах: вы увидите, где их искать и что там будет. На своём ресурсе к этим шагам возвращаются на следующем занятии — своя часть работы вынесена в домашнее задание.

Custom DimensionsОТЧЁТЫ · 72 / 95

Открыть отчёт по событиям

Откройте слева Отчёты, раздел Просмотр данных о взаимодействии и пункт События. Это отчёт за период, а не поток реального времени.

Справа вверху проверьте диапазон дат: по умолчанию стоят последние 28 дней. Если события отправлялись вчера, а диапазон заканчивается позавчера, таблица будет пустой.

GA4: путь Отчёты → Просмотр данных о взаимодействии → События.

Custom DimensionsОТЧЁТЫ · 73 / 95

Выбрать событие в таблице

В таблице перечислены имена событий и число срабатываний за период. Параметров здесь нет — ни button_name, ни lead_source.

Нажмите на имя события, разрезы которого хотите посмотреть. Для нашей кнопки это cta_click.

GA4: таблица событий за период; параметров в ней нет.

Custom DimensionsОТЧЁТЫ · 74 / 95

Найти карточки разрезов

Откроется страница события. Прокрутите её вниз: под графиком и картой идут карточки — по одной на каждый зарегистрированный параметр.

Карточка названа так, как вы назвали измерение при создании: Button name, Page section. Внутри — значения параметра и число событий с каждым значением.

GA4: карточки зарегистрированных разрезов под графиком события.

Custom DimensionsОТЧЁТЫ · 75 / 95

Почему в карточке (not set)

В карточке рядом со значением program стоит строка (not set) — и это не ошибка.

(not set) означает, что у события значения параметра нет. Обычно причин две: событие пришло до того, как разрез зарегистрировали, или код отправил событие без этого параметра.

program — 2
нажатия после регистрации разреза
(not set) — 3
нажатия до неё: значение не сохранилось

Со временем доля (not set) перестаёт расти: новые события приходят уже с параметром. Если она растёт и дальше — ищите место в коде, где событие отправляется без параметра.

GA4: карточка Button name со значениями program и (not set).

Key EventsИСХОДНИК 156 · 76 / 95

Key Event — важное действие

Key Event — событие, помеченное в ресурсе как важный результат. По ключевым событиям GA4 считает результативность: они выносятся в стандартные отчёты и позволяют сравнивать каналы не по числу визитов, а по числу заявок.

Без пометки generate_lead остаётся одной из десятка строк в списке событий, и отчёт «Источник трафика» покажет только посещения.

  1. 01generate_leadсобытие приходит
  2. 02Пометка в ресурсеразовая настройка
  3. 03Отчётызаявки рядом с источниками

Пометка не создаёт новый обработчик и не отправляет событие сама.

Key EventsИСХОДНИК 157 · 77 / 95

Шаг 25. Admin → Events

Откройте Admin → Data display → Events (Администратор → Просмотр данных → События) и найдите generate_lead на вкладке Недавние события.

Список наполняется после обработки данных, поэтому в день занятия своего события в нём обычно ещё нет. Это шаг следующего дня: сегодня достаточно убедиться, что событие приходит в Realtime.

GA4 Events: в списке найдено событие generate_lead.

Key EventsИСХОДНИК 158 · 78 / 95

Шаг 26. Mark as key event

Если generate_lead ещё не отмечено, включите Mark as key event — звезду или переключатель в текущем интерфейсе.

Звезду можно поставить только у события, которое уже есть в списке. Пока generate_lead в нём не появился, отметить его нельзя — никакого обходного пути нет, нужно дождаться обработки.

Это разовая настройка ресурса: все следующие заявки учитываются как ключевые автоматически.

GA4 Events: generate_lead отмечено как Key Event.

Key EventsИСХОДНИК 160 · 79 / 95

Шаг 27. Отправить ещё одну форму

Когда отметка поставлена, отправьте форму ещё раз и проверьте новое generate_lead в Realtime, включая карточку ключевых событий.

Сопоставьте время действия с настройкой. В обычных отчётах результат появится после обработки — и тогда по каждому источнику будет видно не только число визитов, но и число заявок.

Настройки разрезов и ключевых событий живут в ресурсе GA4, а не в коде сайта. В следующей теме события будут отправляться через Google Tag Manager, но то, что вы настроили сейчас, продолжит работать без изменений.

GA4 Realtime: новое generate_lead после настройки Key Event.

Путь пользователяИСХОДНИК 161 · 80 / 95

Вот зачем мы изучали UTM

UTM описывает привлечение, а ключевое событие — результат визита.

text ·
?utm_source=telegram&utm_medium=social&utm_campaign=ga4_lab
  1. 01Telegramссылка с UTM
  2. 02Сайтвизит
  3. 03generate_leadрезультат

ПрактикаПРАКТИКА · 81 / 95

Практика. Добавить свои метрики

Базовый набор событий готов. Добавим четыре метрики, каждую отдельным куском кода: по ним видно, как посетитель ходит по сайту и откуда он пришёл.

nav_click
по каким пунктам меню ходят
utm_visit
метки кампании из адреса страницы
read_30s
посетитель остался на полминуты
form_error
браузер не пропустил отправку формы

Код каждой метрики дальше на своём экране. Добавляйте их по одному в конец js/script.js и после каждого проверяйте событие в DebugView: так сразу видно, какой кусок не сработал.

ПрактикаПРАКТИКА · 82 / 95

Метрика 1. Клики по меню

Вопрос: какими страницами вообще пользуются. Событие отправляется при нажатии на любой пункт меню.

javascript ·
document.querySelectorAll('nav a').forEach((link) => {
  link.addEventListener('click', () => {
    gtag('event', 'nav_click', {
      link_text: link.textContent.trim(),
      from_page: document.title
    });
  });
});

querySelectorAll возвращает все ссылки меню, forEach ставит обработчик на каждую. В параметрах — текст ссылки и заголовок страницы, откуда ушли.

ПрактикаПРАКТИКА · 83 / 95

Метрика 2. Метки кампании

Самое интересное здесь — utm_visit. GA4 сам определяет источник сессии при обработке данных, но в событии метки видны сразу и в том виде, в каком их поставили в ссылке.

  1. });
  2. }

ПрактикаПРАКТИКА · 84 / 95

Метрика 3. Полминуты на странице

Вопрос: читают страницу или закрывают сразу. Событие уходит через 30 секунд, если вкладка всё ещё открыта.

javascript ·
let readCounted = false;
setTimeout(() => {
  if (readCounted || document.hidden) return;
  readCounted = true;
  gtag('event', 'read_30s', {
    page_path: window.location.pathname
  });
}, 30000);

setTimeout откладывает вызов на 30 000 миллисекунд. Флаг readCounted и проверка document.hidden не дают отправить событие дважды и засчитать вкладку, которую свернули.

ПрактикаПРАКТИКА · 85 / 95

Метрика 4. Ошибка формы

Вопрос: на каком поле посетители спотыкаются. Событие срабатывает, когда браузер не пропускает отправку формы.

javascript ·
const leadFormFields = document.querySelector('#lead-form');
if (leadFormFields) {
  leadFormFields.addEventListener('invalid', (event) => {
    gtag('event', 'form_error', {
      field_name: event.target.name || 'unknown',
      form_id: 'lead-form'
    });
  }, true);
}

Событие invalid возникает у самого поля, а не у формы, поэтому третьим аргументом стоит true: обработчик ловит событие на пути вниз. В параметр уходит имя поля, а не то, что в него ввели.

ПрактикаПРАКТИКА · 86 / 95

Как проверить новые метрики

Опубликуйте изменения и проверьте метрики по очереди.

  1. 01Менюнажать пункт
  2. 02nav_clickв DebugView
  3. 03Ссылка с UTMоткрыть
  4. 04utm_visitс параметрами
  5. 05Полминутына странице
  6. 06read_30sодно событие
  7. 07Пустая формаотправить
  8. 08form_errorимя поля

Ссылка для проверки меток:

text ·
https://ВАШ-ПРОЕКТ.vercel.app/?utm_source=telegram&utm_medium=social&utm_campaign=ga4_lab

Путь пользователяИСХОДНИК 162 · 87 / 95

Источник визита и результат

Сравним учебные числа: сколько пользователей пришло и сколько оставило заявку.

Учебный пример, не данные аккаунта
ИсточникПользователиС заявкойДоля
Telegram1001212%
VK18073,9%
Direct50918%

Сравнивайте источники за один период и по одному определению заявки.

Путь пользователяИСХОДНИК 163 · 88 / 95

Один пользователь = последовательность событий

По последовательности событий видно, что посетитель делал на сайте.

  1. 01session_start
  2. 02page_view
  3. 03scroll
  4. 04cta_click
  5. 05page_view
  6. 06form_start
  7. 07form_submit
  8. 08generate_lead

Состав и порядок проверяем на своём устройстве. Некоторые действия пользователь может пропустить.

Путь пользователяИСХОДНИК 164 · 89 / 95

Мы уже собираем данные для Funnel

Из событий можно собрать воронку с заданным порядком шагов.

page_view1000
cta_click300
form_start120
generate_lead80

Каждый следующий шаг считает пользователей, прошедших предыдущие этапы.

Путь пользователяИСХОДНИК 165 · 90 / 95

Проверенный набор измерений

Теперь в учебном проекте настроены ручные generate_lead и cta_click, а автоматические измерения проверены на практике.

Сбор
Google Tag + Enhanced Measurement
Контекст
UTM + event parameters
Проверка
Realtime + DebugView
Анализ
Custom Dimensions + Key Event

Код в редакторе и событие в GA4 проверяют по отдельности.

Путь пользователяИСХОДНИК 166 · 91 / 95

Контрольные артефакты

Сохраните подтверждения того, что всё работает:

Для отчёта студента нужны 15 подтверждений из списка выше. Полный набор кадров пошаговой инструкции лежит в материалах темы.

Путь пользователяИСХОДНИК 167 · 92 / 95

Объясните устройство измерений

Разберите на своём проекте:

Event и parameter

Event описывает действие; parameter уточняет подробности. Например, cta_click и button_name=program.

Automatic, Recommended и Custom

Автоматическое измерение выполняет тег; рекомендуемое имя Google реализуем сами; собственное имя определяем для своей задачи.

DebugView и Custom Dimension

DebugView показывает параметр конкретного события. Custom Dimension регистрирует разрез для отчётов.

Key Event

Это статус важного действия в ресурсе GA4. Он сам не создаёт событие и не добавляет обработчик.

Покажите код обработчика, событие в DebugView и настройку соответствующего разреза или ключевого события.

Путь пользователяИСХОДНИК 168 · 93 / 95

От действия пользователя до аналитики

Как данные проходят путь от действия на сайте до отчёта:

  1. 01USER ACTIONдействие
  2. 02JS / Enhancedизмерение
  3. 03GOOGLE TAGотправка
  4. 04GA4приём
Realtime / DebugView
оперативная проверка
Custom Dimensions
разрезы для отчётов
Key Events
статус важного действия
Reports / Explore
анализ обработанных данных

Путь пользователяИСХОДНИК 169 · 94 / 95

Изменение измерения требует публикации

Чтобы измерить CTA, мы изменили JavaScript и опубликовали новую версию сайта.

javascript ·
programCta.addEventListener('click', () => {
  gtag('event', 'cta_click', {
    button_name: 'program', page_section: 'hero'
  });
});

Каждый новый обработчик — это снова правка кода, commit, push и ожидание деплоя.

Путь пользователяИСХОДНИК 170 · 95 / 95

Google Tag Manager

Следующая тема — Google Tag Manager: контейнер, теги, триггеры, переменные и Preview Mode.

  1. 01WEBSITEустановленный контейнер
  2. 02GTMправило отправки
  3. 03GA4событие

Попробуем настроить измерение клика в интерфейсе GTM. При переходе проверим, что старый JavaScript не дублирует новую отправку.

Тема 6 · 95 слайд

Сохранены исходные номера сценария; дублирующие экраны пропущены. Прямая ссылка: index.html#147.

Источники и материалы

Итоговая версия: 95 слайд из авторского сценария 89–170. Технические сведения сверены с документацией Google.

Enhanced Measurement ↗Рекомендуемые события ↗DebugView ↗Custom Dimensions ↗Key Events ↗Имена событий ↗

55 кадров пошаговой инструкции перечислены в материалах.

Материалы и рабочий пример →

Скриншот