Исходящие постбэки (S2S)¶
Когда партнёрка сообщила о конверсии, её нужно вернуть в рекламный кабинет — иначе источник не научится искать похожих людей. Для этого трекер сам дёргает URL источника.
Где задаётся URL¶
Шаблон берётся из первого непустого поля:
| Приоритет | Где | Поле |
|---|---|---|
| 1 | Кампания | S2S postback URL (исходящий) |
| 2 | Источники → карточка источника | Postback URL (шаблон) |
URL кампании выигрывает всегда. Шаблон источника — общий дефолт для всех кампаний, привязанных к этому источнику: настроили один раз, и новым кампаниям дописывать нечего. Пустое поле кампании означает «взять шаблон источника», а не «ничего не отправлять».
Источник, созданный кнопкой 📚 Каталог, у части сетей (MGID, RichAds,
Notix, Kadam, ClickAdilla, PropellerAds, Adsterra, Taboola…) приезжает с уже
заполненным шаблоном — в нём остаётся подставить свои доступы (YOUR_TOKEN у
MGID, RichAds, Notix, Kadam и ClickAdilla, YOUR_ACCOUNT_ID у PropellerAds,
YOUR_AID у Adsterra) и заменить плейсхолдер click_id самой сети на макрос
трекера. Шаблон Taboola приезжает без токена и уже с {click_id} — править в
нём нечего. У Facebook, Google Ads, TikTok и Яндекс.Директа шаблон в каталоге
пустой — эти площадки принимают конверсии не постбэком.
Правки применяются сразу: и карточка источника, и кампания перезагружают кеш трекера сразу после сохранения. Авто-reload раз в ~30 секунд — только подстраховка на случай, если перезагрузка не удалась.
Если конверсии в ту же площадку уже уходят через Facebook CAPI или TikTok Events, оба поля оставляют пустыми — иначе источник получит событие дважды.
Макросы¶
В исходящем URL работает свой короткий набор — не весь справочник макросов:
| Макрос | Значение |
|---|---|
{click_id} · {subid} |
ID клика в трекере |
{status} |
статус конверсии |
{payout} · {revenue} |
сумма выплаты |
{currency} |
валюта |
{txid} |
ID транзакции партнёрки |
{sub_id_1} … {sub_id_30} |
sub-параметры клика; альтернативное написание {subid_1} тоже принимается |
Значения подставляются уже URL-кодированными. Всё остальное остаётся в адресе
как есть — в том числе плейсхолдеры сетей вроде {clickid}, [CLICK_ID] или
${SUBID}: их нужно заменить руками.
Источнику нужен его собственный click id
fbclid у Facebook, ttclid у TikTok, click id пуш-сетей — всё это
приходит в tracking-ссылке как sub-параметр. Возвращать надо именно его:
{click_id} трекера источник никогда не видел и сматчить не сможет.
Подставляйте {sub_id_N} с тем номером, куда параметр разложен в карточке
источника.
Когда уходит¶
Постбэк отправляется сразу после того, как конверсия записана — и для конверсии
из постбэка партнёрки, и для браузерной (/action, /px.gif).
Запрос всегда GET, таймаут 10 секунд, из ответа сохраняются первые 4 КБ.
Исключение — браузерная конверсия без валидного пер-кликового токена: в отчётах она есть, но наружу не уходит вообще — ни исходящим S2S, ни в CAPI, ни в вебхуки. Так подделанное с лендинга событие не сожжёт бюджет источника. Подробнее — Click API и SDK.
В {status} и в фильтре статусов подставляется канонический статус — уже после
маппинга статусов сети, а не то, что прислала партнёрка.
Набор статусов, о которых сообщают источнику, — поле кампании s2s_statuses.
Пустой список означает «отправлять все статусы», включая rejected и trash.
Фильтр статусов есть только в API
В панели поля s2s_statuses нет, и при сохранении кампании интерфейс его не
передаёт — фильтр сбрасывается в пустой, то есть в «все статусы». Задавать и
удерживать его можно только через админ-API.
Только публичные адреса
Исходящие постбэки идут через SSRF-защищённый клиент: соединение с loopback,
link-local (включая 169.254.169.254) и приватными диапазонами обрывается на
этапе подключения — на каждом редиректе тоже. Приёмник должен быть доступен
из интернета, иначе в журнале будет ошибка blocked.
Ретраи и DLQ¶
Повторяются сетевые ошибки, 5xx, 429 и 408. Остальные ответы, включая
прочие 4xx, считаются окончательными: повторять те же байты бессмысленно,
такой постбэк остаётся только в журнале и в DLQ не попадает.
Всего три попытки: сразу, через 30 секунд и ещё через минуту. После третьей неудачи постбэк уходит в DLQ (очередь недоставленных).
DLQ — не свалка, а рабочий инструмент: Настройки → DLQ, блок «Исходящие postback'и». В строке видно click_id, статус, число попыток, последнюю ошибку и время следующей попытки; кнопка «Повторить» — на строке, «Повторить все» — над таблицей.
Ждать вручную обычно не нужно: раз в минуту трекер сам забирает из DLQ строки, у которых подошло время следующей попытки (первая — через 10 минут после попадания). «Повторить все» эту паузу игнорирует — она для случая «приёмник точно починился».
Журнал¶
Раздел Постбэки показывает обе стороны: in — что прислала партнёрка,
out — что трекер отправил источнику: время, направление, код ответа, click_id,
итоговый URL с подставленными макросами и ошибку. Это первое место, куда стоит
смотреть при разборе «источник не видит конверсий».
Вебхуки¶
Если конверсию нужно отдать не источнику, а своей системе, используйте вебхуки — они шлют события трекера на ваш эндпоинт с подписью.