Перейти к содержанию
Innovialabs

Как отслеживать отправку форм через Google Tag Manager

Практика3 мин

Коротко

Самый надёжный способ — попросить разработчика отправлять в 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:

  1. Переменные → Пользовательские → Переменная уровня данных: создайте form_name и form_location.
  2. Триггеры → Пользовательское событие, имя события form_submit_success.
  3. Используйте этот триггер в тегах ниже.

Не передавайте в 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), чтобы они не срабатывали до разрешения пользователя там, где это требуется.

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

  1. Нажмите Предварительный просмотр в GTM и отправьте форму на сайте.
  2. В Tag Assistant убедитесь, что событие появилось и все теги в статусе «Сработал».
  3. Проверьте отчёт GA4 DebugView, а для Метрики — режим ?_ym_debug=1.
  4. Отправьте форму с ошибкой валидации — теги не должны сработать.
  5. Только после этого опубликуйте контейнер с понятным описанием версии.

Частые вопросы

Скорее всего, форма отправляется через JavaScript без стандартного события submit, или скрипт останавливает его распространение. Переходите на dataLayer или видимость элемента.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.