Перейти к содержимому
Назад в Академию

Digital-аналитика: как убедиться, что событие считает заявки, а не клики

04.03Digital-экосистема
Содержание статьи

Онлайн-школа в Алматы продаёт курс по аналитике за 25 000 ₸ и тратит на рекламу в Instagram 120 000 ₸ в неделю (цифры в уроке условные). В понедельник таргетолог присылает отчёт из GA4: с рекламы пришло 40 заявок, по 3 000 ₸ каждая. Менеджер открывает CRM и находит с теми же метками только 34. Владелец пишет в рабочий чат: «Кто из вас врёт?»

Может быть, никто. GA4 считает, сколько раз сработало событие, а CRM - сколько заявок сохранилось. Эти числа совпадут, только если событие отправляется ровно тогда, когда заявка сохранена. В этом уроке вы запишете такое условие для одной формы, проверите её на ошибках и повторных отправках и научитесь сверять две цифры, не назначая виноватого.

Два исхода отправки формы

  • Email не заполнен

    Форма подсветила ошибку.

    Новых заявок в CRM: 0

    Событий generate_lead: 0

  • Сервер сохранил заявку

    В CRM появилась заявка 017.

    В DebugView один generate_lead.

    form_name = course_signup

generate_lead отправляют, когда сервер ответил, что заявка сохранена.

Пустой email даёт ошибку без заявки и generate_lead; при успешной проверочной отправке появляются заявка 017 и одно событие с form_name = course_signup.

Событие фиксирует то, что можно увидеть

GA4 записывает события, и Google делит их на четыре группы. Часть из них тег собирает сам или вместе с улучшенной статистикой (enhanced measurement): session_start, прокрутку, отправку формы. Рекомендованные и специальные события нужно настраивать, иначе их не будет, и заявка как раз из них. Так что тег GA4 на сайте ещё не значит, что заявки считаются.

Для заявки у Google есть рекомендованное событие generate_lead. В списке рекомендованных событий оно описано как отправка формы или запроса информации. Название подсказывает смысл, но не говорит, в какой момент событие отправлять. Этот момент выбираете вы, и он должен оставлять след, который можно проверить: нажатие кнопки, ответ сервера «сохранено», статус «оплачено» в CRM.

Школе подходит ответ сервера. Нажатие кнопки - ещё не заявка: поле email могло остаться пустым, сервер мог вернуть ошибку. По той же причине для заявки не годится form_submit из улучшенной статистики: он срабатывает при отправке формы и не ждёт, что ответит сервер. У следующих этапов свои события: заявку, которую менеджер признал целевой, передают как qualify_lead, оплату - как purchase. Если сложить всё это в один generate_lead, через месяц никто не скажет, что он считал.

Даже правильно настроенное событие - не то же самое, что заявка. Заявка лежит в CRM, пока её не удалят, а событие - это сигнал из браузера, и он может не дойти. Допустим, на сайте стоит баннер cookies, а режим согласия настроен в базовом варианте. Тогда человек, который отказался от аналитики, оставит заявку, а GA4 о ней не узнает. Поэтому список заявок ведут в CRM, а GA4 нужен, чтобы видеть, откуда люди пришли и что делали на сайте.

План измерения для одной заявки

Прежде чем открывать GTM, запишите план измерения. У школы он начат в настройке GA4 через GTM: четыре строки с page_view, form_start, generate_lead и параметром form_name. Строке с заявкой нужно больше подробностей, чем остальным: по ней разработчик настроит событие, а вы через месяц вспомните, что именно считает отчёт. Если её расписать, получится семь строк:

Что описываемgenerate_lead у школы
ВопросСколько заявок на курс принесла за неделю реклама в Instagram
УсловиеСервер ответил, что заявка сохранена в CRM
Событиеgenerate_lead, в GA4 отмечено ключевым событием
Параметрform_name со значением course_signup
Не считается заявкойОшибка в форме, повторный клик, обновление страницы «Спасибо»
ИсточникUTM-метки сохраняются в скрытых полях формы и попадают в CRM
Как проверяемПрогон формы в DebugView и запись в CRM

Параметр form_name нужно зарегистрировать в GA4, иначе в отчётах его не будет, а generate_lead - отметить ключевым событием. Оба шага описаны в уроке про GA4.

Имя, телефон и email в параметры не кладут. Google запрещает передавать в Analytics персональные данные, и запрет касается и параметров событий, и адреса страницы. Если после отправки форма открывает /thanks?phone=..., телефон уйдёт в GA4 вместе с page_view.

Самая полезная строка плана - «Не считается заявкой». Без неё разработчику незачем отказываться от события на кнопке: так быстрее, и в предварительном просмотре всё сработает, а лишние события всплывут только через неделю.

Что не должно считаться заявкой

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

СлучайНовых заявок в CRMСобытий generate_lead
Форма заполнена правильно11
Email не заполнен, форма подсветила ошибку00
Сервер не сохранил заявку00
Два быстрых клика по «Отправить»11
Страницу «Спасибо» обновили или открыли снова00
Тот же человек отправил форму ещё раз на следующий день1 или 0, по правилу CRM1

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

Последняя строка - единственная, где расхождение заложено заранее. GA4 считает отправки формы. CRM, если она склеивает повторы по номеру телефона, считает людей. Ошибки тут нет, просто единицы разные.

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

DebugView показывает события с вашего устройства сразу, не дожидаясь обработки отчётов. Режим отладки включают через предварительный просмотр GTM, так же как при настройке GA4.

