Как настроить событие в GTM: тег и триггер
Пошаговая инструкция: настроить кастомный тег и триггер в GTM для отслеживания клика по кнопке — dataLayer.push, Custom Event trigger, GA4 event. Проверка через Preview.
Содержание
Настроить событие в GTM — значит связать тег, триггер и (при необходимости) переменные так, чтобы нужное действие пользователя автоматически отправляло данные в GA4 или другой инструмент. Конкретный пример, который разберём в этой статье: клик по CTA-кнопке → dataLayer.push → Custom Event Trigger → GA4 Event Tag.
Если вы ещё не устанавливали GTM — сначала прочитайте основы Google Tag Manager.
Три кита GTM: тег, триггер, переменная
Прежде чем настраивать конкретное событие, нужно понять структуру GTM. Вся логика строится на трёх сущностях:
| Сущность | Вопрос | Пример |
|---|---|---|
| Тег | Что сделать? | Отправить GA4 Event с именем button_click |
| Триггер | Когда сделать? | Когда срабатывает Custom Event cta_clicked |
| Переменная | С какими данными? | {{DLV - button_id}} = значение из dataLayer |
Тег без триггера молчит. Триггер без тега — условие в пустоте. Они всегда идут в паре.
Типы тегов
В GTM есть встроенные шаблоны для самых популярных инструментов:
- GA4 Event — отправляет событие в Google Analytics 4
- GA4 Configuration — инициализирует GA4 (базовый тег на все страницы)
- Google Ads Conversion Tracking — фиксирует конверсии Google Ads
- Google Ads Remarketing — пиксел ремаркетинга
- Custom HTML — произвольный JavaScript-код
Помимо встроенных — Community Template Gallery с сотнями готовых шаблонов: Meta Pixel, TikTok Pixel, LinkedIn Insight, Hotjar, Microsoft Clarity. Искать через Tags → New → поиск по названию.
Типы триггеров
Каждый триггер слушает определённый тип события на странице:
| Триггер | Когда срабатывает |
|---|---|
| Page View | При загрузке страницы |
| DOM Ready | Когда DOM построен (позже Page View) |
| Window Loaded | После полной загрузки (все ресурсы) |
| All Clicks | Любой клик по любому элементу |
| Just Links | Только клики по ссылкам <a> |
| Form Submission | Отправка формы |
| Scroll Depth | Прокрутка на N% или N пикселей |
| Element Visibility | Элемент появился в viewport |
| YouTube Video | Start/progress/complete для embedded видео |
| Timer | Через N миллисекунд после загрузки |
| History Change | Изменение URL без reload (SPA: React/Vue/Angular) |
| Custom Event | Кастомное событие из dataLayer.push({event: '...'}) |
Встроенные переменные: включить перед началом работы
У GTM есть встроенные переменные (Built-in Variables), но по умолчанию большинство отключено. Первый шаг после создания контейнера:
Variables → Built-in Variables → Configure
Включите группы:
- Pages: Page URL, Page Hostname, Page Path
- Clicks: Click Element, Click Classes, Click ID, Click Target, Click URL, Click Text
- Forms: Form Element, Form Classes, Form ID, Form Target, Form Text, Form URL
- Scrolling: Scroll Depth Threshold, Scroll Depth Units, Scroll Direction
- Videos: Video Provider, Video Status, Video URL, Video Title, Video Duration, Video Current Time, Video Percent, Video Visible
После этого они доступны в тегах и триггерах как {{Page URL}}, {{Click Text}} и т.д.
dataLayer: правильный подход к передаче данных
DOM-скрапинг (считывать текст кнопки через {{Click Text}}) — удобный старт, но хрупкий в production: изменили класс или текст кнопки при редизайне — трекинг тихо сломался, и никто не заметил.
Надёжный подход — dataLayer.push: разработчик добавляет одну строку в обработчик события, а GTM ловит его через Custom Event Trigger.
Схема работы:
Пользователь нажимает кнопку
↓
JavaScript-обработчик выполняет dataLayer.push({
event: 'cta_clicked',
button_id: 'hero-signup',
section: 'homepage'
})
↓
GTM Custom Event Trigger слушает event = 'cta_clicked'
↓
Тег GA4 Event срабатывает → отправляет событие в GA4
Преимущества:
- Разработчик явно определяет, что трекировать — никакой «магии из DOM»
- При редизайне вёрстки push не ломается
- Можно передавать любые данные: ID товара, сумму, название категории
- Отладка понятна: push виден в консоли и в Tag Assistant
Практический пример: отслеживание клика по кнопке
Разберём полную последовательность от кода до GA4 события.
Шаг 1: Разработчик добавляет dataLayer.push
На кнопке «Зарегистрироваться» (или любой CTA) разработчик добавляет обработчик:
// Вариант 1: HTML атрибут onclick
<button
onclick="window.dataLayer.push({
event: 'cta_clicked',
button_id: 'hero-signup',
section: 'homepage'
})">
Зарегистрироваться
</button>
// Вариант 2: JavaScript EventListener (лучший стиль)
document.getElementById('hero-signup-btn').addEventListener('click', function() {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'cta_clicked',
button_id: 'hero-signup',
section: 'homepage',
button_text: this.innerText
});
});
// Вариант 3: jQuery (если есть на сайте)
$('#hero-signup-btn').on('click', function() {
dataLayer.push({
event: 'cta_clicked',
button_id: 'hero-signup',
section: 'homepage'
});
});
Строка window.dataLayer = window.dataLayer || []; — защита на случай, если GTM ещё не загрузился.
Название события (event) — произвольная строка в snake_case. Рекомендую схему <объект>_<действие>: cta_clicked, form_submitted, video_started, product_added.
Шаг 2: Создать Custom Event Trigger в GTM
- В GTM → Triggers → New
- Название триггера:
Custom Event - cta_clicked - Trigger Configuration → клик на тип → Custom Event
- Event Name:
cta_clicked(ровно то, что вeventпри push) - Fire on: All Custom Events (или выберите «Some Custom Events» и добавьте условие — например, только если
{{DLV - section}}=homepage) - Сохранить
Шаг 3: Создать Data Layer Variables (для передачи параметров)
Чтобы передать button_id и section в GA4, создайте две Data Layer Variables:
Variables → New → Variable Configuration → Data Layer Variable
Переменная 1:
- Название:
DLV - button_id - Data Layer Variable Name:
button_id - Data Layer Version: Version 2
Переменная 2:
- Название:
DLV - section - Data Layer Variable Name:
section - Data Layer Version: Version 2
Теперь {{DLV - button_id}} и {{DLV - section}} доступны в тегах.
Шаг 4: Создать GA4 Event Tag
- Tags → New
- Название тега:
GA4 Event - cta_clicked - Tag Configuration → Google Analytics: GA4 Event
- Configuration Tag: выберите ваш GA4 Configuration Tag (или введите Measurement ID
G-XXXXXXXXXXвручную) - Event Name:
cta_clicked(илиbutton_click— как назвали в GA4) - Event Parameters → Add Parameter:
- Parameter Name:
button_id| Value:{{DLV - button_id}} - Parameter Name:
section| Value:{{DLV - section}}
- Parameter Name:
- Triggering → выберите триггер
Custom Event - cta_clicked - Сохранить
Шаг 5: Проверить в Preview Mode
GTM Preview — обязательный шаг перед публикацией.
- Нажмите Preview (кнопка в правом верхнем углу GTM)
- В окне Tag Assistant введите URL вашего сайта → Connect
- На странице откроется debug-баннер внизу; Tag Assistant — в новой вкладке
- Нажмите кнопку (кликните по CTA)
- В Tag Assistant → Summary → появится событие
cta_clicked - Кликните на событие → вкладка Tags: ваш тег
GA4 Event - cta_clickedдолжен быть в Fired (зелёный) - Вкладка Variables: проверьте, что
{{DLV - button_id}}=hero-signup,{{DLV - section}}=homepage - Вкладка Data Layer: виден полный push-объект
Если тег в Not Fired (серый) — проверьте название события в триггере (оно должно совпадать с event в push символ в символ, регистр важен).
Шаг 6: Опубликовать
- Закройте Preview
- Submit → Create Version
- Добавьте описание: «GA4 Event tracking для CTA кнопок»
- Publish
После публикации конфигурация активна для всех посетителей.
Проверка в GA4 DebugView
После публикации событие можно проверить в GA4 → Admin → DebugView:
- Откройте сайт в Chrome с расширением Google Analytics Debugger (или
?_debug=1в URL если настроен GA4 Debug Mode) - GA4 → Admin → DebugView → найдите своё устройство
- Кликните по кнопке на сайте
- В DebugView появится событие
cta_clickedс параметрамиbutton_idиsection
Если событие не появляется в DebugView в течение 30 секунд — скорее всего тег не срабатывает. Возвращайтесь в Preview Mode и ищите ошибку в триггере или теге.
В обычных отчётах GA4 → Events новое событие появится через 24-48 часов после первого зафиксированного хита.
Типичные ошибки при настройке событий в GTM
Название события в триггере не совпадает с push.
cta_Clicked≠cta_clicked— GTM чувствителен к регистру. Проверяйте символ в символ.Забыли включить встроенные переменные. Сделали триггер «All Clicks», а
{{Click Text}}— пустой. Variables → Configure → включите Clicks.Тег срабатывает дважды. Частая причина — и Click Trigger, и Custom Event Trigger привязаны к одному тегу. Или Custom Event Trigger с «All Custom Events» ловит события других push-ов (например,
gtm.domилиpageview).dataLayer.push до загрузки GTM. Если push происходит в
<head>до кода GTM — инициализируйте массив первой строкой:window.dataLayer = window.dataLayer || [];. GTM подхватит push ретроактивно при загрузке.Data Layer Variable Version 1 вместо Version 2. В старых контейнерах GTM Version 1 — если значение пустое, попробуйте изменить на Version 2 (или Auto-detect).
Проверка только в Preview без Submit. После Preview изменения не публикуются автоматически — нужен Submit. Классическая ситуация: «у меня всё работало, но после релиза не трекируется» — потому что изменения остались в Preview-режиме.
Тег без GA4 Configuration Tag. GA4 Event Tag требует либо привязанного Configuration Tag, либо Measurement ID в поле. Если Configuration Tag не загрузился раньше — event не отправится.
Забыли отметить событие как Key Event в GA4. Если цель трекинга — конверсия, после того как событие появилось в GA4 → Events, отметьте его как Key Event (ранее «Conversion»): Events → найдите событие → тумблер «Mark as key event».
Альтернативный подход: Click Trigger без dataLayer
Если разработчика нет, а нужно быстро отследить клик — можно обойтись встроенным Click Trigger:
- Triggers → New → All Clicks (или Just Links для ссылок)
- Fire on: Some Clicks
- Условие:
Click IDequalshero-signup-btn(илиClick Classescontainscta-button) - Привязать к GA4 Event Tag с Event Name
button_click
Параметры передавать через встроенные переменные: {{Click Text}}, {{Click ID}}, {{Click Classes}}, {{Page Path}}.
Когда это подходит:
- Прототип или A/B-тест, где точность не критична
- Статические сайты без JS-обработчиков
- Нет доступа к коду для добавления push-ов
Когда обязательно нужен dataLayer:
- E-commerce: передавать item_id, цену, количество
- Авторизация: передавать user_type, plan
- Везде, где данные есть только в JS, но не в вёрстке
Что настраивать дальше
После того как базовый Custom Event Trigger работает, типичные следующие шаги:
- Enhanced Ecommerce: отслеживание
view_item,add_to_cart,purchaseс массивомitems[]— отдельный большой раздел - Form tracking: Custom Event на
form_submitс передачей ID формы и результата валидации - Scroll depth: встроенный Scroll Depth Trigger → GA4 Event
scrollс параметромpercent_scrolled - Video tracking: YouTube Video Trigger для отслеживания
video_start,video_complete - Consent Mode v2: цепочка Default Consent → Banner → Update Consent (требование для Google Ads в ЕС с марта 2024)
Все эти настройки живут в том же GTM-контейнере и используют ту же логику: тег + триггер + переменные.
Связанные материалы
Раздел:
Глоссарий:
- Тег — что это в GTM
- Триггер — что это в GTM
- dataLayer — структура и принципы
- Событие (Event) в GA4 и GTM
Инструменты:
- GA4 Event Builder — проверить схему события перед отправкой
Похожие статьи
Google Tag Manager: что это и как настроить теги
Полное руководство по Google Tag Manager для начинающих: что такое GTM, как установить, как работают теги/триггеры/переменные, dataLayer, Preview Mode, server-side GTM и Consent Mode v2.
GlossaryТриггер (Trigger) в GTM: полное руководство — типы, фильтры, Trigger Groups, Exceptions
Что такое триггер в Google Tag Manager, все 13 типов триггеров (Page View, Click, Form, Custom Event, Scroll), Trigger Groups, Exceptions, как настроить условия и исключения.
GtmdataLayer: как работает и как использовать
dataLayer — глобальный массив между сайтом и GTM. Как устроен, как правильно пушить события, читать значения через переменные и избегать типичных ошибок.