Meta CAPI: серверные конверсии, которым не страшен iOS

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

Создайте CAPI-аккаунт на странице Facebook

  1. Откройте Facebook в разделе «Рекламные площадки» и нажмите «Добавить аккаунт».
  2. Название аккаунта - внутренняя метка, по которой вы его узнаете.
  3. Pixel ID - числовой ID вашего пикселя из 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 будут отправлены», либо предупреждение, что события останутся только браузерными. Баннер после сохранения повторяет вердикт, так что опечатка не пройдёт незамеченной.

Что уходит в Meta

  • Имя события - по внутреннему маппингу: registration → CompleteRegistration, deposit/ftd/purchase → Purchase, bot_start/lead → Lead, channel_join → Subscribe, first_dm → Contact, land → PageView, click → ViewContent. Несопоставленные типы (например, custom_*) в Meta не отправляются.
  • fbc click ID - fbclid, пойманный вашей трекинг-ссылкой, пересобирается в параметр Meta fbc - её сильнейший сигнал матчинга после хэшированных PII.
  • event_id - детерминированный ID на каждую конверсию, поэтому ретраи никогда не создают дублей покупок в Ads Manager.
  • event_time - реальный момент, когда произошло событие, взятый из времени, когда его записал Leadgram. Meta принимает события с отметкой времени не старше 7 дней, поэтому у доставки старше этого срока метку подрезают до самого свежего момента, который Meta ещё примет, вместо того чтобы завернуть с ошибкой всю партию.

Проверьте до спенда

  1. В строке аккаунта нажмите «Отправить тест-событие».
  2. Вставьте или подтвердите код Test Events.
  3. Откройте Events Manager → Test Events - Purchase появится за секунды.

Тест синтетический: он не трогает оптимизацию рекламы, атрибуцию и ваши списания. Если Meta отклонит его, диалог покажет точную причину от Meta (токен в тексте скрыт) - чаще всего это неверный pixel ID, токен доступа или код Test Events.

Следите за доставкой

Доставка конверсий показывает отправленные, сбойные и мёртвые доставки CAPI за 24 часа и 7 дней, с повторной отправкой в один клик для всего, что застряло. Проверяйте её всякий раз, когда цифры в Ads Manager кажутся заниженными.

Карточка последней ошибки привязана к платформе, а не к пикселю. Если у вас два пикселя Meta, каждый получает свой CAPI-аккаунт, но Доставка конверсий показывает их под одной общей карточкой Meta - проблема с токеном в одном аккаунте может спрятаться за здоровым результатом другого. Чтобы проверить конкретный пиксель, используйте кнопку «Отправить тест-событие» именно у этого аккаунта.

Сбойная доставка не считается мёртвой после первого же промаха. Leadgram повторяет её с экспоненциальной задержкой - до 5 попыток (5, 10, 20, 40 секунд) - и только потом помечает доставку мёртвой, оставляя её на странице, чтобы вы могли переотправить вручную.

Если та же кампания одновременно гоняет Google CAPI, карточка этой платформы показывает разбивку, почему события вообще не пытались отправить: нет click ID, клик устарел или тип события не сопоставлен ни с чем в Google. У Meta такой разбивки пока нет - несопоставленный тип события на Meta просто не создаёт строку в леджере, поэтому там нечего открывать и изучать.

Частые грабли

  • Pixel ID в кампании отличается от аккаунта на одну цифру - события молча остаются браузерными. Живой индикатор и баннер после сохранения - ваша страховка, читайте их.
  • Токен доступа протух или выдан не с теми правами - доставки падают с OAuth-ошибкой в Доставке конверсий. Перегенерируйте токен в Events Manager, затем нажмите «Редактировать» у аккаунта: оставьте поле токена пустым, чтобы сохранить текущий, или вставьте новое значение, чтобы его сменить.
  • В кликах нет fbclid - сделайте трекинг-ссылку кампании прямым назначением объявления, тогда Meta добавит fbclid сама. Если в цепочке есть ещё трекеры, пробрасывайте параметр через них.
  • Кнопка теста отказывается срабатывать - вы не указали код Test Events. Это сделано намеренно: событие без кода Meta засчитала бы как настоящую конверсию.
  • Отставание старше 7 дней не отклоняется полностью - Leadgram подрезает метку времени вместо того, чтобы выдать ошибку, - но у подрезанной конверсии всё равно меньше веса в атрибуции, чем у свежей, так что копить доставки ради этого не стоит.