Как настроить вебхуки (Webhooks)
Вебхук — адрес на вашем сервере или в no-code сервисе, куда TapWay отправляет POST-запрос с JSON, когда на странице что-то происходит: пришла заявка, клиент записался, прошла оплата. Так данные сразу попадают в вашу CRM, таблицу или бота. Подключить вебхук можно двумя способами: в настройках проекта и в разделе «CRM».
Адрес уведомлений в настройках
- Откройте проект → «Ещё» → «Настройки» → раздел «Чаты».
- В карточке «Чаты и webhooks» вставьте адрес в поле «Webhook URL (уведомления)». Он должен начинаться с https:// или http://.
- Нажмите «Сохранить».

На этот адрес приходят три события:
form_submit— заявка из блока «Форма»:block_idиfields— поля формы с ответами;booking_create— запись через «Онлайн-запись»:block_id,master,service,date(ГГГГ-ММ-ДД),time(ЧЧ:ММ),client_name,client_phone;payment.paid— оплата через Prodamus, например по кнопке «Оплатить» (приём оплат):order_num,title,amount,customer_email,customer_phone,paid_at,demo(тестовый режим).status—paidилиmismatch, если заплатили меньше заданной суммы (expected) или меньше минимума доната.
В каждом событии есть event, multi_id, prefix — адрес мультиссылки — и sent_at — время отправки. Пример заявки:
{
"event": "form_submit",
"multi_id": 1234,
"block_id": 5678,
"prefix": "demo-studio",
"fields": {
"name": "Анна",
"email": "anna@example.ru"
},
"sent_at": "2026-09-28T09:15:00.000Z"
}
Заголовки запроса — Content-Type: application/json и User-Agent: TapWay-Webhook/1.0. Подписи у этого способа нет: чтобы отсечь чужие запросы, добавьте в адрес секретный параметр, например ?token=…, и проверяйте его у себя.
Вебхуки в CRM
Откройте проект → «Ещё» → «CRM», в карточке «Webhook» вставьте адрес и нажмите «Добавить». Под адресом появится «Секрет подписи» — он нужен для проверки запросов.

События: form.submit (заявка из формы), survey.started (опрос или квиз начат), survey.submit и survey.finished (пройден опрос или квиз), booking.created (запись), payment.paid (оплата), order.created, order.paid, order.shipped, order.cancelled (заказы магазина). Приходят и служебные события самой CRM — deal.created, deal.updated, contact.upsert, booking.synced: лишние можно отбрасывать по заголовку X-TapWay-Event. Тело запроса — JSON с полями event, payload (данные события) и multi_id. Заголовки:
X-TapWay-Event— название события;X-TapWay-Delivery— уникальный номер отправки;X-TapWay-Signature— HMAC-SHA256 тела запроса с секретом подписи, в hex.
Проверка подписи на PHP:
$raw = file_get_contents('php://input');
$sign = hash_hmac('sha256', $raw, 'СЕКРЕТ_ПОДПИСИ');
$got = $_SERVER['HTTP_X_TAPWAY_SIGNATURE'] ?? '';
if (!hash_equals($sign, $got)) {
http_response_code(401);
exit;
}
$data = json_decode($raw, true);
Вебхуков в CRM: 0 на бесплатном тарифе и «Базовом», 1 на «Про», без лимита на «Бизнесе».
Повторы и ограничения
- Каждое событие отправляется один раз, повторов нет. Если сервер не ответил за 5 секунд (адрес из настроек) или 10 секунд (CRM) или вернул ошибку, повторно оно не придёт — сверяйтесь с разделами «Заявки», «Оплаты» и «CRM» в кабинете.
- Переадресации не выполняются: адрес должен отвечать сам.
- На адреса во внутренней сети (localhost, частные IP) и на адреса с логином и паролем внутри события не отправляются: сохранить такой адрес можно, но запросов на него не будет.
- Если тариф проекта сменился на бесплатный или «Базовый», адреса в CRM остаются в списке, но события на них не отправляются.
Как проверить
- Создайте временный адрес в сервисе для приёма тестовых запросов, например webhook.site, и вставьте его в поле.
- Отправьте заявку через форму на своей странице.
- Посмотрите, что пришло, и настройте разбор полей у себя. Оплату проверьте в тестовом режиме раздела «Оплаты» — в событии будет
"demo": true.