Доставка конверсій: перевіряємо, що кожна конверсія дійшла до Meta, Google і трекера

За клік ви вже заплатили. Якщо депозит, який він приніс, так і не долетів до Meta чи Google, оптимізатор платформи так і продовжує закуповувати схожих на тих, хто не конвертиться. А якщо впаде S2S-постбек у ваш партнерський трекер, конверсії не буде і у вашій власній статистиці. Сторінка «Доставка конверсій» - єдиний екран, що відповідає на питання «чи дійшла кожна конверсія насправді»: картки CAPI по кожній платформі, картки постбеків по кожному правилу, таблиця всього застряглого і кнопка «Повторно надіслати» для ручного відновлення.

Як читати картки

Угорі сторінки - по картці на кожну CAPI-платформу: сьогодні це Meta і Google, бо серверна доставка TikTok досі «скоро» і картки для неї не буде взагалі. Нижче - по картці на кожне правило постбеку, за яким була хоча б одна доставка за останні 7 днів. CAPI-платформа може показати картку і з нульовими доставками - якщо за це вікно вона пропускала конверсії замість відправлення, а це якраз той випадок, для якого нижче є блок «Пропущено».

Кожна картка рахує доставки у двох вікнах, «24 год» і «7 дн», за чотирма статусами:

  • Відправлено - платформа або трекер прийняли конверсію. Готово.
  • У черзі - доставка чекає, воркер підхопить її за секунди.
  • Збій - спроба завершилася помилкою. CAPI повторює до 5 разів з експоненційною затримкою (5с, 10с, 20с, 40с, 80с, разом приблизно дві з половиною хвилини); постбеки повторюють до 3 разів, укладаючись помітно менш ніж за хвилину. Збійний рядок часто сам доїжджає до «Відправлено» ще в цьому вікні. Коли падає остання спроба, рядок автоматично стає «Мертва» - без cron-джоби і без ручних дій.
  • Мертва - усі автоматичні спроби вичерпано. Далі без вас нічого не станеться.

Бейдж працює як світлофор: «Без проблем», коли проблем немає, «Є збої» (жовтий), якщо щось впало, «Є мертві» (червоний), якщо хоча б одна доставка загинула. На кожній картці також видно текст останньої помилки з таймстампом - зазвичай цього достатньо, щоб впізнати протухлий токен, не відкриваючи логи.

На картці Google є ще один блок - «Пропущено (не надіслано)»: лічильники «Сьогодні» і «7 дн» з розбивкою за причиною - немає Google click ID (gclid відсутній), клік застарів (вийшов за межі 90-денного вікна завантаження Google) або подію не зіставлено. Пропуск - це свідома відмова від відправлення, а не збій: він взагалі не створює рядок доставки і ніколи не потрапляє ні в лічильники збійних чи мертвих, ні в таблицю нижче. Це і є пряма відповідь на питання, чому на змішаній кампанії Meta+Google конверсій по Google помітно менше, ніж по Meta - спершу загляньте в цей блок, перш ніж вважати щось зламаним.

Картки доставки конверсій по CAPI-платформах і правилах постбеківКартки доставки конверсій по CAPI-платформах і правилах постбеків

Таблиця проблемних доставок

Під картками - таблиця з пагінацією, у ній лише збійні та мертві рядки, дві вкладки: CAPI і Постбеки. На вкладці CAPI - платформа, Event ID, статус, кількість спроб, помилка і час створення. На вкладці «Постбеки» додаються HTTP-метод і код статусу, який повернув endpoint вашого трекера. 500 від трекера і мережевий таймаут дебажаться зовсім по-різному.

Повторне відправлення: що воно справді робить

  1. Спершу усуньте причину: оновіть access token Meta, поверніть доступ сервісному акаунту Google, знову увімкніть правило постбеку.
  2. Натисніть «Повторно надіслати» на рядку. Кнопка зміниться на «У черзі»: нова спроба доставки йде через звичайну чергу з повним ланцюжком ретраїв і тим самим payload.
  3. Доставка асинхронна. Оновіть сторінку за хвилину: якщо повторне відправлення спрацювало, рядок стане «Відправлено» і зникне зі списку проблемних.

Повторне відправлення чесно відмовляє, а не вдає, що спрацювало. Повторити можна лише збійні та мертві рядки. Якщо ви прибрали піксель з кампанії або видалили CAPI-акаунт, отримаєте «Платформу більше не налаштовано на кампанії»: постановка в чергу все одно закінчилася б ще одним мертвим рядком. «Подія не тарифікована» означає, що подію заблокував білінг - спершу поповніть баланс на сторінці «Білінг». Постбек відмовляє так само, якщо правило видалене чи вимкнене: ручний повтор не може непомітно обійти правило, яке ви самі вимкнули.

Захист від задвоєння: повторне відправлення постбеку використовує той самий fire ID, що й оригінал - якщо перша спроба реально дійшла до трекера, повтор гаситься ще до HTTP-запиту. У CAPI своя дедуплікація, за event ID на стороні платформи: у Meta вікно приблизно 48 годин, тож повторне відправлення значно старіших рядків може задвоїти конверсії в Ads Manager.

Коли хвилюватися, а коли ні

  • Хвилюватися варто, коли «Мертві» більше нуля або повторюється та сама остання помилка: протухлий access token, відкликаний доступ сервісного акаунта, неправильний dataset або ID conversion action.
  • Не хвилюватися варто, якщо на змішаному трафіку Google показує менше конверсій, ніж Meta. У конверсії, що прийшла з оголошення Meta, немає gclid, тому Google свідомо її пропускає, а не падає з помилкою - точну причину і лічильник дивіться в блоці «Пропущено» на картці Google. Ще Google пропускає кліки, старші за 90 днів - це межа його вікна завантаження.

Типові граблі

  • Повторне відправлення без усунення причини просто плодить нові мертві рядки: кнопка повторює відправлення, а не лагодить конфігурацію.
  • Рядки Meta, старші за приблизно 48 годин, ризиковано повторювати - дедуплікація вендора їх уже не прикриває.
  • Призупинений воркспейс блокує події на білінгу, тож їхні доставки відмовляють як «не тарифіковано». Спершу перевірте баланс, а потім вже звинувачуйте інтеграцію.
  • Порожня картка Google на трафіку, де переважає Meta, - це норма, а не поломка. Причину пояснює блок «Пропущено» на цій картці.
  • TikTok картки не отримує ніколи. Серверна доставка для нього ще не запущена, тож порожнє місце там - не помилка налаштування.