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

В каком виде приходят данные
На вашу ссылку отправляется POST-запрос с телом в формате JSON (кодировка UTF-8, заголовок Content-Type: application/json). Поля запроса:
| Поле | Что содержит |
|---|---|
event | Тип события: lead.created — настоящая заявка, lead.test — тест кнопкой «Тест». |
test | true у тестовой заявки, false у настоящей. |
lead_id | Номер заявки в KotPlatform. У повторной отправки той же заявки номер не меняется. |
site_name | Название сайта. |
site_slug | Адрес сайта (часть до .kotplatform.site). |
page_path | Страница, с которой отправлена форма (например, «/» — главная). |
block_id | Номер блока с формой или квизом на странице. |
form_name | Откуда заявка — название блока с формой, как в библиотеке блоков: «POP-AP», «Квиз», «Галерея», «Котоблок». Если в настройках поп-апа задано «название формы в заявках», оно добавляется через точку с запятой: «POP-AP; Консультация» — так различаются несколько поп-апов на одной странице. Пустая строка, если блок определить не удалось (например, он удалён с сайта после отправки заявки). |
billing_note | Пояснение, если телефон пришёл со звёздочками (на балансе не хватило кредитов на заявку). У оплаченных заявок — пустая строка. |
lead | Контакты посетителя со стабильными ключами: name, phone, email. Поле всегда на месте; чего нет в форме — придёт пустой строкой. Привязывайтесь к этому блоку. |
answers | Ответы квиза и остальные поля формы — списком пар { "question": …, "answer": … }. Структура списка не меняется, даже если вы переименуете или переставите вопросы. |
fields | Те же данные одним списком «название поля: значение» — как поля называются в форме. Удобно для быстрого просмотра, но для интеграций надёжнее lead и answers. |
utm | Метки рекламы вложенным блоком. Те же метки лежат ещё и отдельными полями верхнего уровня — для CRM берите их (следующий раздел), этот блок оставлен для уже настроенных связок. |
submitted_at | Дата и время отправки заявки. |
{
"event": "lead.created",
"test": false,
"lead_id": 1024,
"site_name": "Ремонт квартир в Казани",
"site_slug": "remont-kazan",
"page_path": "/",
"page_url": "https://remont-kazan.kotplatform.site/?utm_source=yandex",
"form_page": "https://remont-kazan.kotplatform.site/",
"block_id": "form_main",
"form_id": "form_main",
"formid": "form_main",
"form_name": "POP-AP; Консультация",
"formname": "POP-AP; Консультация",
"tranid": "1024",
"form_sent_at": 1784381525,
"billing_note": "",
"utm_source": "yandex",
"utm_medium": "cpc",
"utm_campaign": "114696138",
"utm_content": "",
"utm_term": "",
"utm_string": "utm_source=yandex&utm_medium=cpc&utm_campaign=114696138",
"referrer": "https://yandex.ru/search/?text=...",
"referer": "https://yandex.ru/search/?text=...",
"utm_referrer": "https://yandex.ru/search/?text=...",
"yclid": "12345678901234",
"gclid": "",
"fbclid": "",
"roistat": "",
"_ym_uid": "1712345678901234",
"gclientid": "998877.1650000000",
"lead": {
"name": "Иван",
"phone": "+7 900 123-45-67",
"email": "ivan@example.com"
},
"answers": [
{ "question": "Какой у вас бюджет?", "answer": "до 100 тыс." },
{ "question": "Когда планируете начать?", "answer": "в этом месяце" }
],
"utm": {
"utm_source": "yandex",
"utm_medium": "cpc",
"utm_campaign": "114696138"
},
"fields": {
"name": "Иван",
"phone": "+7 900 123-45-67",
"email": "ivan@example.com",
"Какой у вас бюджет?": "до 100 тыс.",
"Когда планируете начать?": "в этом месяце"
},
"submitted_at": "2026-07-18T14:32:05+03:00"
}lead и списку answers — они не зависят от текстов вопросов. Если настроить связку на названия полей из fields, она сломается при переименовании вопроса в квизе.Метки рекламы: откуда пришёл клиент
Если человек попал на сайт по рекламной ссылке с метками (?utm_source=…), мы запоминаем их на 30 дней и прикладываем к заявке — даже если клиент вернулся позже и оставил заявку уже без меток в адресе. Вместе с метками приходят номер клика рекламной системы и адрес, с которого человек перешёл.
Все эти данные лежат в заявке отдельными полями верхнего уровня — именно так их ждут CRM и сервисы-посредники: в списке полей при настройке связки вы увидите utm_source, utm_campaign и остальные и сможете сопоставить их с полями своей CRM в пару кликов.
| Поле | Что содержит |
|---|---|
utm_source | Источник перехода из рекламной ссылки. Так же приходят utm_medium, utm_campaign, utm_content, utm_term. Поля на месте всегда: если метки не было — пустая строка. |
utm_string | Все метки одной строкой. Пригодится, если ваша CRM не даёт сопоставить поля по отдельности — строку можно целиком положить в комментарий к сделке. |
referrer | Адрес, с которого человек перешёл на сайт (поиск, соцсеть, чужой сайт). Дублируется в referer и utm_referrer — разные системы ждут разное написание, привяжитесь к любому. |
yclid | Номер клика Яндекс.Директа — для сквозной аналитики и передачи сделок обратно в рекламный кабинет. Так же приходят gclid (Google Ads), fbclid, roistat. |
_ym_uid | Номер посетителя в Яндекс.Метрике, gclientid — в Google Analytics. По ним CRM связывает сделку с визитом на сайте. Приходят, только если на сайте подключён соответствующий счётчик. |
page_url | Полный адрес страницы вместе с рекламными метками. form_page — тот же адрес без меток. |
tranid | Номер заявки строкой, formid и formname — номер и название формы. Дубли полей lead_id, block_id, form_name в написании, привычном популярным сервисам-посредникам, — чтобы связка настроилась без ручной правки. |
Как принять заявку на своём сервере
Ваша ссылка должна работать по https и отвечать кодом 200 (или любым кодом 2xx) — это сигнал «заявку получил». Содержимое ответа мы не читаем, можно отвечать пустой страницей. Отвечайте быстро: на ответ отводится 30 секунд, тяжёлую обработку лучше делать после ответа.
Если соединиться с вашей ссылкой не удалось или она ответила ошибкой (код не 2xx), мы повторим отправку: через 1, 5 и 15 минут, затем раз в час в течение суток. Поэтому один и тот же lead_id может прийти повторно: если ведёте свою базу, проверяйте номер заявки, чтобы не создать дубль.
Если заявка ушла на вашу ссылку, а ответа за 30 секунд не пришло, повторно мы её не отправляем — она с большой вероятностью уже у вас, и повтор создал бы дубль в CRM. В кабинете заявок такая доставка помечена «приёмщик мог получить заявку, но не подтвердил». Увидели такую пометку — проверьте заявку у себя и ускорьте ответ вашего скрипта.
<?php
// Простейший приёмник на PHP: сохраняет заявки в файл.
$raw = file_get_contents('php://input');
$data = json_decode($raw, true);
if ($data && ($data['event'] ?? '') === 'lead.created') {
$line = date('c')
. ' | ' . ($data['lead']['name'] ?? '')
. ' | ' . ($data['lead']['phone'] ?? '');
foreach ($data['answers'] ?? [] as $a) {
$line .= ' | ' . $a['question'] . ': ' . $a['answer'];
}
file_put_contents(__DIR__ . '/leads.log', $line . PHP_EOL, FILE_APPEND);
}
http_response_code(200); // главное — ответить кодом 200Частые вопросы
Можно ли передавать заявки в CRM?
Как подключить Битрикс24?
profile.json) менять не нужно, мы сами создадим лид с именем, телефоном, почтой, ответами формы и метками рекламы. Нажмите «Тест»: тестовый лид появится в разделе «Лиды» (в простом режиме CRM — сразу в «Сделках»). Если тест говорит, что не отмечено право «CRM», включите его в настройках вебхука.Сколько вебхуков можно подключить к одному сайту?
Заявка не пришла на вебхук. Что проверить?
Заявки приходят, а метки рекламы в CRM пустые. Почему?
utm_source, utm_campaign и другие) — проверьте их в разделе «Заявки», в карточке заявки есть блок «Реклама». Если у нас метки есть, а в CRM пусто — дело в настройке связки: ни одна CRM не подставляет метки сама, их нужно один раз сопоставить со своими полями. В amoCRM поля для меток создаются автоматически, их достаточно выбрать в сервисе-посреднике. Если сопоставить поля нельзя — положите в комментарий к сделке поле utm_string, там все метки одной строкой. И проверьте, что сайт опубликован заново после 31 августа 2026 года — до этого страницы собирали меньше данных.