Перейти до вмісту
Усі статті
5 хв читання

Чому конверсії Facebook і трекера розходяться: чекліст звірки

Два лічильники конверсій звіряються за часом, ідентифікаторами та статусами

Якщо Meta Ads показує 127 покупок, а трекер — 103, це ще не доводить поломку. Системи можуть рахувати різні події, використовувати різні attribution windows, timezone та дати звіту. Але пояснення «Meta моделює» теж недостатнє: розбіжність треба розкласти на вимірювані причини.

Мета reconciliation — не змусити два інтерфейси показати однаковий total, а зв’язати platform-attributed event, отриманий callback і підтверджену бізнес-транзакцію.

Спочатку визначте, що порівнюєте

Зафіксуйте event semantics, період, timezone, click-time чи conversion-time, attribution window, click/view-through правила, modeled events, raw/pending/approved status, зміст value та account/campaign/GEO/device filters.

Карта причин

ПричинаЗазвичай більше в MetaЗазвичай більше в трекеріЯк довести
View-through/modelingAttribution breakdown
Різні вікна✓/—✓/—Один cohort і window
Різні timezone✓/—✓/—Перерахунок у UTC
Pixel + CAPI без dedupЗвірити event_id
Втрачено fbclid/fbcClick record і CAPI payload
Не прийшов postbackCRM order є, callback немає
Різні status filters✓/—✓/—Raw → canonical mapping
Organic/directНемає paid click ID
Пізній reject/refundІсторія статусів
Duplicate callbackTransaction ID і duplicate log

1. Вирівняйте час

Депозит о 23:30 UTC може потрапити в різні календарні дні. Експортуйте timestamps, приведіть до UTC і збережіть original timezone. Перевірте й дату групування: Meta може віднести конверсію до дня рекламної взаємодії, а CRM — до дня транзакції.

2. Порівнюйте однакову атрибуцію

Трекер зазвичай має детермінований click ID. Платформа може додавати власні click/view windows і modeled signals. Почніть зі строгого спільного шару: обидві системи бачили paid click, подія всередині однакового вікна, event type/status збігаються, organic і test traffic виключені.

Тримайте окремі поля tracker_attributed, meta_attributed, business_confirmed.

3. Перевірте fbclid → fbc → CAPI

Збережіть Meta click context через landing, PWA та offer redirect. Паралельно зберігайте internal click ID для власного postback. Якщо fbclid губиться, трекер може отримати депозит, але Meta матиме слабший match. Ролі описані в Click ID, Sub ID, fbclid, fbc і ttclid.

4. Перевірте Pixel + CAPI dedup

Одна purchase часто надсилається Browser Pixel і Conversions API. Обидві копії мають описувати ту саму подію й мати узгоджений event_id.

Типові помилки: різні IDs у browser/server, один ID для всіх покупок, новий ID на кожен retry, різні event names або повторний Purchase після approve. Перевіряйте Events Manager і власний delivery log; queued ще не означає accepted. Детальніше — Pixel vs CAPI vs Postback і офіційна довідка Meta CAPI.

5. Звірте семантику статусів

Мережа може надсилати registration, deposit, approved, rejected. Якщо Meta отримує Purchase на FTD, а tracker report фільтрує лише approved після hold, Meta закономірно буде вищою до maturation.

Raw eventInternal statusMeta eventRevenue
regRegistrationLead0
ftdFirst depositPurchasepayout/value
approvedApprovedНе дублювати Purchaseconfirmed
rejectedRejectedPolicy-dependent correction0

Мапінг залежить від бізнесу, але має бути явним і versioned.

6. Розділіть втрату callback і platform feedback

Network/CRM → postback → tracker → CAPI → Meta
  • Order є в CRM, але немає в трекері: postback, click ID, статус.
  • Подія є в трекері, але немає в Meta: policy, payload, token, fbc/fbp, event ID, API response.
  • Meta бачить подію, яку CRM пізніше відхилила: потрібна історія статусів, а не видалення факту.

Для першої межі використайте чекліст діагностики постбека.

7. Відрізніть duplicate від repeat purchase

click_idtransaction_ideventРезультат
c101tx900purchaseaccepted
c101tx900purchaseduplicate
c101tx901purchaseaccepted

Dedup лише за click ID видалить справжню tx901; відсутність dedup подвоїть tx900.

Transaction-level reconciliation

З’єднайте matured cohort за transaction ID:

transaction_idclick_idevent_at UTCtracker statusMeta acceptedbusiness statusvalue
tx900c10112:04FTDyesapproved45
tx901c10212:11FTDnoapproved30
tx90212:19modeled/unknownapproved55

Призначте кожному mismatch reason code: TIMEZONE_SHIFT, WINDOW_MISMATCH, CLICK_ID_LOST, POSTBACK_MISSING, STATUS_FILTERED, CAPI_REJECTED, PIXEL_CAPI_DUPLICATE, ORGANIC_OR_UNATTRIBUTED, MODELED_PLATFORM_EVENT, BUSINESS_REJECTED.

Тоді gap стає розподілом причин, які можна пріоритезувати.

Надійний порядок звірки

  1. Беріть cohort, де hold уже переважно завершений.
  2. Зафіксуйте report settings.
  3. Обмежте один account/GEO/campaign cohort.
  4. Порівнюйте transaction-level export, не лише totals.
  5. Події без deterministic match рахуйте окремо.
  6. Не додавайте modeled events у confirmed CRM revenue.
  7. Перевіряйте fix на новому cohort.

FAQ

Який відсоток розбіжності нормальний?

Універсальної межі немає. Навіть малий gap може бути системною втратою дорогого GEO. Оцінюйте reason codes і бізнес-вплив.

Кому вірити?

Meta відповідає за власну attribution та optimization, трекер — за детермінований маршрут кліку, CRM/payment system — за факт і фінальний статус транзакції. Звірка пов’язує всі три шари.

Чому після CAPI стало більше конверсій?

Це може бути кращий matching або Pixel+CAPI duplicates. Перевірте event IDs, transaction mapping і Events Manager response до висновку про uplift.

Підсумок

Починайте з data contract: один click record, один transaction ID, явний status mapping і журнал доставки в Meta. DarkCore Analytics та Finance пов’язують source context із підтвердженою виручкою та дають export для повторної перевірки.

  • розходяться конверсії facebook і трекер
  • facebook ads не збігаються конверсії
  • meta capi дедуплікація
  • звірка конверсій
  • атрибуція facebook