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

Параметри Postback URL: Click ID, Sub ID та макроси без плутанини

Один токен кліку проходить повний server-to-server цикл конверсії через три різні трекінгові реле

Найбільше плутанини часто викликає цілком невинний Postback URL:

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

Чому зліва написано click_id, а справа — {subid}? Де тут справжній click ID? І чому інший трекер для тієї самої задачі може використовувати cid={s2}?

Коротка відповідь: у параметра постбека є два власники. Трекер, який приймає запит, визначає ключ зліва від =. Партнерська мережа, яка надсилає запит, визначає макрос справа. У момент відправлення мережа замінює макрос реальним значенням. Назви не зобов’язані збігатися — збігатися має значення.

Нижче розберемо це мапування, різницю між click ID та sub ID і тести, які справді доводять, що постбек працює. Якщо спочатку потрібна загальна механіка server-to-server, прочитайте що таке S2S-трекінг постбеків.

Три різні речі, які називають «макросом»

Візьмемо таку пару:

click_id={subid}

У ній є три окремі рівні:

РівеньПрикладХто контролюєЗавдання
Ключ параметра приймачаclick_id=Трекер, що приймає запитПоказує, звідки приймачу читати значення
Макрос відправника{subid}Мережа, що надсилає запитПоказує, яке збережене значення підставити
Реальне значення8f2a91c0d3Створене раніше у флоу клікуІдентифікує конкретний клік

Після підстановки макросів у запиті вже немає фігурних дужок:

https://track.example.com/p?click_id=8f2a91c0d3&status=deposit&payout=45.00

Якщо в сирому запиті досі видно click_id={subid}, мережа не розпізнала або не розкрила макрос. Браузер може навіть отримати 200 OK, але атрибуція вже зламана.

Порожній роз'єм приймача, змінний трафарет токена та кінцеве підставлене значення як три окремі рівні

Click ID і sub ID: пов’язані, але не однакові

Click ID — унікальний ідентифікатор одного відстеженого кліку. Це ключ зв’язку між вихідним переходом і пізнішою конверсією. Якщо клікнули 10 000 людей, трекер має створити 10 000 click ID.

Sub ID — універсальне поле для перенесення або зберігання значення. У ньому може лежати click ID трекера, але також плейсмент, код баєра, креативний підхід чи назва кампанії. sub1=facebook_feed корисний для сегментації, однак не є унікальним ідентифікатором кліку.

Саме тому мережа може попросити передати ваш click ID у своє поле subid, aff_sub, s2 або sub1. Вона не змінює сам ідентифікатор. Вона зберігає його у вільному слоті, щоб повернути те саме значення після конверсії.

Не плутайте їх із такими даними:

  • Campaign, ad set чи ad ID: визначає групу кліків, а не один клік. Для цієї ієрархії використовуйте мапування URL-параметрів Facebook або мапування макросів TikTok.
  • fbclid або ttclid: ідентифікатор кліку рекламної платформи. Він допомагає атрибуції платформи, але трекеру все одно потрібен стабільний внутрішній click ID для пошуку конверсії.
  • Transaction ID: визначає одну конверсію. Один клік може дати реєстрацію, перший депозит і повторний депозит — з окремим transaction ID для кожної події.

Повний цикл від кліку до постбека

Уявімо, що DarkCore відправляє трафік у партнерську мережу, де доступне поле aff_sub.

1. Трекер створює click ID

Користувач відкриває Track Link. DarkCore записує контекст джерела й створює:

dc_01K2A7M9X4

2. Трекер передає його в оффер

URL оффера містить вихідний макрос DarkCore:

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

Перед редіректом DarkCore підставляє реальне значення:

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

Мережа отримує його у своєму ключі aff_sub і зберігає.

3. Мережа повертає значення

У налаштуваннях постбека мережі напрямок змінюється:

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

