Входящий постбек: приём конверсий от партнёрской сети
Где взять адрес постбека, какие параметры он принимает и что трекер отвечает партнёрской сети.
Входящий постбек — запрос, которым партнёрская сеть сообщает трекеру о лиде, продаже или отклонении. Адрес берётся в панели и вписывается в настройки сети, макросы в нём заменяются на макросы этой сети. Общая схема приёма конверсий описана на странице Как трекер получает конверсии.
Где взять адрес
Адрес показан в двух местах панели. Оба адреса рабочие: первый ведёт на домен трекинга, второй — на домен панели, часть параметров названа по-разному.
Раздел «Сети»
Раздел видят все роли, кроме финансиста. Добавлять и удалять сети могут владелец и администратор.
- Откройте Сети.
- В блоке URL постбэка приёма конверсий нажмите Копировать.
- Вставьте адрес в настройки постбека партнёрской сети.
- Замените
{click_id},{status},{payout}и{txid}на макросы сети.
Адрес выглядит так:
https://track.example.com/api/v1/postback?subid={click_id}&status={status}&payout={payout}&txid={txid}Если партнёрская сеть добавлена в список, в колонке URL постбэка показан её адрес с дополнительными параметрами. Скопируйте его кнопкой копировать в строке сети.
Мастер во вкладке «Postback»
Вкладку видят владелец и администратор.
- Откройте Настройки → Postback. Блок называется Входящий S2S postback.
- Выберите Источник.
- Выберите Статус:
lead,sale,rejectedилиhold. По умолчанию выбранlead. - Если у источника задан секрет, введите его в поле Секрет источника. Сохранённый секрет панель не показывает.
- Нажмите Копировать шаблон. Появится сообщение «Скопировано».
- В партнёрской сети замените
{subid},{payout}и{transaction_id}на её макросы. - Если сеть платит не в долларах, замените
USDна код валюты выплаты.
Шаблон мастера:
https://panel.example.com/api/v1/postback?subid={subid}&status=lead&payout={payout}¤cy=USD&tid={transaction_id}Значение status в шаблоне постоянное. Если сеть передаёт статус макросом, подставьте макрос вместо значения.
Кнопка Копировать шаблон недоступна, пока не выбран источник, а для источника с секретом — пока не введён секрет.
Параметры запроса
| Параметр | Что передаёт | Правила |
|---|---|---|
subid или click_id | ID клика трекера | Обязателен. От 1 до 64 символов: латинские буквы, цифры, _ и -. Если переданы оба, берётся click_id |
status | Статус конверсии в сети | Регистр и пробелы по краям не учитываются. Пустой статус записывается как lead |
payout | Сумма выплаты | Принимаются 12.5, 12,50, 1,250.00, 1.250,00, $12.5, 12.50 USD. Не больше 1 000 000 000 |
currency | Валюта выплаты | Три латинские буквы, регистр не учитывается. Не передана — берётся валюта оффера, затем USD |
txid или tid | ID транзакции в сети | Если переданы оба, берётся txid |
secret | Секрет источника | Обязателен, если у источника клика задан секрет |
cost | Расход по этой конверсии | Число от нуля или auto. Число заменяет расход по модели CPA, CPS или RevShare, auto возвращает расчёт по модели кампании. Пересчитывается по тому же курсу, что и выплата |
lead_status, sale_status, rejected_status, ignore_status | Сопоставление статусов сети | Значения через запятую, каждый список до 2048 байт |
Чтобы сеть вернула ID клика, передайте его в ссылке оффера макросом {subid}, например sub1={subid}. Имя параметра задаёт сеть. Список макросов — на странице Макросы в ссылках и страницах.
GET, POST и домены
Трекер принимает постбек методами GET и POST. В теле POST параметры передаются как application/x-www-form-urlencoded или JSON-объектом с заголовком Content-Type: application/json. Размер тела — до 1 МиБ. Если параметр есть и в адресе, и в теле, берётся значение из адреса.
Путь /api/v1/postback работает на домене панели, на основном домене трекинга и на доменах кампаний, добавленных в панели. Авторизация не нужна.
Как определяется статус
Трекер проверяет значение status по порядку:
- Списки в самом постбеке. Значение из
lead_statusзаписывается какlead, изsale_status— какsale, изrejected_status— какrejected. При значении изignore_statusконверсия не записывается. - Типы конверсий во вкладке Настройки → Конверсии. Берётся первый по порядку создания тип, в чьих значениях есть этот статус.
- Если совпадений нет, статус записывается как пришёл, строчными буквами.
Пример: сеть шлёт approved, declined и pending, и ожидающие конверсии учитывать не нужно. Допишите к адресу:
&sale_status=approved&rejected_status=declined&ignore_status=pendingСтатус hold через списки в адресе не задаётся — для него создайте тип конверсии.
Выплата и валюта
Откуда берётся сумма, зависит от настроек оффера:
- У оффера включён флажок Выплата из параметра постбэка — сумма берётся из параметра
payout. Другое имя параметра задаётся через API полемpayout_param, см. Admin API: офферы. - У оффера указана выплата больше нуля — записывается выплата оффера, значение из постбека не используется. Для статусов
leadиrejectedзаписывается 0. Еслиstatusв постбеке пустой, записывается выплата оффера. - В остальных случаях, а также когда клик пришёл без оффера, сумма берётся из параметра
payout.
Сумма пересчитывается в USD по курсу на дату приёма постбека. Курсы настраиваются во вкладке Настройки → Валюты, см. Валюты и курсы. Если курса для валюты нет, трекер отвечает кодом 422 и конверсию не записывает.
Сумма, которую не удалось разобрать, отрицательная или больше предела записывается как 0. В журнале Логи → Postbacks появляется строка «Выплата в postback не распознана или недопустима — записан 0».
ID транзакции
По txid трекер отличает повтор постбека от новой конверсии по тому же клику:
- Тот же
txid, тот же статус и та же выплата — повтор пропускается, дубль не создаётся. - Тот же
txid, тот же статус, в постбеке другая выплата — выплата конверсии исправляется. - Тот же
txid, новый статус — конверсия обновляется. - После
saleприходитleadилиholdс тем жеtxid— постбек пропускается, продажа остаётся. txidне передан — постбек не сравнивается с прежними: по клику остаётся одна конверсия с последним статусом и суммой, а событие каждый раз уходит получателям.
Незаменённый макрос вида {txid} трекер считает пустым значением. Подробные правила — на странице ID транзакции, дубли и корректировки конверсий.
Если сеть не даёт макрос ID транзакции, удалите &txid={txid} из адреса. Без txid повторный постбек сети второй раз отправит событие в источник и получателям кампании, а поздний lead заменит продажу в отчётах.
Секрет источника
Если у источника задан секрет, трекер принимает постбек только с верным параметром secret. Секрет задаётся у источника трафика, а не у сети: трекер проверяет секрет источника, с которого пришёл клик. Клик без источника секрета не требует. Задать секрет могут владелец и администратор.
- В разделе Источники выберите источник.
- Введите значение в поле Секрет постбэка/лида.
- Нажмите Сохранить.
- Добавьте к адресу постбека в партнёрской сети параметр
&secret=значение. Мастер Настройки → Postback дописывает его сам, в адрес из раздела Сети добавьте его вручную.
Сохранённый секрет показан в поле как ***. Чтобы сменить секрет, введите новое значение и сохраните. Пустое поле и *** оставляют прежний секрет. Чтобы убрать секрет, нажмите Удалить рядом с полем, затем Сохранить.
После сохранения секрета постбеки без параметра secret по кликам этого источника получают ответ 401 и не записываются. Параметр secret можно добавить в адрес заранее: пока секрет у источника не задан, трекер его не проверяет.
Ответы трекера
| Код | Ответ | Причина |
|---|---|---|
| 200 | ok | Конверсия принята. Тот же ответ приходит на повтор и на поздний статус после продажи |
| 200 | {"ignored":true} | Статус входит в ignore_status, конверсия не записана |
| 400 | click_id (или subid) обязателен | В запросе нет ID клика |
| 400 | invalid postback body | Тело POST не разобрано или больше 1 МиБ |
| 401 | invalid postback secret | Секрет источника не передан или неверен |
| 404 | click not found | Клик с таким ID не найден или ID неверного формата |
| 422 | Неоднозначное сопоставление статуса сети | Пришедший статус указан в двух списках статусов, или один из списков длиннее 2048 байт |
| 422 | invalid currency | Валюта не из трёх латинских букв |
| 422 | cost must be non-negative or auto | Неверное значение cost |
| 422 | курс валюты на дату события не найден; добавьте курс в настройках и повторите | Нет курса для валюты выплаты |
| 429 | слишком много запросов, попробуйте позже | Больше 600 запросов в минуту с одного IP-адреса |
| 503 | temporary error, retry later | Временный сбой или клик ещё записывается. В ответе заголовок Retry-After: 5 |
| 503 | Tracker maintenance in progress | Идёт резервная копия, восстановление или обновление трекера |
Ошибки приходят в JSON с полями code и message, в таблице приведено значение message. Ответ на время обслуживания приходит обычным текстом. При ответах 429 и 503 сеть должна повторить запрос позже.
Клик попадает в статистику с небольшой задержкой, поэтому трекер ищет его около 1,5 секунды, прежде чем ответить 404.
Приём постбеков не зависит от лицензии: при истёкшей лицензии конверсии продолжают записываться. Что происходит с исходящими событиями, описано на странице Истечение лицензии: что закрыто и что работает.
Проверка
Для проверки отправьте постбек вручную. Раздел Логи доступен владельцу и администратору. Пример адреса, где SUBID — ID тестового клика:
https://track.example.com/api/v1/postback?subid=SUBID&status=lead&payout=1&txid=test-1Если у источника клика задан секрет, добавьте к адресу &secret=значение.
- Перейдите по ссылке кампании.
- В Логи → Клики и лиды скопируйте значение из колонки Subid у своего клика. Поиск описан на странице Поиск кликов и лидов.
- Откройте в браузере адрес постбека с этим subid.
- Убедитесь, что трекер ответил
ok. - В Логи → Postbacks введите subid в поле поиска. Когда клик найден, в журнале есть строка «Processing subid …» с ID кампании и статусом. Отказ по секрету, ненайденный клик и дубль тоже пишутся в этот журнал.
- В кампании нажмите Статистика.
- Найдите конверсию во вкладке Лог конверсий, см. Лог конверсий кампании.
Тестовый запрос создаёт настоящую конверсию: она попадёт в отчёты, а при настроенных исходящих постбеках уйдёт получателям. Используйте для проверки собственный тестовый клик.
Если конверсия не появилась, откройте страницу Постбек не приходит: что проверить.