Главная Инструкции Как интегрировать квиз через Webhooks?

Инструкция по интеграции квиза через Webhooks

Если вы используете свою CRM, приложение или сервисы, с которыми у нас ещё нет готовых интеграций, подойдёт интеграция через webhooks. На указанный URL LeadForms отправляет данные о новой заявке.
Настройка
В личном кабинете откройте квиз → «Настройки»«Интеграции» → карточка Webhooks. Укажите URL, на который будет отправляться POST-запрос.
Для теста можно использовать webhook.site.
Важно: обработчик должен отвечать успешным HTTP-статусом (200, 204 и т.п.).
Формат запроса
Метод: POST
Заголовок: Content-Type: application/json
Тело: JSON
Старые поля сохранены без изменений. Новые поля добавляются только если они есть в заявке — интеграции, завязанные на старый формат, продолжат работать.
Пример полного payload
{
  "id": 12345,
  "quizId": 611,
  "answers": [
    {"q": "Вопрос 1", "questionId": 10, "a": ["Вариант 2"]},
    {"q": "Вопрос 2", "questionId": 11, "a": ["Вариант 3"]}
  ],
  "contacts": {
    "name": "Иван",
    "phone": "79991234567",
    "email": "example@gmail.com",
    "address": "Москва, ул. Примерная, 1",
    "text": "Нужна консультация",
    "messenger": {"type": "telegram", "value": "@username"},
    "messengerName": "Иван"
  },
  "created": "17.08.2019 22:41",
  "quizDurationSeconds": 95,
  "result": {
    "value": "15%",
    "title": "Ваша скидка",
    "description": "Завершите оформление"
  },
  "extra": {
    "href": "https://example.com/page",
    "ref": "https://google.com",
    "utm": {"utm_source": "google"},
    "cookies": {
      "_ga": "GA1.2.477745229.1562102022",
      "_ym_uid": "1562107156134812542"
    }
  }
}
Описание полей: верхний уровень
ПолеТипОписание
answersarrayОтветы на вопросы квиза
contactsobjectКонтактные данные
createdstringДата заявки, формат дд.мм.гггг чч:мм
extraobjectUTM, cookies, URL страницы, referer, скидка
resultobject | nullРезультат квиза (скидка и т.п.)
idnumberID заявки в LeadForms новое
quizIdnumberID квиза новое
quizDurationSecondsnumberВремя прохождения квиза в секундах новое
Поля answers[]
ПолеОписание
qТекст вопроса
questionIdID вопроса
aМассив ответов (строки)
Поля contacts
ПолеОписание
nameИмя
phoneТелефон
emailEmail
addressАдрес новое
textКомментарий / произвольный текст новое
messengerМессенджер: {"type": "telegram", "value": "@username"} новое
messengerNameИмя при сборе через мессенджер новое
Типы messenger.type: telegram, whatsapp, viber, vk, messenger, instagram, teams, max, wechat, phone.
Поля result
ПолеОписание
valueЗначение (например, размер скидки)
titleЗаголовок
descriptionОписание
Поля extra
ПолеОписание
hrefURL страницы, с которой отправлена заявка
refReferer
utmUTM-метки (объект)
cookiesCookies (объект)
discountСкидка, если настроена в квизе
Двухэтапная форма контактов
Если в квизе включена двухэтапная форма:
• Webhook уходит после полной заявки (когда собраны все шаги).
• Если пользователь заполнил только первый шаг и не вернулся — заявка может уйти через ~60 секунд с частичными контактами.
Пример PHP-обработчика
<?php
$data = json_decode(file_get_contents('php://input'), true);

$answers = $data['answers'] ?? [];
$contacts = $data['contacts'] ?? [];

$phone = $contacts['phone'] ?? null;
$email = $contacts['email'] ?? null;
$name = $contacts['name'] ?? ($contacts['messengerName'] ?? null);
$messenger = $contacts['messenger'] ?? null; // ['type' => 'telegram', 'value' => '@username']
$address = $contacts['address'] ?? null;
$comment = $contacts['text'] ?? null;

$createdDate = strtotime($data['created'] ?? 'now');
$utm = $data['extra']['utm'] ?? [];
$result = $data['result'] ?? null;
$quizDurationSeconds = $data['quizDurationSeconds'] ?? null;
$leadId = $data['id'] ?? null;
$quizId = $data['quizId'] ?? null;

// Ваша логика обработки...

http_response_code(200);
exit;
Обратная совместимость
Интеграции, которые читают только answers, contacts.name/phone/email, created, extra — продолжают работать. Новые поля (address, text, messenger, quizDurationSeconds, id, quizId, result) можно подключать по необходимости.

Остались вопросы? Напишите нам

Имя *
* Обязательно к заполнению
e-mail *
* Обязательно к заполнению
Сообщение
Напишите нам!
Ответим в течение 30 секунд