Цей кейс закриває типову проблему, коли бізнес реально продає через дзвінки/месенджери, а реклама оптимізується лише по “сайтових” подіях. Після інтеграції конверсії стають видимими в GA4 і доступними в Ads як повноцінний сигнал для алгоритмів.
Налаштувала server-to-server передачу офлайн-конверсій із CRM LeadVertex у GA4 через Measurement Protocol та імпортувала їх у Google Ads. Додала фільтрацію статусів, дедуплікацію та вирішила блокування Cloudflare (403/1010) для webhooks.
Контекст і задача
Частина лідів і замовлень надходила не через сайт, а через дзвінки та месенджери. Через це:
- ці конверсії не потрапляли в GA4
- і не імпортувались у Google Ads
- оптимізація реклами будувалась на неповній картині
Ціль: передати в аналітику 2 офлайн-конверсії з LeadVertex і зробити їх доступними для оптимізації в Google Ads:
- Дзвінок по телефону
- Замовлення через месенджер
Архітектура рішення
LeadVertex → Postback/Webhook → PHP endpoint на сайті → GA4 Measurement Protocol → Import → Google Ads
- Джерело: CRM LeadVertex (postback при зміні статусу ліда/замовлення)
- Обробка: серверний PHP endpoint (валідація, фільтри, дедуп, логіка)
- Аналітика: GA4 Measurement Protocol (серверна відправка подій)
- Реклама: Google Ads (імпорт конверсій із GA4)
Реалізація
1) Серверний endpoint
- Створено endpoint:
/leadvertex/ga4.php - Додано перевірку доступу через token, щоб захиститись від фейкових запитів
- Підтримано кілька форматів payload:
application/x-www-form-urlencoded- JSON (резерв на випадок змін у CRM)
2) Логіка конверсій
- Фільтрація по статусам, щоб подія летіла тільки при успішних статусах (наприклад
accepted/paid/shipped) - Розведення подій за типами:
lv_phone_call— дзвінокlv_messenger_order— замовлення через месенджер- Дедуплікація (файли-флаги), щоб одна конверсія не дублювалась при повторних змінах статусу
3) Відправка в GA4
- Реалізовано серверну відправку в:
/mp/collect(prod)/debug/mp/collect(перевірка)- Передані параметри: ID в CRM, статус, канал, джерело, сума (за потреби), timestamp підтвердження (якщо передається CRM)
4) Дебаг інфраструктури, Cloudflare
Проблема: postback із LeadVertex не доходив до endpoint.
Причина: Cloudflare Browser Integrity Check блокував User-Agent LEADVERTEX (403 / error 1010).
Рішення: налаштовано Cloudflare allow-rule для запитів на /leadvertex/ga4.php.
5) Імпорт у Google Ads
- Події в GA4 підготовлені/позначені як Conversions
- Виконано імпорт конверсій у Google Ads з GA4
Результат
- Офлайн-конверсії з CRM стабільно потрапляють у GA4 як окремі події:
lv_phone_calllv_messenger_order- Конверсії імпортовані у Google Ads і доступні для оптимізації кампаній
- Воронка стала повнішою: реклама “бачить” не лише сайт, а й офлайн-канали (дзвінки, месенджери)
Технології
PHP 7.2, GA4 Measurement Protocol, Cloudflare WAF/Rules, LeadVertex postback/webhook, Google Ads (import from GA4)