Перейти к содержимому

Постбэки партнёру

5 мин чтения

Партнёрская сеть узнаёт о судьбе своего лида только от вас. Не приходит постбэк — ваш оффер выглядит у них нулевым по конверсии, закупщик режет бюджет, и трафик уходит к тому, кто уведомления присылает. Поэтому постбэки настраивают в первый же день подключения партнёра, а не когда он начнёт спрашивать.

Зачем партнёру постбэк

Постбэк — это запрос от нас на адрес партнёра: «заказ такой-то перешёл в такое-то состояние». По нему партнёрская сеть закрывает конверсию у себя, считает выплату своему вебмастеру и решает, оптимизировать кампанию или выключить её. Ваш интерес тот же: у партнёра, который видит апрув в реальном времени, качество трафика выправляется само.

Партнёрская сетьПостбэки

Постбэк заводят на партнёра — тогда уведомления уходят только по его заказам. Вариант весь проект означает любые заказы, включая созданные вручную и принятые по телефону: так подключают не партнёрскую сеть, а собственный трекер или склад.

События

СобытиеКогда уходит
Принят лидЗаказ создан и попал в обработку: лид дошёл, а не потерялся между формой партнёра и вашим приёмом. Заказ, созданный сразу в отказе антифродом, такого уведомления не получает.
ПодтверждёнЗаказ дошёл до группы «Принят» — оператор договорился с клиентом.
ОтправленГруппа «Отправлен». Разведено с подтверждением намеренно: сети платят за разное.
ВыкупленГруппа «Оплачен» — деньги получены.
ВозвратГруппа «Возврат».
ОтменёнГруппы «Отменён» и «Ошибка/Спам»: спам отдельным событием не выделен.
Любая смена статусаКаждый шаг заказа, включая недозвоны. Нужно своим системам, партнёрским сетям — почти никогда.

Событий у одного постбэка может быть несколько. Обычный набор для CPA-сети: Принят лид, Подтверждён, Отменён и, если платите за выкуп, Выкуплен. Одно и то же событие по одному заказу дважды не уйдёт: партнёр не получит два подтверждения одного лида, даже если заказ вернули в прежний статус и провели заново. Исключение — Любая смена статуса, где самостоятелен каждый переход.

Адрес и макросы

Адрес даёт партнёр — обычно готовой строкой из своей документации. Макросы в фигурных скобках подставляем мы; значения кодируются под передачу в адресе, так что город с пробелом ничего не ломает.

Постбэки → Новый постбэк

Название

AdsTeam / основной

Партнёр

AdsTeam

Адрес

https://cpa.example/postback?click={external_id}&status={event}&sum={payout}

События

Принят лидПодтверждёнОтменёнОтправленВыкупленВозвратЛюбая смена статуса

Макросы

{order_id}{external_id}{event}{status}{status_group}{flow}{total}{payout}{city}{phone_hash}
ОтменаСоздать
Адрес даёт партнёр, макросы в фигурных скобках подставляем мы. «Весь проект» вместо партнёра — это любые заказы, включая принятые по телефону: так подключают собственный трекер, а не партнёрскую сеть.
МакросЧто подставляется
{order_id}Ваш номер заказа
{external_id}Идентификатор партнёра — то, что он прислал при приёме
{event}Событие: created, approved, canceled, shipped, bought_out, refunded, status_changed
{status} · {status_id} · {status_group}Название, номер и группа статуса
{previous_status}Прежний статус — для «любой смены статуса»
{flow} · {webmaster}Код потока и логин вебмастера
{total} · {payout} · {currency} · {quantity}Сумма заказа, начисленная выплата, валюта, количество товара
{country} · {region} · {city}Страна, область, город
{phone_hash}SHA-256 от телефона в формате E.164
{created_at}Когда заказ создан, ISO 8601
{utm_source} и остальные utmМетки, пришедшие с заявкой

Список закрытый: наугад добавленный макрос не подставится и адрес не сохранится — придёт ошибка с перечнем неизвестных имён. Так партнёр не сможет вытащить произвольное поле заказа, а опечатку в имени макроса вы увидите сразу, а не через месяц по пустому параметру.

По умолчанию уведомление уходит запросом GET — так работают почти все трекеры. Постбэк можно перевести на POST: тогда те же значения уедут телом JSON, а не в адресе. Метода в диалоге нет, он задаётся через программный интерфейс. Сохранённый адрес превращается примерно в такой запрос:

