Postback у Keitaro працює, коли партнерська мережа повертає точний subid початкового кліку й передає валідний status. payout, currency і tid роблять запис повним, але обов’язковий контракт — subid плюс status.
Загальна форма:
https://tracker.example/POSTBACK_KEY/postback?subid={NETWORK_CLICK_MACRO}&status={NETWORK_STATUS_MACRO}&payout={NETWORK_PAYOUT_MACRO}&tid={NETWORK_TRANSACTION_MACRO}
Macros праворуч потрібно замінити точними placeholders вашої мережі. Keys ліворуч належать Keitaro.
Які параметри очікує Keitaro
Згідно з офіційною документацією Keitaro:
| Параметр | Обов’язковий | Призначення |
|---|---|---|
subid | Так | Click ID, за яким знаходиться початковий візит |
status | Так | Conversion type або raw value для status training |
payout | Ні | Дохід за конверсією |
currency | Ні | Валюта до конвертації у currency трекера |
tid | Ні | Transaction ID для окремого запису повторних конверсій |
Keitaro підтримує aliases вхідних ключів. Налаштовуйте їх явно: clickid і profit не зобов’язані працювати без відповідної Alias-конфігурації.
Крок 1. Передайте {subid} в offer
Keitaro створює {subid} на вході в campaign. Мережа має зберегти його у своєму полі.
https://network.example/offer?aff_sub={subid}
або:
https://network.example/offer?sub1={subid}
Вибір поля залежить від мережі. Ready-made template може додати його автоматично; за ручного налаштування перевірте delivered URL. У ньому має бути реальне значення, а не рядок {subid}.
Крок 2. Поверніть значення в postback
Якщо мережа зберігає клік в aff_sub і розкриває {aff_sub}, callback виглядає так:
https://tracker.example/POSTBACK_KEY/postback?subid={aff_sub}&status={status}&payout={payout}&tid={conversion_id}
Runtime-запит має містити resolved values:
https://tracker.example/POSTBACK_KEY/postback?subid=cb0d82f4a2&status=sale&payout=42.50&tid=conv_98211
Крок 3. Зафіксуйте mapping статусів
Мережа може надсилати new, reg, approved, deposit, billed або rejected. До запуску оформіть таблицю:
| Raw status | Keitaro type | Сенс |
|---|---|---|
new | Registration | Реєстрація без підтвердженого payout |
lead | Lead | Hold/unconfirmed revenue |
sale / approved | Sale | Підтверджений дохід |
deposit | Deposit або custom FTD | Значення за договором із партнером |
rejected | Rejected | Скасування або коригування |
Невідомий status без training може бути проігнорований, навіть якщо endpoint відповів успішно.
Крок 4. Використовуйте tid для реальних повторів
Один click може дати registration, FTD і redeposit. Одна business event має стабільний transaction ID:
- той самий retry → той самий
tid; - нова реальна transaction → новий
tid; - не генеруйте новий random ID на кожен retry.
Pass/fail перевірка
| Етап | Потрібний факт |
|---|---|
| Campaign click | У Keitaro є реальний click і subid |
| Offer URL | Мережа отримала це значення в погодженому полі |
| Network storage | Значення видно в click/conversion log |
| Raw callback | У postback log немає literal placeholder |
| Click lookup | Немає помилки Click for subid not found |
| Status | Подія отримала потрібний conversion type |
| Payout | Дохід і currency відповідають контракту |
| Idempotency | Повтор однієї transaction не додає revenue |
| Reporting | Конверсія стоїть на початковій campaign та route |
Офіційний troubleshooting Keitaro рекомендує той самий порядок: спочатку довести передачу subid, потім читати postback log і перевіряти conversion type.
Часті помилки
- Click for subid not found: мережа повернула порожнє, literal або інше значення.
- Postback status is not set: status macro не розкрився або параметр відсутній.
- Conversion type not found: створіть custom type або status training.
- Incorrect postback code: скопіюйте актуальний endpoint із Settings → Postback URL.
- Одна конверсія перезаписує іншу: додайте стабільний
tidдля окремих подій.
Якщо між Keitaro та offer є PWA або routing layer, кожен redirect має зберігати subid, fbclid, ttclid і campaign fields. Використовуйте Click ID vs Sub ID, Postback URL Builder і чекліст діагностики.
Налаштування проходить acceptance лише тоді, коли один контрольований click створює одну правильно типізовану conversion на початковому рядку Keitaro з правильним payout, а ідентичний callback не додає її вдруге.