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

Не приходить постбек: діагностика Click ID, макросів, статусів і дублів

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

Постбек може повернути 200 OK і не створити конверсію. Він може з’явитися в трекері, але не дійти до рекламної платформи. А повторний callback інколи виглядає як ще один продаж, хоча це лише retry партнерської мережі.

Тому питання «чи прийшов постбек» надто загальне. Перевіряйте чотири незалежні шари: доставку запиту, пошук кліку, інтерпретацію події та запис результату. Цей порядок знаходить точну межу збою.

Для ролей параметрів відкрийте гайд про Click ID, Sub ID і макроси, а для контрольного callback використайте Postback URL Builder.

Як виглядає справний ланцюжок

  1. Трекер створює унікальний внутрішній click ID.
  2. ID передається в офер через погоджене sub-поле.
  3. Партнерська система зберігає значення без змін.
  4. Під час конверсії вона розкриває свій postback-макрос.
  5. Трекер знаходить початковий клік і нормалізує статус.
  6. Стабільний transaction ID не дає retry подвоїти виручку.
  7. Потрібна подія надсилається в Meta, TikTok або іншу платформу.

Pass/fail-чекліст

ДілянкаОчікуванняДоказPass?
Вхідний клікСтворено один унікальний click IDRaw click record
URL офераID потрапив у потрібне sub-полеФінальний URL після redirect
ЗберіганняМережа зберегла значення побайтноClick/conversion log
Callback URLМакроси розкриті, дужок немаєСирий URL запиту
HTTPЗапит дійшов до правильного endpointКод, час, response body
Пошук клікуТрекер знайшов початковий IDIngress result
СтатусСире значення стало потрібною подієюТаблиця мапінгу
ГрошіPayout і currency мають узгоджений змістЗапис мережі
DedupПовтор не додає конверсіюПовторіть той самий transaction
FeedbackПлатформа прийняла правильну подіюCAPI/Events API log

1. Зафіксуйте один контрольний клік

Не діагностуйте на тисячах live-переходів. Створіть один клік і запишіть точний час із timezone, internal click ID, campaign, stream, offer, повний outbound URL і поле мережі для ID.

Click ID — непрозорий рядок. Не обрізайте його, не переводьте в число, не змінюйте регістр і не збирайте заново.

2. Перевірте передачу вперед

Якщо мережа приймає довільне значення в aff_sub:

https://network.example/offer?aff_sub={click_id}

після redirect має бути реальне значення:

https://network.example/offer?aff_sub=dc_01K2A7M9X4

Літеральні {click_id} або %7Bclick_id%7D означають, що макрос не розкрився. Якщо ID зникає на проміжному redirect, спочатку виправте forward-path.

3. Аналізуйте сирий callback

Збережений шаблон не доводить, який запит реально відправила мережа. Порівняйте шаблон:

https://track.example/p?click_id={aff_sub}&status={status}&payout={payout}

із фактичним запитом:

https://track.example/p?click_id=dc_01K2A7M9X4&status=dep&payout=45.00&txid=7719

Переконайтеся, що макроси розкриті, click ID збігається, символи URL-encoded, а endpoint належить потрібному workspace. Діагностичний гайд Adset також виділяє сирі макроси, змінений ID, неправильні статуси й авторизацію як типові причини.

4. 200 OK не дорівнює записаній конверсії

HTTP success доводить лише транспорт. Endpoint може так само відповісти на невідомий click ID, дубль або пропущений статус. У журналі потрібен результат на кшталт accepted, duplicate, click_not_found, status_unmapped, invalid_payout або unauthorized.

Якщо raw log немає, використайте request catcher лише для контрольного тесту. Не передавайте туди production-токени чи персональні дані.

5. Мапте статус окремо

Знайдений клік ще не означає правильну бізнес-подію:

Сирий статусВнутрішній статусВідправляти в платформу?Revenue?
regRegistrationЗа policy оптимізаціїНі
depFirst depositТакТак
approvedApprovedНе дублювати purchaseТак
rejectedRejectedНі або correctionНі

DarkCore керує цим у Conversion Statuses. Не зводьте реєстрацію і депозит до одного Lead.

6. Перевірте payout і correction

payout=45 може означати комісію, дохід рекламодавця або суму замовлення. Узгодьте семантику, передавайте currency окремо й перевірте десятковий роздільник. Зміна статусу або суми має оновити ту саму транзакцію, а не створити новий sale.

7. Проведіть duplicate test

Відправте ідентичний callback двічі. Перший має створити подію, другий — отримати результат duplicate. Кількість конверсій, revenue і downstream feedback не повинні зрости.

Dedup робіть за transaction ID плюс тип події. Один click ID недостатній, якщо клік може дати registration, FTD і repeat deposit.

8. Трекер бачить, а Meta або TikTok — ні

Перевірте policy відправки статусу, збереження fbclid/fbc чи ttclid, access token, відповідь API та спільний event_id для Browser Pixel і серверної копії. Ролі каналів розібрані в Pixel vs CAPI vs Postback. TikTok офіційно описує TTCLID як параметр landing URL для атрибуції та вимірювання (TikTok Ads Help).

Симптоми

СимптомЩо перевіряти першим
У запиті залишилися {...}Точний синтаксис макроса відправника
click_not_foundForward-поле і значення click ID
Є registration, немає depositОкремий callback і dep/ftd mapping
Revenue подвоюєтьсяTransaction ID та idempotency
Трекер бачить, Meta ніPlatform ID, token, policy, API log
Meta показує більшеВікно, modeling і Pixel+CAPI dedup

FAQ

Чому ручний postback працює, а реальний — ні?

Ручний тест часто має правильно підставлений ID, а production-шаблон надсилає порожнє значення або буквальний макрос. Порівняйте сирі URL побайтно.

Чи можна тестувати через браузер?

Можна перевірити доступність GET-endpoint. Браузер не доводить, що мережа розкриває макроси, додає авторизацію і виконує retry policy.

Коли проблему закрито?

Після end-to-end тесту: контрольний клік → офер → перший callback → точний повтор → зміна статусу/суми → platform feedback. Результатом має бути заповнена pass/fail-таблиця.

  • не приходить постбек
  • не працює postback
  • помилка click id
  • макроси постбека
  • s2s tracking