Документация
Справочник по работе с CPA-платформой
На этой странице
Postbacks
Статус: draft
Назначение
Этот раздел нужен, чтобы рекламодатель понял, как вернуть результат целевого действия обратно в платформу: какой postback отправлять, какие параметры обязательны, как передавать clickId, goal и status, и как потом проверить, что конверсия появилась.
Где находится
Кабинет рекламодателя → Postbacks
Для пользовательской интеграции также нужен технический postback endpoint платформы.
Точный путь получения рабочего postback URL в интерфейсе рекламодателя не подтверждён.
TODO: уточнить, где именно рекламодатель получает рабочий postback URL и токен по офферу.
Что такое postback
Postback в этом проекте — это запрос от рекламодателя в платформу после целевого действия пользователя.
Через postback рекламодатель возвращает:
- идентификатор клика;
- цель;
- статус конверсии;
- при необходимости внешний идентификатор транзакции;
- подпись запроса.
Зачем нужен postback
Postback нужен, чтобы платформа смогла:
- связать целевое действие с исходным кликом;
- определить, к какому офферу относится конверсия;
- понять, какая цель была достигнута;
- проставить статус конверсии;
- отразить данные в статистике и финансах.
Без postback платформа видит только клик, но не получает результат.
Что видит рекламодатель
В кабинете рекламодателя раздел Postbacks показывает не настройку, а логи:
- список postback-событий;
- фильтр по датам;
- фильтр по
Offer ID; - фильтр по статусу postback-лога;
- HTTP-статус ответа;
clickId;conversionId, если конверсия была создана;- код ошибки, если postback завершился неуспешно;
- детальную карточку одной записи журнала.
Когда отправлять postback
Postback нужно отправлять после того, как на стороне рекламодателя произошло целевое действие по офферу.
Типовой сценарий:
- Пользователь переходит по tracking-ссылке.
- Рекламодатель получает и сохраняет
clickId. - Пользователь совершает целевое действие.
- Рекламодатель отправляет postback в платформу.
- Платформа создаёт или обновляет конверсию.
Если у вас есть двухэтапная логика, например сначала регистрация, а потом подтверждение, нужно заранее уточнить, какой статус отправлять на каждом этапе.
Куда отправлять postback
Подтверждён технический endpoint платформы:
/track/postback
Поддерживаются:
GETс query-параметрами;POSTс JSON body.
Для реальной интеграции нужен полный URL вашей платформы, например:
https://tracking.example.com/track/postback
Если домен и точный URL в вашем окружении отличаются:
TODO: уточнить точный формат postback URL по реализации.
Формат postback URL
Подтверждённый формат требует:
tokenоффера;clickIdилиclick_id;goalIdилиgoal_id;signature.
status опционален и по умолчанию становится pending.
externalTransactionId также поддерживается как опциональный параметр.
Обязательные параметры
| Параметр | Что означает | Пример | Обязательный |
|---|---|---|---|
token | Секретный postback-токен оффера | offer_conversion_token | Да |
clickId или click_id | Идентификатор клика | abc123 | Да |
goalId или goal_id | Идентификатор цели оффера | 550e8400-e29b-41d4-a716-446655440000 | Да |
signature | Подпись запроса | signed-value | Да |
status | Статус конверсии | approved | Нет, по умолчанию pending |
Опциональные параметры
| Параметр | Что означает | Пример |
|---|---|---|
externalTransactionId | Внешний ID заказа или транзакции | order-123 |
externalId | Алиас внешнего ID | order-123 |
external_id | Алиас внешнего ID | order-123 |
transactionId | Алиас внешнего ID | order-123 |
transaction_id | Алиас внешнего ID | order-123 |
amount | Сумма конверсии | 1500 |
payoutRub | Legacy-параметр для совместимости подписи | 1500 |
Важно:
amountкак рабочий пользовательский параметр интерфейсом рекламодателя не подтверждён;payoutRubупоминается как legacy-параметр совместимости, но не является авторитетным источником суммы;- деньги по конверсии рассчитываются платформой по офферу и цели.
Click ID
clickId — это идентификатор клика, который платформа передаёт в tracking-ссылке или редиректе.
Рекламодателю нужно:
- Получить
clickIdв момент перехода пользователя. - Сохранить его у себя.
- Вернуть этот же
clickIdобратно в postback после целевого действия.
Без clickId платформа обычно не сможет:
- найти исходный клик;
- связать конверсию с партнёром;
- корректно отразить статистику.
Если пользователь совершил действие без перехода через tracking-ссылку, корректной связи с кликом может не быть.
Goal
В этом проекте цель передаётся как:
goalId, либоgoal_id.
Важно:
- goal обязателен;
- goal должен относиться к тому же офферу, который определяется через
token; - silent fallback на "цель по умолчанию" не подтверждён, наоборот, текущая реализация требует явный
goalId.
Что это значит для рекламодателя:
- заранее определите, какой
goalIdсоответствует нужному событию; - не отправляйте выдуманное текстовое имя цели вместо идентификатора;
- если у оффера несколько целей, у каждой должен быть свой корректный
goalId.
Если вам известны только бизнес-названия вроде lead или sale, а не UUID цели:
TODO: уточнить, где рекламодатель получает точный goalId для интеграции.
Status
Параметр status можно передавать явно. Если его не передать, платформа использует pending.
Подтверждённые статусы конверсий:
pending;approved;rejected;cancelled.
Для базовой интеграции рекламодателю нужно понимать минимум три статуса:
pending— конверсия создана, но ещё не подтверждена;approved— конверсия подтверждена;rejected— конверсия отклонена.
Если в вашем процессе есть отмена:
cancelled— TODO: уточнить, должен ли рекламодатель использовать этот статус в своей интеграции.
Сумма
В интерфейсе и подтверждённой логике проекта деньги по конверсии не должны считаться доверенными значениями со стороны рекламодателя.
Подтверждено:
- revenue и payout вычисляются платформой по офферу и цели;
- переданные извне
revenue,payoutиprofitне считаются авторитетными; payoutRubможет использоваться только для legacy-совместимости подписи.
Поэтому рекламодателю не стоит строить интеграцию на предположении, что платформа возьмёт сумму из postback как основное финансовое значение.
Если в вашем конкретном сценарии нужно передавать сумму:
TODO: уточнить, используется ли amount в продакшн-интеграции вашего окружения.
Примеры postback URL
Ниже примеры с безопасным доменом и подтверждёнными именами параметров проекта.
Пример GET для approved
https://tracking.example.com/track/postback?token={offer_token}&click_id={click_id}&goal_id={goal_id}&status=approved&signature={signature}
Пример GET для pending
https://tracking.example.com/track/postback?token={offer_token}&click_id={click_id}&goal_id={goal_id}&status=pending&signature={signature}
Пример GET для rejected
https://tracking.example.com/track/postback?token={offer_token}&click_id={click_id}&goal_id={goal_id}&status=rejected&signature={signature}
Пример GET с внешним ID транзакции
https://tracking.example.com/track/postback?token={offer_token}&click_id={click_id}&goal_id={goal_id}&externalTransactionId=order-123&status=approved&signature={signature}
Пример POST
{
"token": "offer_conversion_token",
"clickId": "click-id-or-tracking-token",
"goalId": "goal-uuid",
"externalTransactionId": "order-123",
"status": "approved",
"signature": "signed-value"
}
Пример c amount
Ниже пример только как формат передачи параметра, без утверждения, что сумма будет принята как финансовое значение:
https://tracking.example.com/track/postback?token={offer_token}&click_id={click_id}&goal_id={goal_id}&status=approved&amount=1500&signature={signature}
Как подключить postback
Подготовить данные интеграции
- Получите рабочий postback URL платформы.
- Получите
tokenоффера. - Получите точные
goalIdдля нужных целей. - Уточните правило расчёта
signature.
Результат: у вас есть все технические данные для отправки postback.
Настроить сохранение click ID
- Убедитесь, что при переходе пользователя вы получаете
clickId. - Сохраните
clickIdв своей системе вместе с пользователем, заказом или событием. - Проверьте, что
clickIdможно достать в момент целевого действия.
Результат: платформа сможет связать конверсию с исходным кликом.
Отправить postback при целевом действии
- Дождитесь целевого действия в вашей системе.
- Соберите
token,clickId,goalId,statusиsignature. - Отправьте
GETилиPOSTна/track/postback.
Результат: платформа получит postback и попробует создать или обновить конверсию.
Проверить результат в кабинете
- Откройте раздел
Postbacks. - Найдите запись по дате,
Offer IDилиclickId. - Проверьте статус, HTTP-код и наличие
conversionId.
Результат: вы видите, был ли postback принят и создалась ли конверсия.
Как проверить postback
Простой сценарий проверки:
- Возьмите тестовую tracking-ссылку.
- Перейдите по ней как пользователь.
- Убедитесь, что клик появился в платформе.
- Сохраните полученный
clickId. - Отправьте тестовый postback с этим
clickId, правильнымgoalId,statusиsignature. - Откройте раздел
Postbacksи проверьте, что запись появилась. - Проверьте
conversionId, статус postback и отсутствие ошибки. - Сверьте, что конверсия отражается в Статистика и Финансы.
Отдельный тестовый режим postback в интерфейсе рекламодателя не подтверждён.
TODO: уточнить, есть ли отдельный тестовый режим postback в вашем окружении.
Основные поля
| Поле | Что означает | Когда используется |
|---|---|---|
| Offer ID | ID оффера, к которому относится postback | Когда нужно проверить, в тот ли оффер ушёл postback |
| Conversion ID | ID созданной конверсии | Когда postback уже обработан успешно |
| Click ID | Идентификатор исходного клика | Для поиска и сверки конверсии |
| Статус | Статус записи postback-лога | Для понимания этапа обработки |
| HTTP статус | HTTP-код ответа | Для технической диагностики |
| Ошибка | Код ошибки postback | Когда postback не засчитался |
| Создан | Дата создания записи | Для поиска по времени |
| Обновлён | Дата обновления записи | Для проверки последней обработки |
Фильтры и поиск
В разделе логов postback подтверждены:
Дата от;Дата до;Offer ID;- фильтр по статусу;
- пагинация;
- переход в детальную запись лога.
Отдельного текстового поиска по clickId в этом экране не подтверждено.
Статусы
Ниже важно различать два уровня статусов.
Статусы конверсии
| Статус | Что означает |
|---|---|
pending | Конверсия создана, но ещё не подтверждена |
approved | Конверсия подтверждена |
rejected | Конверсия отклонена |
cancelled | TODO: уточнить, используется ли рекламодателем в рабочем процессе |
Статусы записи postback-лога
| Статус | Что означает |
|---|---|
received | Запрос получен системой |
processed | Запрос обработан |
rejected | Запрос отклонён |
duplicate | Запрос определён как дубликат |
failed | При обработке произошла ошибка |
Почему postback не засчитался
Ниже перечислены практические причины, которые нужно проверить в первую очередь:
- не передан
clickId; - передан неверный
clickId; clickIdне найден в платформе;- рекламодатель не сохранил
clickIdу себя; - пользователь совершил действие без исходного клика через tracking-ссылку;
- не передан
goalIdилиgoal_id; goalIdне существует у этого оффера;statusпередан в некорректном значении;- postback отправлен на неправильный URL;
- не передан
token; - передан неправильный
token; - не передана
signature; signatureне прошла проверку;- postback отправлен повторно;
- конверсия уже создана;
- внешний ID транзакции конфликтует с уже существующей конверсией;
- оффер выключен или недоступен;
- postback не прошёл валидацию параметров.
Если нужна точная карта ошибок по кодам:
TODO: уточнить полный список errorCode, который может увидеть рекламодатель в логе postback.
Частые ошибки и ситуации
| Ситуация | Что проверить |
|---|---|
| Postback отправлен, но конверсия не появилась | Проверьте clickId, goalId, signature и лог в разделе Postbacks |
| Postback отклоняется | Проверьте HTTP-код и поле Ошибка в карточке postback |
| Использован не тот оффер | Сверьте Offer ID, token и goal нужного оффера |
| Конверсии попадают не в ту цель | Проверьте, какой goalId вы реально отправляете |
| Дубликаты postback | Проверьте, не отправляет ли ваша система одно и то же событие повторно |
| Есть клик, но нет связи с конверсией | Проверьте, был ли сохранён исходный clickId |
| Передаётся сумма, но финансы не совпадают | Учитывайте, что деньги считаются платформой по офферу и цели |
Ожидаемый результат
После работы с этим разделом рекламодатель должен:
- понимать, какой endpoint использовать для postback;
- знать обязательные параметры
token,clickId,goalIdиsignature; - понимать, как передавать
status; - сохранять и возвращать
clickId; - уметь отправить тестовый postback;
- уметь проверить результат в логах;
- понимать, почему postback может не засчитаться.