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

Лиды

Лид — заявка от клиента, которого привёл партнёр. Через внешний API её можно создать из своей системы, провести по статусам и зафиксировать сумму сделки.

Все пути ниже даны относительно базового адреса /api/external, каждый запрос требует заголовок x-api-key — см. Внешний API.

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

GET /api/external/lead-fields
x-api-key: ваш-ключ
[
{
"id": "0f8c…",
"systemName": "email",
"label": "Электронная почта",
"type": "String",
"options": null,
"required": true,
"hidden": false
},
{
"id": "b31a…",
"systemName": "city",
"label": "Город",
"type": "List",
"options": [{ "id": "msk", "name": "Москва" }],
"required": false,
"hidden": false
}
]
ПолеЧто означает
idидентификатор поля, его же передают в fields[].fieldTypeId
systemNameимя поля, заданное администратором для интеграции
labelподпись поля в интерфейсе
typeString, Number, Boolean или List
optionsдопустимые значения для List, иначе null
requiredбез этого поля заявка не создастся

Отдаются только нескрытые поля. Скрытое поле пропадает из ответа, но данные прошлых заявок по нему сохраняются.

POST /api/external/lead
x-api-key: ваш-ключ
Content-Type: application/json
{
"sessionId": "3f2a…",
"fields": [
{ "fieldTypeId": "0f8c…", "value": "ivan@example.com" },
{ "fieldTypeId": "b31a…", "value": "msk" }
]
}
ПолеОбязательноеОписание
fieldsдазначения полей заявки
sessionIdнетпереход по партнёрской ссылке
promocodeнетпромокод, которым воспользовался клиент

Значение поля передаётся по его типу:

Тип поляЧто передавать в value
Stringстроку
Numberчисло
Booleantrue или false
Listid одной из опций поля

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

Заявку связывают с партнёром sessionId или promocode — одно из двух. Если не передать ни то, ни другое, лид создастся ничьим: вознаграждение по нему никому не начислится.

По ссылке. Партнёр размещает свою короткую ссылку, а мы, отправляя клиента на целевую страницу, дописываем к её адресу параметр session:

https://example.com/landing?session=3f2a…

Задача вашей страницы — сохранить это значение (например, в скрытом поле формы или в cookie) и отдать его как sessionId при создании лида. Одна сессия — один лид: повторный запрос с тем же sessionId вернёт ошибку.

По промокоду. Передайте сам код в promocode. Код должен быть активным: промокоды на проверке и отключённые не принимаются. Одинаковые заявки по одному промокоду в течение суток считаются повтором и отклоняются — так отсекаются дубли от повторной отправки формы.

PUT /api/external/lead/{id}/status
x-api-key: ваш-ключ
Content-Type: application/json
{ "systemName": "in_progress" }

Статус указывается либо по id, либо по systemName — тому, что задан в настройках статусов вашего контура. Хотя бы одно из двух передать обязательно.

При переводе в целевой статус — тот, что означает состоявшуюся сделку, — нужно передать ещё и amount с суммой. Исключение: в предложении включено «Разрешить сделки по предложению без суммы», тогда сумму можно не передавать.

Смена статуса запускает начисление вознаграждения партнёру, поэтому именно этот метод обычно и вызывается из CRM.

Если по одной заявке проходит несколько сделок, каждую следующую добавляют отдельно:

PUT /api/external/lead/{id}/add-deal
x-api-key: ваш-ключ
Content-Type: application/json
{ "amount": 15000 }

Сумма должна быть больше нуля. Метод работает только когда лид уже находится в целевом статусе: до этого добавлять сделки не к чему.

ОтветСообщениеЧто делать
400Обязательное поле «…» не заполненодобавьте поле в fields, список — в GET /lead-fields
400Тип поля … не найденfieldTypeId устарел, перечитайте список полей
400Лид уже создан для этой сессиипо этому переходу заявка уже есть
400Лид с таким набором полей уже создандубль по промокоду за сутки; прежний лид приходит в теле ответа
400Укажите id или systemName статусапередайте одно из полей
400При переводе в статус «…» необходимо указать сумму сделкидобавьте amount
404Сессия не найденазначение session не дошло до вашей формы или было изменено
404Промкод не найден или неактивенкод не существует или ещё не подтверждён
404Предложение недоступнопредложение остановлено или закрыто для этого партнёра
404Добавлять сделки можно только в статусе «…»сначала переведите лид в целевой статус