GET https://cpa.example/postback
  ?click=12345
  &status=approved
  &sum=250
  &order=100000042
  &phone=9f86d081884c7d659a2f...

Что не уходит наружу

Персональных данных в постбэке нет — ни телефона, ни ФИО, ни адреса, даже если партнёр просит. Постбэк уходит по чужому адресу, часто через редиректы и логи трекера: отправить туда телефон клиента значит опубликовать его.

  • Вместо номера доступен {phone_hash}. Партнёр сверит по нему свой лид с вашим заказом, но позвонить клиенту не сможет и базу не соберёт.
  • Хеш считается от номера в международном формате, поэтому у партнёра он сойдётся, только если он считает так же. Это стоит проговорить при подключении.
  • Адрес принимает только http и https, и перед каждой отправкой проверяется, что имя ведёт наружу, а не внутрь сети. Постбэк — единственное место, где внешний человек задаёт адрес, по которому ходит наш сервер, поэтому проверка не разовая, а на каждой попытке.

Что ещё видит и не видит партнёр — в статьях Партнёрская сеть и Защита данных.

Доставка и повторы

Отправка идёт очередью, а не внутри запроса оператора: партнёрский сервер может лежать полчаса, и это не повод терять уведомление и уж тем более мешать оператору менять статус. Не вышло — попытка повторяется с растущей паузой: минута, две, четыре и дальше, до двух часов между попытками. Всего попыток восемь; после последней отправка переходит в Отказ и сама больше не повторяется.

Партнёрская сеть → Постбэки · Отправки
ОтправкиВсе
КогдаПостбэкЗаказСобытиеСостояниеПопытокОтвет
02.11 14:31AdsTeam / основной100000042ПодтверждёнДоставлен1200 · ok
02.11 14:28MobiLead / s2s100000040ВыкупленПовтор3502 · Bad Gateway
01.11 09:14MobiLead / s2s100000017ОтменёнОтказ8Имя cpa.example не разрешается
У каждой отправки своя строка с ответом партнёра: код и начало тела. Это и есть доказательство в разговоре «нам ничего не приходило». Кнопка обновления рядом со строкой ставит отправку в очередь заново — после того как партнёр починил приём.
СостояниеЧто значит
В очередиЖдёт первой попытки. Обычно это секунды.
ДоставленПартнёр ответил кодом 200–299. Перенаправление успехом не считается: почти всегда это значит, что адрес сменился и запрос ушёл в никуда.
ПовторПопытка не удалась, следующая по расписанию. В колонке ответа виден код и начало тела.
ОтказПопытки кончились. Дальше — только вручную.

Кнопка обновления рядом со строкой возвращает отправку в очередь и обнуляет счётчик попыток. Нажимать её имеет смысл после того, как партнёр починил приём: до этого она добавит ещё восемь неудачных попыток.

Как отладить с партнёром

  1. 1Заведите постбэк на этого партнёра с адресом из его документации. Начните с одного события — Принят лид: его проще всего вызвать.
  2. 2Попросите прислать тестовый заказ и найдите его в журнале приёма: Способы передачи заказов. Если заказа нет, дело не в постбэке.
  3. 3Откройте Отправки и найдите строку по номеру заказа. В колонке Ответ лежит то, что вернул партнёр, — код и начало тела. Это и есть ответ на «нам ничего не приходило».
  4. 4Переведите тестовый заказ по статусам и проверьте, что события уходят в том порядке, который ждёт партнёр. Затем добавьте остальные события.

Что обычно оказывается причиной:

  • Имя не разрешается. Опечатка в адресе или партнёр прислал внутренний адрес своей сети.
  • Код 4xx. Партнёр не узнаёт параметры: чаще всего он ждёт свой идентификатор в {external_id}, а тот пуст — значит, при приёме заказа он его не передавал.
  • Код 200, но конверсия не закрылась. Партнёр принял запрос, но не понял событие: сверьте, какие значения {event} он ожидает, и при необходимости заведите по постбэку на событие с нужным ему значением в адресе.
  • Уведомлений нет вовсе. Проверьте переключатель Включён и то, что заказы действительно размечены на этого партнёра: постбэк на партнёра не сработает по заказу без вебмастера.

Не нашли ответ

Напишите на hello@xe.kg — ответим и дополним статью. Так она и растёт.