Как подключить свой вебхук для приёма заявок

Обновлено

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

Как подключить вебхук

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

1
Откройте настройки сайта
В конструкторе выберите сайт и перейдите в «Настройки» → «Приём заявок».
2
Добавьте ссылку
В разделе «Доступные для подключения» нажмите «Подключить вебхук» и вставьте ссылку, начиная с https://.
3
Нажмите «Тест»
Мы отправим тестовую заявку. Если она дошла — всё работает, настоящие заявки будут приходить так же.
Раздел «Приём заявок» в настройках сайта: подключение вебхука
Совет. Проверить вебхук без своего сервера можно на бесплатном сайте webhook.site: он выдаёт временную ссылку и показывает всё, что на неё приходит.

В каком виде приходят данные

На вашу ссылку отправляется POST-запрос с телом в формате JSON (кодировка UTF-8, заголовок Content-Type: application/json). Поля запроса:

ПолеЧто содержит
eventТип события: lead.created — настоящая заявка, lead.test — тест кнопкой «Тест».
testtrue у тестовой заявки, 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
// Простейший приёмник на 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?
Да. Если ваша CRM умеет принимать данные по ссылке — вставьте её ссылку в поле вебхука. Для Envybox есть готовое подключение в этом же разделе — вебхук не нужен. Также подойдут сервисы-посредники (Albato, ApiX-Drive): они принимают наш вебхук и сами передают заявку в сотни систем.
Как подключить Битрикс24?
В Битрикс24 откройте «Разработчикам» → «Другое» → «Входящий вебхук», отметьте право «CRM» и скопируйте ссылку вебхука. Вставьте её в поле вебхука как есть — хвост ссылки (например, profile.json) менять не нужно, мы сами создадим лид с именем, телефоном, почтой, ответами формы и метками рекламы. Нажмите «Тест»: тестовый лид появится в разделе «Лиды» (в простом режиме CRM — сразу в «Сделках»). Если тест говорит, что не отмечено право «CRM», включите его в настройках вебхука.
Сколько вебхуков можно подключить к одному сайту?
До двух. Каждая заявка отправляется на все подключённые адреса одновременно, вместе с письмами на почту — одно другому не мешает.
Заявка не пришла на вебхук. Что проверить?
Сначала нажмите «Тест» — если тест не проходит, ссылка недоступна или отвечает ошибкой. Заявки, отсеянные защитой от спама, на вебхук не отправляются. Все заявки в любом случае сохраняются в разделе «Заявки» — сверьтесь с ним.
Заявки приходят, а метки рекламы в CRM пустые. Почему?
Метки мы отправляем отдельными полями (utm_source, utm_campaign и другие) — проверьте их в разделе «Заявки», в карточке заявки есть блок «Реклама». Если у нас метки есть, а в CRM пусто — дело в настройке связки: ни одна CRM не подставляет метки сама, их нужно один раз сопоставить со своими полями. В amoCRM поля для меток создаются автоматически, их достаточно выбрать в сервисе-посреднике. Если сопоставить поля нельзя — положите в комментарий к сделке поле utm_string, там все метки одной строкой. И проверьте, что сайт опубликован заново после 31 августа 2026 года — до этого страницы собирали меньше данных.
Почему телефон в заявке пришёл со звёздочками?
На балансе не хватило кредитов на оплату заявки. Пополните баланс — номер откроется в кабинете, а следующие заявки будут приходить полностью.