Откройте рядом три окна: сайт в предварительном просмотре, DebugView («Администратор» → «Просмотр данных» → «DebugView») и CRM. Пройдите случаи из таблицы по порядку. У школы после правильной отправки в CRM появилась заявка 017, а в ленте DebugView - один generate_lead. Нажмите на него: в параметрах будет form_name со значением course_signup. Пустой email не должен добавить в ленту generate_lead, а два быстрых клика - больше одного события.

DebugView отвечает на один вопрос: ушло ли событие с вашего устройства в нужный момент и с нужными параметрами. Что приходит с телефонов клиентов, видно только при сверке с CRM.

У проверки есть побочный эффект: события, отправленные во время теста, попадут в обычные отчёты как настоящие заявки. Google советует отфильтровывать трафик разработки. В «Администраторе» откройте «Сбор и редактирование данных» → «Фильтры данных», создайте фильтр типа «Трафик разработки» с действием «Исключить» и переведите его в состояние «Активно». Фильтр убирает только события, отправленные в режиме отладки, поэтому проверяйте форму в предварительном просмотре GTM: тестовую заявку с обычной вкладки он пропустит в отчёты. И работает он только с новыми данными: тесты, которые прошли до него, останутся в отчётах.

Откуда пришла заявка

Чтобы отделить заявки с рекламы от остальных, ссылки размечают. Метки для Meta школа ставит по общей схеме UTM: utm_medium=paid_social, кампания course_start, в utm_content название объявления.

GA4 читает метки из адреса страницы сам. CRM их не увидит, пока форма не сохранит их в скрытых полях вместе с телефоном. Если форма стоит не на той странице, куда пришёл человек, метки при входе сохраняют в cookie, а форма берёт их оттуда.

Если меток нет, в CRM так и пишут: источник неизвестен. Менеджер, который ставит «Instagram» на глаз, вредит сверке больше пустого поля, потому что угаданный источник потом от настоящего не отличить. В плане отдельно запишите, какой источник сохраняет CRM: первый переход с метками или последний. С атрибуцией GA4 это не одно и то же, и в отдельной заявке ответы могут не совпасть.

40 событий и 34 заявки: сверка

Таргетолог разделил 120 000 ₸ на 40 событий и получил CPL 3 000 ₸. По CRM выходит 120 000 / 34 = 3 529 ₸ за заявку. По этой цифре владелец решает, продлевать ли кампанию, так что 529 ₸ разницы на каждой заявке - не мелочь.

Сказать, что CRM потеряла шесть заявок, нельзя: по двум итоговым числам причину не определить. Лишние шесть событий могли взяться из повторных отправок, которые CRM склеила, из тестовых заявок коллег, которые менеджер потом удалил, или из кликов с пустым email, если тег висит на кнопке. А могло быть и так: лишних событий восемь, и ещё две настоящие заявки не дошли до GA4 из-за отказа в баннере cookies. Итог в обоих случаях один и тот же, 40 против 34.

Сверяют по шагам:

  1. Возьмите одинаковый период: те же семь дней в обеих системах и один часовой пояс.
  2. Разложите generate_lead и заявки из CRM по дням. Если расходятся только дни, когда команда тестировала форму, первым делом нужен фильтр трафика разработки.
  3. Пройдите случаи из таблицы исключений в DebugView.
  4. Найдите в CRM заявки с одинаковым телефоном и заявки без источника за ту же неделю.

Школа прошла эти шаги, и на третьем выяснилось, что generate_lead висит на клике по кнопке: пустой email дал событие, а заявки не было. Сколько лишних событий дал клик по кнопке, сколько повторы и сколько заявок GA4 потерял на отказах в баннере, по прошлой неделе уже не узнать. Разработчик перевесил событие на ответ сервера, а следующую неделю сверят заново.

Подгонять цифры коэффициентом не надо. «В CRM на 15% меньше, умножаем GA4 на 0,85» убирает расхождение из отчёта, а не с сайта: тег по-прежнему считает клики, только этого больше никто не видит.

В отчёте клиенту подпишите три вещи: что считали (заявка - запись в CRM с меткой paid_social), в каких единицах (отправки формы или люди, по правилу CRM) и за какой период. С такой подписью на вопрос «кто врёт» отвечает сама таблица.

Задание: план измерения для своей формы

Возьмите форму, к которой у вас есть доступ: тестовый сайт из недели 1 трека «Старт», сайт знакомого бизнеса или свой. Если CRM нет, вместо неё подойдёт таблица или почта, куда приходят заявки.

Выполнено 0 из 6

Если пустая форма дала generate_lead, событие висит на клике или на form_submit. Его перевешивают на событие dataLayer, которое сайт отправляет после ответа сервера. Если событие добавилось при обновлении страницы «Спасибо», тег срабатывает на просмотр этой страницы, и лечится это так же. Когда два быстрых клика создали две заявки и два события, GA4 считает верно, а чинить нужно форму: кнопка должна блокироваться после первого нажатия. А если DebugView пустой, дело не в условии, а в подключении: посмотрите, сработал ли тег Google, свой ли в нём идентификатор G- и не отказались ли вы от аналитики в баннере cookies.

Покажите обе таблицы и скриншоты клиенту до запуска рекламы. Когда через месяц цифры GA4 и CRM разойдутся, у вас уже будет документ, где записано, что считается заявкой.

Видео: события и DebugView

GA4: что такое события и как работает DebugView

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

Нужна помощь с аналитикой вашего проекта?