Вебхуки

Данные вебхука

Что именно BookNow отправляет в вебхуке: полный пример данных для событий о записи и для продажи товаров, поля, параметры и заголовки.

Данные вебхука — это набор плейсхолдеров записи, тот же, что используется в шаблонах сообщений. Они отправляются методом из настроек вебхука (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
}
Со 2 октября 2026 года поля 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_urluid совпадает с 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_currencybooking_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") к числам.

Copyright © 2026