Данные вебхука
Данные вебхука — это набор плейсхолдеров записи, тот же, что используется в шаблонах сообщений. Они отправляются методом из настроек вебхука (POST или GET) с User-Agent: GuzzleHttp/7.
Формат по умолчанию
POST без пользовательских параметров: JSON-объект со всеми плейсхолдерами (Content-Type: application/json). Пример доставки booking-created. Это та же запись, на которой построены примеры в статье о шаблонах сообщений:
{
"id": 40566573,
"uid": "c17215ec-cc85-413b-8b1a-cacf0b476b2c",
"booking_hash_id": "897399598",
"booking_page": "https://bknw.ru/r/897399598",
"my_url": "https://my.booknow.ru/bookings/40566573",
"date": "15 октября 2026 г.",
"day": "15",
"month_number": "10",
"time": "10:00",
"timezone": "Europe/Moscow",
"booking_created_at": "2026-10-02T09:02:34+0000",
"booking_created_at_formatted": "пятница, 2 октября 2026 г., 12:02",
"booking_date_start": "2026-10-15T07:00:00+0000",
"booking_date_start_tz": "2026-10-15T10:00:00+0300",
"booking_date_start_formatted": "четверг, 15 октября 2026 г., 10:00",
"booking_date_end": "2026-10-15T08:00:00+0000",
"booking_date_end_formatted": "четверг, 15 октября 2026 г., 11:00",
"booking_duration": 60,
"booking_duration_formatted": "1 час",
"booking_status": "Новый",
"booking_source": "website",
"ref_title": "Веб-сайт",
"booking_price": "250000",
"booking_price_float": "2500.00",
"booking_price_int": 2500,
"booking_price_formatted": "2 500,00 ₽",
"booking_price_currency": "RUB",
"booking_paid_amount": "0",
"booking_paid_amount_float": "0.00",
"booking_paid_amount_formatted": "0,00 ₽",
"customer_paid_amount": "0",
"customer_paid_amount_float": "0.00",
"customer_paid_amount_formatted": "0,00 ₽",
"booking_description": "Хочу обновить форму каре",
"company_name": "Твой выбор",
"company_logo": "",
"company_page": "https://bknw.ru/tvoy-vybor",
"location_name": "Твой выбор на Туполева",
"location_id": 331734,
"location_uuid": "1ed7fb3d-3406-469e-9ead-d3ab30ac5747",
"location_street": "набережная Академика Туполева",
"location_apt": "222",
"location_zip": "105005",
"location_city": "Москва",
"location_address_formatted": "набережная Академика Туполева 222, 105005 Москва",
"location_lat": 55.759314,
"location_lng": 37.67705,
"address": "Москва, набережная Академика Туполева",
"location_description": "Вход со стороны набережной, 2-й этаж",
"customer_id": 10171469,
"customer_name": "Анастасия",
"customer_first_name": "Анастасия",
"customer_last_name": "Соколова",
"customer_middle_name": "Сергеевна",
"customer_full_name": "Анастасия Соколова",
"customer_email": "customer@booknow.ru",
"customer_phone": "+79150010203",
"customer_birthday": "21.12.1994",
"customer_comment": "Предпочитает запись на утро",
"visits_total": 0,
"booked_sum_amount": 900000,
"paid_sum_amount": 0,
"service_id": 1045084,
"service_name": "Стрижка и укладка",
"service_category": "Волосы",
"service_related": "",
"services_description": "Стрижка и укладка",
"services_count": 1,
"user_name": "Анна Иванова",
"user_email": "master@example.com",
"user_phone": "+79009090999",
"users_description": "Анна Иванова",
"booking_attributes.booking_comment": "Хочу обновить форму каре",
"booking_attributes.booking_internal_note": "",
"booking_attributes.booking_nomer_v_crm": "",
"customer_attributes.customer_phone": "+79150010203",
"customer_attributes.customer_first_name": "Анастасия",
"customer_attributes.customer_last_name": "Соколова",
"customer_attributes.customer_middle_name": "Сергеевна",
"customer_attributes.customer_birthday": "21.12.1994",
"customer_attributes.customer_comment": "Предпочитает запись на утро",
"customer_attributes.customer_email": "customer@booknow.ru",
"customer_attributes.customer_liubimyi_napitok": "Капучино без сахара",
"customer_attributes.customer_kanal_sviazi": "Telegram",
"utm_source": "yandex",
"utm_medium": "cpc",
"utm_campaign": "autumn_sale",
"utm_term": "стрижка москва",
"utm_content": "banner_1",
"quantity": 1,
"slots_count": 1
}
booking_price_formatted, booking_paid_amount_formatted, customer_paid_amount_formatted и ref_title формируются на языке аккаунта: "2 500,00 ₽" вместо "RUB 2,500.00" и "Веб-сайт" вместо "Website". В числе используются неразрывные пробелы. Для расчётов и условий используйте booking_price, booking_price_float и booking_source: их формат не менялся.События booking-updated, booking-rescheduled, booking-canceled и booking-succeeded содержат тот же набор полей с актуальными значениями: после переноса меняются booking_date_start и booking_date_end, после отмены и завершения — booking_status. Поля с названием события в данных нет, см. обзор.
Группы полей
| Группа | Поля | Примечание |
|---|---|---|
| Идентификаторы | id, uid, booking_hash_id, booking_page, my_url | uid совпадает с uuid записи в API; booking_page — страница записи для клиента; my_url — карточка в панели |
| Время | booking_date_start, booking_date_end (UTC), booking_date_start_tz (в поясе локации), *_formatted (текст на языке аккаунта), date, day, month_number, time, timezone, booking_duration (минуты) | |
| Статус и деньги | booking_status (название статуса на языке аккаунта), booking_price*, booking_paid_amount*, customer_paid_amount*, booking_price_currency | booking_price и *_amount — в копейках, строкой ("250000"); *_float — в рублях с копейками через точку ("2500.00"); *_int — целое число рублей; *_formatted — текст для человека на языке аккаунта ("2 500,00 ₽") |
| Компания и локация | company_*, location_*, address | |
| Клиент | customer_*, visits_total, booked_sum_amount, paid_sum_amount | |
| Услуга и сотрудник | service_*, services_description, services_count, user_* (сотрудник), users_description | у мультиуслуги перечисления через запятую |
| Атрибуты | booking_attributes.<slug>, customer_attributes.<slug> | набор зависит от атрибутов аккаунта в разделе Настройки → Данные → Пользовательские атрибуты; те же значения API возвращает в custom_fields, см. Пользовательские атрибуты |
| Источник | booking_source, ref_title, utm_* | booking_source — постоянный ключ источника (website, phone); ref_title — название на языке аккаунта («Веб-сайт», «Телефон») |
| Количество | quantity (мест), slots_count (слотов подряд) |
Продажа товаров (goods-sold)
Другой набор полей: сводка по продаже и список товаров с индексами goods.N.*:
{
"goods_name": "товар для теста",
"goods_quantity": 1,
"amount": 40000,
"user_name": null,
"goods.0.name": "товар для теста",
"goods.0.article": "ТОВ-91893210",
"goods.0.brand": null,
"goods.0.description": null,
"goods.0.is_payable": true,
"goods.0.price": 40000,
"goods.0.unit": "pcs",
"goods.0.is_consumable": true,
"goods.0.consumable_price": 12000,
"goods.0.consumable_unit": "ml",
"goods.0.quantity_in_unit": 10,
"goods.0.quantity": 1,
"goods.0.amount": 40000,
"goods.0.user_name": null
}
goods-sold тоже отправляется, с пустым массивом [] вместо данных. Перед обработкой проверяйте, что получен непустой объект.Свои параметры вместо полного набора данных
Если в настройках вебхука заданы параметры (parameters, пары ключ → значение), BookNow отправляет только их, а не полный JSON:
POST— как формуapplication/x-www-form-urlencoded;GET— как query-string.
В значениях параметров, заголовков и адреса поддерживаются плейсхолдеры с двоеточием, как в шаблонах сообщений: :customer_phone, :booking_date_start, :uid. Так можно привести запрос к формату стороннего API без промежуточного сервиса:
{
"url": "https://crm.example.ru/api/leads?source=booknow",
"method": "post",
"parameters": { "phone": ":customer_phone", "name": ":customer_full_name", "start": ":booking_date_start", "booknow_uid": ":uid" },
"headers": { "X-Api-Key": "ваш ключ" },
"success_statuses": "200, 201",
"events": ["booking-created"]
}
Опция «числовые значения» в настройках вебхука в панели приводит числовые строки ("0", "1500.00") к числам.