
Consent Mode v2 и учёт заявок: как проверить согласие, форму и события GA4
Работающий баннер ещё не доказывает, что аналитика соблюдает выбор посетителя. А событие заявки не подтверждает продажу. На примере реализации Salestudia.com разбираем, что именно проверять: загрузку Google-тега, изменения согласия, успешную отправку формы и содержимое аналитических запросов.
В этой статье
- Сначала определите, что означает ваша «заявка»
- Что меняет выбор Basic или Advanced
- Четыре сигнала согласия и их значения
- Баннер нужно проверять и после первого нажатия
- Отделите интерес от подтверждённой отправки
- Почему ошибка и долгое ожидание не должны превращаться в успех
- Проверяйте содержимое аналитики, а не только названия событий
- Проверьте согласие в сетевых запросах браузера
- Отдельно проверьте форму и аварийные сценарии
- Сопоставьте запрос, событие и фактическое обращение
Сначала определите, что означает ваша «заявка»
В нашем случае событие generate_lead означает: браузер получил успешный HTTP-ответ от сервиса Formspree на отправку заполненной формы. Аналитика учитывает это действие только при разрешении посетителя. Это конкретный технический критерий, который можно воспроизвести и проверить.
Он не подтверждает доставку уведомления в почтовый ящик, реальность компании или готовность человека купить. Эти этапы проверяются отдельно: сначала поступление обращения, затем его содержание и соответствие услугам, позже — договор или оплата. Поэтому число событий в GA4 нельзя без проверки подписывать как число клиентов.
Google рекомендует generate_lead для возникновения обращения, например через форму, и выделяет последующую квалификацию и превращение лида в клиента в отдельные события. На Salestudia.com автоматическая передача таких последующих статусов сейчас не реализована. Владельцу бизнеса полезно начать с определения каждого этапа и ответственного за его подтверждение.
Что меняет выбор Basic или Advanced
Consent Mode управляет поведением Google-тегов в зависимости от согласия. Сам баннер получает выбор человека, а код должен связать этот выбор с фактической загрузкой и работой аналитики. Наличие красивого окна не заменяет этой связи.
В Basic Google-теги блокируются до разрешения; при отказе данные Google не отправляются. В Advanced теги загружаются с исходными ограничениями и могут отправлять сигналы без аналитических cookie. Поэтому пустой список cookie и отсутствие сетевых запросов — разные результаты проверки.
На Salestudia.com выбран Basic. Без согласия тег не создаётся; после разрешения он работает в отдельном служебном фрейме. Просмотры и предусмотренные действия передаются ему из приложения. Это особенность нашего кода, а не обязательная архитектура Consent Mode. Подключение рассчитано на основной адрес https://salestudia.com: предварительная версия сайта не подходит для проверки реального сбора. Рекламные технологии на .com отключены.
Четыре сигнала согласия и их значения
Разрешение аналитики не должно автоматически включать рекламные категории. Для нашей реализации исходные значения всех четырёх сигналов — denied. После согласия меняется только analytics_storage. Эти значения описывают техническую настройку; сами по себе они не доказывают соблюдение всех применимых требований к обработке данных.
| Сигнал | Назначение | Без согласия / после разрешения аналитики |
|---|---|---|
| analytics_storage | Хранение для аналитики | denied → granted |
| ad_storage | Хранение для рекламы | denied → denied |
| ad_user_data | Передача пользовательских данных Google для рекламы | denied → denied |
| ad_personalization | Персонализация рекламы | denied → denied |
До согласия в Basic эти исходные настройки не означают, что браузер уже отправляет Google уведомление об отказе. Google-тег остаётся заблокированным. При реализации важно соблюдать порядок: ограничения заданы до обработки измерений, затем применяется сделанный выбор.
Баннер нужно проверять и после первого нажатия
В баннере доступны принятие, отказ и настройки. Повторно открыть выбор можно через «Настройки cookie» в футере. В коде выбор сохраняется локально на срок до 180 дней вместе с датой и версией; устаревшая или недействительная запись требует нового выбора.
При отзыве разрешения приложение останавливает новые измерения, удаляет служебный фрейм и пытается очистить доступные cookie GA4. Страница не перезагружается, заполненная форма сохраняется. Уже отправленные события от этого не исчезают; начавшийся до отзыва запрос нельзя считать доказательством нового измерения после отказа.
Если браузер запрещает локальное хранение, выбор действует в памяти страницы и после перезагрузки баннер может появиться снова. Между вкладками предусмотрена синхронизация, когда браузер поддерживает соответствующий обмен. Поэтому проверка включает перезагрузку, вторую вкладку и отзыв разрешения, а не заканчивается исчезновением баннера.
Отделите интерес от подтверждённой отправки
События отвечают на разные вопросы. page_view показывает просмотр, service_view — просмотр страницы услуги, quote_request_click — нажатие призыва к обращению. email_click, phone_click и whatsapp_click фиксируют переход по соответствующей ссылке: они не подтверждают отправленное письмо, состоявшийся разговор или сообщение.
form_start отмечает первый ввод в конкретный экземпляр формы. form_error сообщает категорию сбоя, generate_lead — подтверждённую отправку. Называть все эти действия одинаковыми конверсиями неудобно: тогда рост любопытства трудно отличить от роста поступивших обращений.
Есть важная граница: события до разрешения не накапливаются для последующей отправки. Если человек начал заполнять форму без аналитики, а согласился позже, начало не воспроизводится задним числом. Успешная заявка при действующем согласии может поэтому появиться без form_start. Воронка «просмотр → начало → отправка» не является полным журналом всех посетителей.
Почему ошибка и долгое ожидание не должны превращаться в успех
После отправки форма ожидает ответ сервиса. При успешном ответе показывает подтверждение, передаёт generate_lead при согласии и открывает страницу благодарности. Сам просмотр этой страницы событие заявки не создаёт: её обновление не должно добавлять ещё один лид.
В текущем коде ожидание ограничено 20 секундами. Если подтверждение не получено, интерфейс сохраняет поля и предупреждает, что заявка могла быть доставлена. Прерывание ожидания в браузере не отменяет уже выполненную обработку на стороне сервиса. Поэтому правильное следующее действие — уточнить получение, прежде чем отправлять повторно. Поздний ответ после истечения срока не должен переключать интерфейс в успех и создавать ложное событие.
Повторные клики блокируются на время отправки и после подтверждённого успеха. Дополнительная проверка идентификатора препятствует повторному учёту той же отправки в документе. Это локальная защита: она не объединяет одного человека между вкладками, устройствами или новыми отправками и не заменяет поиск дублей в CRM.
Проверяйте содержимое аналитики, а не только названия событий
Контактные данные нужны для ответа на обращение и передаются сервису формы. Для GA4 приложение пропускает только заранее разрешённые параметры: название формы, категорию услуги, место кнопки и тип ошибки. Имя, email, контактный телефон, компания и свободное описание задачи в этот набор не входят. Идентификатор отправки также не передаётся в GA4.
Риск существует и в адресах страниц: имя или email иногда попадают в параметры ссылки. Здесь page_location и заголовок формируются из реестра страниц; строка запроса и фрагмент исключены. Для источников используются известные домены без их путей и параметров, а для UTM — конечные списки допустимых значений. Неизвестное название кампании не отправляется просто потому, что похоже на безопасный текст.
Это ограничение передаваемого приложением содержимого, а не утверждение, что GA4 вообще не использует технические идентификаторы. Google отдельно предостерегает от передачи PII через поля, URL, заголовки и кампании. При каждой новой форме или схеме меток эту проверку необходимо повторять.
Проверьте согласие в сетевых запросах браузера
Ниже приведено ожидаемое поведение текущей реализации и порядок самостоятельной проверки. Откройте основной сайт в чистом профиле, запустите DevTools → Network до перезагрузки. Проверьте отдельно загрузку gtag/js и запросы collect к доменам Google Analytics. Один фильтр collect не показывает, загружался ли сам тег.
| Действие | Ожидаемое поведение | Если результат отличается |
|---|---|---|
| Перезагрузка без сохранённого выбора | Нет загрузки Google-тега и запросов измерения Google | Искать второй тег, сохранённое согласие или расширение браузера |
| Отклонить, перейти на другую страницу | Аналитика остаётся выключенной; сайт доступен | Проверить обработчик отказа и загрузку сторонних скриптов |
| Разрешить аналитику | Загружается тег; отправляется page_view текущей страницы | Проверить домен, блокировщик, сеть и применение выбора |
| Перезагрузить после разрешения | Выбор сохраняется; измерение начинается согласно ему | Проверить запись, её срок и доступность хранилища |
| Отозвать разрешение и затем перейти по сайту | Новые измерения прекращаются; доступные cookie GA4 удаляются | Очистить журнал после отзыва и проверить время старта новых запросов |
| Перезагрузить после отзыва | Сохранённый отказ не разрешает тег | Проверить, не восстановилось ли прежнее согласие |
Для разбора сигналов можно использовать Tag Assistant. Оценивать режим по одному закодированному полю запроса ненадёжно: важны последовательность действий и поведение тега. Сохраняйте результаты с временем и сценарием, скрывая пользовательские идентификаторы и содержимое заявок.
Отдельно проверьте форму и аварийные сценарии
Используйте согласованную тестовую заявку, чтобы команда не приняла её за клиента. Сначала разрешите аналитику; затем выполните сценарии ниже. Ошибку сервера и задержку надёжнее воспроизводить вместе с разработчиком через контролируемую подмену ответа. Медленный интернет не гарантирует нужную задержку именно формы.
| Сценарий | Ожидаемые события и интерфейс | Что проверить при расхождении |
|---|---|---|
| Неполные обязательные поля | Подсказки; form_error с validation; нет generate_lead | Не привязано ли событие успеха к нажатию кнопки |
| Успешный ответ сервиса | Подтверждение; один generate_lead; переход на страницу благодарности | Сверить ответ формы, событие и поступление тестовой заявки |
| Два быстрых нажатия | Одна активная отправка | Проверить блокировку до начала асинхронного запроса |
| Ошибка сети или неуспешный ответ | Поля сохранены; form_error; нет подтверждённого успеха | Разделить запрос формы и запрос аналитики |
| Ответ не получен за 20 секунд | Предупреждение о неизвестном результате; form_error с network; без generate_lead | Проверить поздний ответ и отсутствие автоматической повторной отправки |
| Успешная отправка после отказа от аналитики | Форма работает; события Google не отправляются | Проверить независимость доставки заявки от аналитики |
Обновите страницу благодарности отдельно: ожидается просмотр при согласии, но не новая заявка. Повторите ключевые сценарии на мобильном устройстве. Отправку без JavaScript также проверяют отдельно: нативная форма может работать, однако браузерного события GA4 в этом сценарии нет.
Сопоставьте запрос, событие и фактическое обращение
Успешный сетевой ответ на collect показывает, что запрос завершился; этого недостаточно для вывода о корректности всех отчётов. Проверьте событие и его параметры в GA4. Для DebugView нужен включённый режим отладки: простой переход по сайту не обязан там появляться. В нашей архитектуре разработчику следует убедиться, что отладка включена именно для тега в служебном фрейме.
Google предупреждает, что ограничения конфиденциальности и отсутствие согласия могут исключать события из DebugView. Данные об источниках в оперативных представлениях ограничены; окончательную атрибуцию нужно оценивать в отчётах привлечения после обработки. Поэтому пустой экран сам по себе не указывает, какой слой неисправен.
Для владельца полезен короткий журнал проверки: дата, действие, состояние согласия, ответ формы, событие, получение обращения. Расхождения разбирают по этой цепочке. GA4 показывает измеренные взаимодействия согласившихся посетителей; система обработки обращений — поступившие запросы; CRM — их качество и итог. Сопоставление этих трёх источников даёт основание улучшать маркетинг без подмены заявок кликами и продаж — событиями.
Официальные и профильные ссылки
Эти материалы дают контекст для данных, правил и рекомендаций на странице.
- Google: принципы Consent Mode Источник проверен: 14.09.2026
- Google: настройка Consent Mode Источник проверен: 14.09.2026
- Google: диагностика Consent Mode Источник проверен: 14.09.2026
- Google Analytics: рекомендованные события лидов Источник проверен: 14.09.2026
- Google Analytics: предотвращение передачи PII Источник проверен: 14.09.2026
- Google Analytics: DebugView Источник проверен: 14.09.2026
Удобнее написать напрямую?
Коротко укажите компанию, рынок и задачу — так разговор будет предметнее.