Тепер click_id і transaction_id — ключі, які розуміє трекер-приймач. {aff_sub}, {status}, {payout} та {conversion_id} — макроси, які розуміє мережа-відправник.

4. Трекер атрибутує конверсію

Реальний callback може мати такий вигляд:

https://track.example.com/p?click_id=dc_01K2A7M9X4&status=ftd&payout=45.00&transaction_id=conv_7719

Трекер знаходить початковий клік, мапить ftd у потрібний статус конверсії, додає payout і використовує conv_7719, щоб розпізнати буквальний повтор.

Це і є весь контракт постбека: передати вперед одне точне значення click ID, зберегти його без змін і повернути під ключем, який приймає трекер.

Чому синтаксис макросів у трекерах і мережах відрізняється

Універсального стандарту макросів немає. Кожен продукт має власний шаблонізатор і словник параметрів.

В офіційному гайді Keitaro для пошуку кліку використано subid і описано псевдоніми вхідних параметрів. Документація Voluum показує, як те саме значення змінює назви на маршруті: Voluum-макрос {clickid} можна зберегти в полі мережі s2, а потім повернути у Voluum як cid={s2}. Affise документує варіанти {clickid} і {click_id} залежно від інтеграції.

Практичне правило просте:

Зліва використовуйте параметр, який приймає ваша система. Справа — точний синтаксис макроса із документації системи-відправника.

Не копіюйте весь шаблон постбека з іншого трекера лише тому, що концепції схожі. {click_id}, {clickid}, {subid}, ${click_subid} і {s2} десь можуть позначати значення кліку, але це не взаємозамінний синтаксис шаблонів.

Які параметри постбека приймає DarkCore

DarkCore приймає поширені псевдоніми, тому партнеру не завжди потрібно перейменовувати власні поля:

ЗначенняДопустимі вхідні ключі
Click IDclick_id, clickid, cid, subid, sub_id
Статусstatus, goal, event
Payoutpayout, sum, amount, revenue
Transaction IDtransaction_id, txid, tx_id, transactionid, conversion_id, conv_id
Час конверсіїevent_at, event_time

Це ключі вхідного запиту, а не обіцянка, що кожна мережа розуміє однойменні макроси. Якщо мережа документує {click_subid}, правильне мапування може виглядати так:

https://track.example.com/p?click_id={click_subid}&status={goal}&payout={commission}

Справа використовуйте точні макроси мережі. Зліва — один із ключів, які приймає трекер.

Статус, payout і transaction ID мапляться окремо

Повернути click ID необхідно, але цього недостатньо для повного запису конверсії.

Статус

Мережі можуть надсилати lead, reg, registration, sale, deposit, dep або ftd. Замапте сирі значення мережі на статуси конверсій у вашому workspace. Навіть правильно знайдений клік із неправильним статусом може піти не за тим маршрутом або не потрапити в метрику оптимізації.

Payout

Передавайте числову комісію, а не форматований рядок на кшталт $45 USD. Окремо перевірте, що означає макрос мережі: валову виручку, вашу комісію чи суму замовлення. Число може успішно розпарситися, але все одно бути не тією бізнес-метрикою.

Transaction ID

Коли мережа має унікальний ID конверсії, завжди передавайте його. У DarkCore наявний transaction ID робить ідемпотентність окремою для цієї конверсії та статусу. Без нього безпечний fallback — click ID плюс канонічний статус. Різниця критична, коли один клік може породити кілька реальних транзакцій.

Журнал конверсій приймає перший токен, а захищений бічний шлюз утримує ідентичний повтор

Pass/fail-перевірка всього ланцюга

Не завершуйте тест словами «URL відкрився» або «ендпоїнт повернув 200». Зафіксуйте доказ на кожному переході:

