Определение
GA4 Measurement Protocol передаёт события напрямую в Google Analytics через HTTP, обычно с сервера или из офлайн-системы.
Так можно записывать действия, недоступные браузерному тегу, включая покупки и возвраты. Протокол дополняет теги. Для связи с предыдущими действиями посетителя серверному событию нужны верные идентификаторы и контекст.
- запрос
- client_idmeasurement_idapi_secret
- Контекст сессии
- session_idengagement_time_msec
- задним числом
- до 72 часов
- На практике
Что он может добавить и чего не может восстановить?
Я использую протокол, когда бэкенд подтверждает действие и располагает нужными для GA4 данными. Это помогает связать онлайн- и офлайн-действия и собрать серверные и браузерные события в одном ресурсе.
Протокол не восстановит просмотры, которые не записывались. По документации Google, он дополняет автоматический сбор через тег Google, Tag Manager или Firebase. Полученное событие без связи с исходным посетителем не подтверждает восстановление атрибуции исходной сессии.
События можно датировать задним числом: до 72 часов назад. Это не способ задним числом добавить пропавшие покупки прошлого месяца, а сам этот лимит не гарантирует привязку к сессии.
- На практике
Для чего нужны client_id и transaction_id?
Для веб-потока
client_idидентифицирует экземпляр пользователя и должен совпадать с ID, который генерирует тег GA4 сайта. Когда это разрешено, я переношу это значение в бэкенд, а не заменяю его номером заказа или новым случайным значением для каждой покупки. В запросе также нужныmeasurement_idпотока иapi_secret, который остаётся на сервере.transaction_idидентифицирует заказ в событии покупки. По документации Google, в веб-потоках дедуплицируются покупки одного и того же пользователя с одним и тем же transaction ID. В любой серверной копии я сохраняю идентификатор клиента из браузера и тот же идентификатор заказа. Один transaction ID сам по себе не обещает дедупликацию между разными пользователями или потоками приложений. - На практике
Когда серверное событие ломается?
Я проверяю поток назначения, сохранение
client_id, пустой или повторно использованныйtransaction_id, параметры ecommerce и время события. Важен и контекст сессии. Для точных метрик сессий и вовлечённости, включая Realtime, Google рекомендуетsession_idиengagement_time_msec. Я передаю реальные данные сессии, без выдуманных значений вовлечённости. Не путать с
Не путать с Это не Это восстановление атрибуции исходной сессии дополняет автоматический сбор способ задним числом добавить пропавшие покупки прошлого месяца События можно датировать задним числом: до 72 часов назад Эндпоинт сбора возвращает HTTP
2xx, когда получает запрос, даже если payload неверный или событие не обработано. Это три разные проверки: успешная передача, корректная структура события и правильно учтённая покупка.- Где проверить
Как проверить событие Measurement Protocol?
- Посмотрите подготовленный payload в тестовой среде. Сравните идентификаторы клиента и заказа в нём с браузерным событием и записью в бэкенде; API secret в логах не оставляйте.
- Проверьте тестовый payload через
/debug/mp/collectиENFORCE_RECOMMENDATIONS. ИзучитеvalidationMessages; события валидации в отчётах не появляются. - Отдельно проверьте настроенный поток и secret. Проверка структуры сама по себе не доказывает, что учётные данные верны.
- В тестовом ресурсе, где это разрешено, найдите событие и проверьте параметры. Сверьте покупку с заказом в бэкенде. Одного HTTP-статуса для приёмки недостаточно.
- Источники
Источники
Проверено
- Google Analytics: обзор и возможности Measurement Protocoldevelopers.google.com
- Google Analytics: отправка событий, идентификатор веб-клиента и работа с secretdevelopers.google.com
- Google Analytics: справочник протокола, ответы, временные метки и параметры сессииdevelopers.google.com
- Google Analytics: валидация событийdevelopers.google.com
- Google Analytics: ID транзакций и дедупликация в веб-потокахsupport.google.com
- Google Analytics: параметры событий покупки и возвратаdevelopers.google.com