Meta CAPI: серверні конверсії, яким не страшний iOS

Браузерний піксель не бачить найціннішого в Telegram-воронці: старт бота, вступ у канал і депозит відбуваються там, де пікселя фізично немає. Додайте приватність iOS і втрату cookie на лендингу - і Meta оптимізується за уламком реальних конверсій: гірші аудиторії і вищий CPA на той самий бюджет. Серверний CAPI закриває цю діру: Leadgram надсилає кожну конверсію напряму зі свого бекенда в Meta, з click ID для сильного матчингу.

Створіть CAPI-акаунт на сторінці Facebook

  1. Відкрийте Facebook у розділі «Рекламні майданчики» та натисніть Додати акаунт.
  2. Назва акаунта - внутрішня мітка, за якою ви його впізнаєте.
  3. Pixel ID - числовий ID вашого пікселя Meta з Events Manager.
  4. Токен доступу - генерується в Events Manager → ваш піксель → Settings → Conversions API (токен системного користувача). Зберігається зашифрованим; в інтерфейсі видно лише останні 4 символи.
  5. Test event code (опційно, але радимо) - з Events Manager → Test Events. Відкриває безпечну тестову конверсію в один клік.
Форма CAPI-акаунта з полями Pixel ID і токена доступуФорма CAPI-акаунта з полями Pixel ID і токена доступу

Зіставте кампанію з акаунтом

На сторінці Кампанії впишіть той самий Pixel ID у поле «ID пікселя Meta» кампанії. Збіг має бути точним - під час відправлення Leadgram зіставляє ID пікселя кампанії з вашими CAPI-акаунтами. Форма перевіряє це наживо, поки ви друкуєте: ви побачите або повідомлення «Знайдено CAPI-акаунт "…" - події CAPI будуть надіслані», або попередження, що події залишаться лише браузерними. Банер після збереження повторює вердикт, тож одрук не пройде мовчки.

Що Leadgram надсилає в Meta

  • Назва події - за мапінгом внутрішнього типу: registration → CompleteRegistration, deposit/ftd/purchase → Purchase, bot_start/lead → Lead, channel_join → Subscribe, join_request → SubmitApplication, first_dm → Contact, land → PageView, click/miniapp_launch → ViewContent. Заявка і вступ мають різні назви навмисно: якщо ви схвалюєте заявки вручну, людина спершу дасть SubmitApplication, а після схвалення - Subscribe, і Ads Manager покаже дві сходинки воронки, а не подвоєну одну. Якщо ви купуєте трафік саме в заявку, оптимізуватися можна прямо по SubmitApplication. Усе, чого в цьому списку немає, у Meta не йде взагалі: це subscription_renewed, subscription_cancelled і custom_*. Така подія не створює доставки й не падає з помилкою - вона потрапляє в лічильник «Подію не зіставлено» на картці Meta (див. нижче).
  • fbc click ID - fbclid, спійманий на вашому трекінг-посиланні, перезбирається в параметр Meta fbc, найсильніший сигнал матчингу після хешованих PII.
  • event_id - детермінований ID на кожну конверсію, тож ретраї ніколи не плодять дублі покупок в Ads Manager.
  • event_time - реальний момент події, узятий з того, коли Leadgram її зафіксував. Meta приймає події з міткою часу лише за останні 7 днів: якщо доставка старша за це вікно, мітку часу підрізають до найранішої мітки, яку Meta ще бере (7 днів тому плюс година запасу), замість того щоб завалити помилкою весь пакет. Підрізають саме до нижньої межі, а не до «зараз»: з дозволених значень це найближче до моменту, коли подія справді сталася.

Перевірте до того, як витрачати бюджет

  1. У рядку акаунта натисніть Надіслати тест-подію.
  2. Вставте або підтвердьте Test Events код.
  3. Відкрийте Events Manager → Test Events - Purchase з'явиться за секунди.

Тест синтетичний: він не чіпає оптимізацію реклами, атрибуцію чи ваші списання. Якщо Meta відхилила подію, у діалозі покаже точну (з замаскованим токеном) причину Meta - зазвичай це неправильний pixel ID, токен доступу або код тестової події.

Стежте за доставками

Доставка конверсій показує відправлені, збійні та мертві доставки CAPI за вікна 24 год / 7 дн, з повторним відправленням в один клік для всього, що застрягло. Зазирайте туди, коли цифри в Ads Manager видаються заниженими.

Картка останньої помилки прив'язана до платформи, а не до пікселя. Два пікселі Meta отримують кожен свій CAPI-акаунт, але Доставка конверсій показує обидва під однією об'єднаною карткою Meta - протухлий токен на одному акаунті може ховатися за здоровим результатом іншого. Щоб перевірити конкретний піксель, використовуйте кнопку «Надіслати тест-подію» саме того акаунта.

Збійна доставка не мертва з першого промаху. Leadgram повторює її з експоненційною затримкою - до 5 спроб (5с, 10с, 20с, 40с) - перш ніж позначити її мертвою і залишити на сторінці, щоб ви відправили її вручну.

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

Надіслати в Meta тип, якого немає в мапінгу, можна єдиним способом - задати події назву вручну: тоді гейт не спрацьовує, і подія йде в Meta під цією назвою. Заради custom_* це й зроблено: що означає ваш custom_3, знаєте тільки ви, тож назви за замовчуванням у цих восьми слотів немає і не буде. Точково назву задає вузол «Подія» в редакторі Флоу, поле «Перевизначення назви події» в секції «Facebook CAPI»: воно діє лише на конверсії, які створює сам вузол, зате всі вісім слотів custom_* у списку його типів є. Ширше діє назва події в інтеграції Facebook у налаштуваннях кампанії: вона знімає гейт з УСІХ подій цієї кампанії одразу, включно з click і land, і всі вони йдуть у Meta під однією й тією ж назвою - вся воронка кампанії згортається в Ads Manager в один рядок. Обох подій підписки в списку типів вузла немає, тож до них дотягується лише цей другий, широкий спосіб. Назва, задана будь-яким із двох, перебиває мапінг вище - зокрема й для типів, у яких мапінг є. Через API подій назву не передати взагалі: платформа вирізає це поле з payload.

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

  • Pixel ID у кампанії відрізняється від акаунта на одну цифру - події мовчки залишаються браузерними. Живий індикатор і банер після збереження - ваша страховка, читайте їх.
  • Протухлий або неправильно вказаний токен доступу - доставки падають з OAuth-помилкою в Доставці конверсій. Перегенеруйте токен в Events Manager, тоді натисніть Редагувати на акаунті: залиште поле токена порожнім, щоб зберегти поточний, або вставте нове значення, щоб його замінити.
  • У кліках немає fbclid - зробіть трекінг-посилання кампанії прямою ціллю оголошення; Meta додає fbclid автоматично. Якщо у вас ланцюжок трекерів, прокидайте параметр наскрізь.
  • Кнопка тесту відмовляється спрацьовувати - ви не вказали Test Events код. Це навмисно: подія без коду зарахувалася б як справжня конверсія.
  • Беклог, старший за 7 днів, Leadgram не відхиляє повністю - він підрізає мітку часу замість помилки. Але підрізана конверсія все одно несе менше атрибуційної цінності, ніж свіжа, тож не сприймайте це як привід дати доставкам накопичуватися.