ТестУмова passPass?
Початковий клікТрекер записав новий клік і створив click ID
Вихідний URL оффераМережа отримала точний click ID, у значенні не залишилось {click_id}
Збереження в мережіУ її логу кліків/конверсій видно те саме значення в налаштованому sub-полі
Сирий постбекПовернене значення побайтно збігається та лежить у допустимому click-ключі
СтатусСирий статус замаплено в правильну канонічну конверсію
ТранзакціяЄ унікальний ID конверсії, якщо мережа його надає
ВиручкаPayout є числом і відповідає погодженій бізнес-величині
ПовторТой самий transaction не дублює конверсію чи виручку
ЗвітністьКонверсія з’явилась на початковому кліку, кампанії та стрімі

Скористайтеся Postback URL Builder і S2S-тестером, щоб зібрати callback і отримати безпечну тестову команду. Потім перевірте сирий ingress-лог і фінальний рядок конверсії. 200 OK показує лише відповідь ендпоїнта; він не доводить, що клік знайдено, статус правильний, а payout означає саме те, що ви очікували.

Повний приклад від outbound link до callback є в гайді про affiliate tracking link. Якщо click належить Keitaro, використовуйте окрему інструкцію з Keitaro postback для subid, status training, payout і tid.

Типові поломки

  • У проді повернулися фігурні дужки. Відправник не розпізнав макрос. Перевірте його документацію і чи підтримує конкретне поле postback-макроси.
  • Click ID змінив регістр, довжину або кодування. Сприймайте його як непрозорий рядок. Не парсьте, не обрізайте й не збирайте заново між системами.
  • Замість click_id повертається campaign ID. Тисячі кліків схлопуються в одне неунікальне значення, тому атрибуції довіряти не можна.
  • Передача вперед працює, повернення — ні. Макроси URL оффера належать трекеру, а макроси постбека — мережі. Напрямок змінився, отже змінився і шаблонізатор.
  • Видно тільки реєстрацію. Для депозиту може бути окреме поле URL або сирий статус, який ніхто не замапив.
  • Кожен retry додає виручку. Передайте стабільний transaction ID і двічі повторіть ідентичний callback.
  • У sub ID записали чутливі дані. Не передавайте email, телефон, ім’я чи інший прямий ідентифікатор у query-параметрах. URL регулярно потрапляють у логи доступу та кабінети партнерів.

FAQ

subid — це те саме, що click_id?

Не за визначенням. click_id описує роль значення — унікально визначити один клік. subid описує гнучке поле зберігання. Sub ID стає носієм click ID лише тоді, коли ви навмисно записали туди click ID.

Назви з обох боків = мають збігатися?

Ні. click_id={subid} є коректним, якщо приймач очікує click_id, а відправник зберігає ваше значення кліку під subid. Важливо, щоб збіглось підставлене значення.

Чи можна використовувати один Postback URL для всіх статусів?

Так, якщо мережа підставляє макрос статусу, а трекер мапить усі потрібні вам значення. Якщо мережа дає окремі callback-поля для різних цілей, налаштуйте кожне явно.

Чому постбек повернув 200, але конверсія не з’явилась?

Багато ендпоїнтів навмисно відповідають загальним success навіть на некоректний, невідомий або дубльований callback — щоб не створювати retry storm і не розкривати внутрішній стан. Перевірте ingress result, пошук кліку, мапування статусу та фінальний запис конверсії.

Ментальна модель, яка не застаріває

Не запам’ятовуйте всі варіанти написання макросів. Натомість простежте власників:

  1. Хто створює значення click ID?
  2. Під яким ключем наступна система його приймає та зберігає?
  3. Яким макросом ця система повертає збережене значення?
  4. Який вхідний ключ приймає трекер?
  5. Який transaction ID не дає повтору перетворитися на зайву виручку?

Коли ці п’ять відповідей записані, різний синтаксис трекерів перестає бути загадкою. Це лише адаптери навколо одного інваріанта: той самий ідентифікатор кліку має пройти весь цикл без змін.

  • параметри postback url
  • макроси постбека
  • click id трекінг
  • sub id трекінг
  • трекінг арбітражу