Как отслеживать отправку форм через Google Tag Manager
Практика3 минРедакция Innovialabs
Коротко
Самый надёжный способ — попросить разработчика отправлять в dataLayer событие после успешной отправки формы и ловить его в GTM триггером «Пользовательское событие». Из одного триггера затем отправляются теги в GA4, Яндекс Метрику и рекламные пиксели.
Короткий ответ
В Google Tag Manager отправку формы можно поймать четырьмя способами. Лучший из них — событие в dataLayer, которое сайт отправляет только после того, как сервер подтвердил приём заявки. Остальные способы подходят, когда доступа к коду нет, но каждый имеет слабые места.
Сравнение способов
| Способ | Как работает | Плюсы | Минусы |
|---|---|---|---|
| Триггер «Отправка формы» | Ловит стандартное событие submit | Без участия разработчика | Часто не срабатывает на AJAX-формах; может считать неуспешные отправки |
| Видимость элемента | Срабатывает, когда на экране появляется сообщение «Спасибо» | Работает с AJAX-формами | Ломается при смене вёрстки или текста |
| Страница благодарности | Просмотр страницы /thank-you | Просто и прозрачно | Нужен редирект; дубли при обновлении страницы |
| dataLayer push | Сайт сам сообщает об успешной отправке | Самый точный, можно передать параметры | Нужен разработчик |
Способ 1: dataLayer — рекомендуемый
Разработчик добавляет код в обработчик успешного ответа сервера:
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'form_submit_success',
form_name: 'brief',
form_location: 'contacts'
});
В GTM:
- Переменные → Пользовательские → Переменная уровня данных: создайте
form_nameиform_location. - Триггеры → Пользовательское событие, имя события
form_submit_success. - Используйте этот триггер в тегах ниже.
Не передавайте в dataLayer имя, телефон и email — в аналитику персональные данные отправлять нельзя.
Способ 2: триггер «Отправка формы»
Включите встроенные переменные Form (Form ID, Form Classes). Создайте триггер типа Отправка формы, отметьте «Проверять ошибки» (Check Validation), чтобы не считать формы, отправку которых отменил скрипт проверки. Ограничьте триггер нужной формой по Form ID. Обязательно проверьте в режиме предпросмотра — у форм на JavaScript-фреймворках триггер часто молчит.
Способ 3: видимость элемента
Триггер Видимость элемента по CSS-селектору сообщения об успехе, например .form-success. Выберите «Один раз на страницу» и включите «Отслеживать изменения DOM» — сообщение появляется уже после загрузки страницы. Договоритесь с разработчиком, чтобы этот класс не меняли.
Способ 4: страница благодарности
Триггер Просмотр страницы с условием Page Path равно /thank-you. Чтобы не было дублей, страница не должна открываться напрямую, а заявка — повторно отправляться при обновлении. Для нескольких форм используйте разные страницы или параметр в адресе.
Отправляем событие в GA4, Метрику и пиксели
К одному триггеру form_submit_success привяжите несколько тегов.
GA4. Тег Google Analytics: событие GA4, имя события generate_lead — это рекомендуемое событие Google для заявок. Параметры: form_name = {{form_name}}. Затем в интерфейсе GA4 отметьте событие как ключевое (конверсию).
Яндекс Метрика. Если счётчик установлен на сайте, достаточно тега Пользовательский HTML:
<script>
ym(XXXXXXXX, 'reachGoal', 'form_submit_success');
</script>
В Метрике создайте цель типа JavaScript-событие с тем же идентификатором.
Meta Pixel. Пользовательский HTML с вызовом стандартного события:
<script>
fbq('track', 'Lead');
</script>
Google Ads. Тег Отслеживание конверсий Google Ads с ID и меткой конверсии из кабинета.
Если на сайте есть баннер согласия на cookie, настройте теги с учётом согласия (Consent Mode), чтобы они не срабатывали до разрешения пользователя там, где это требуется.
Как проверить
- Нажмите Предварительный просмотр в GTM и отправьте форму на сайте.
- В Tag Assistant убедитесь, что событие появилось и все теги в статусе «Сработал».
- Проверьте отчёт GA4 DebugView, а для Метрики — режим
?_ym_debug=1. - Отправьте форму с ошибкой валидации — теги не должны сработать.
- Только после этого опубликуйте контейнер с понятным описанием версии.