Описание Webhook
В системе RealtyCalendar есть функция Webhook. Она отправляет данные на указанный вами URL при определённых событиях в личном кабинете.
Как включить Webhook
Для подключения Webhook необходимо:
добавить ваш URL в Настройки — CRM-интеграции в поле «Введите URL нового Webhook»;
нажать кнопку «Запустить».
Будут происходить списания денежных средств по тарифу «за интеграцию с внешними системами».
С тарифами можно ознакомиться на странице «Баланс».
Как удалить Webhook
Откройте «Настройки» → «Интеграции».
Найдите в списке Webhook, который хотите отключить. Нажмите «Удалить» рядом с нужным адресом.
Подтвердите удаление, если система запросит подтверждение.
После удаления RealtyCalendar перестанет отправлять данные на этот адрес.
Как работают Webhook
Webhook отправляют данные на указанный вами URL при определённых событиях в личном кабинете.
Ожидание ответа:
Webhook ожидают от сервера ответ со статусом 200
Повторные попытки при недоступности сервера:
Если клиентский сервер недоступен, повторная отправка осуществляется с задержками:
5 секунд → 30 секунд → 2 минуты → 5 минут → 10 минут → 30 минут → 1 час → 2 часа → 4 часа → 8 часов → 24 часа → 2 суток
Уведомления о проблемах:
После 3-й неудачной попытки отправляется письмо на почту агентства с темой «Проблемы с доставкой web-хуков»
После 2 суток без успешной отправки статус изменяется на «Остановлено»
Возобновление работы:
Чтобы Webhook начали заново отправляться после остановки, необходимо нажать кнопку «Запустить».
События Webhook
Webhook отправляются при следующих действиях с бронями и корзинами:
- создание
- удаление
- перевод из брони в отмену
- перевод из отмены в бронь
- перевод из заявки в бронь
- перевод из заявки в отмены
- перевод из отмены в заявку (не поддерживает)
- перевод из брони в заявку (не поддерживает)
- изменение следующих полей:
- статус
- сумма
- заезд
- время заезда
- выезд
- время выезда
- имя
- телефон
- примечание
- дополнительный телефон
- эмодзи
- файлы (не поддерживает)
- действия с платежами:
- добавление платежа
- удаление платежа
- создание ручного залога
- создание ссылки на залог
- оплата залога по ссылке
- возврат залога
- создание корзины
Содержимое Webhook
Название поля | Тип | Описание | Дополнительно |
action | string | Какое произошло действие
| |
status | string | Итоговый статус
| |
data | Тело хука |
В событии create_basket поле status не передаётся.
Тело {data}
Название поля | Тип | Описание | Дополнительно |
booking | Описание события | ||
changes | Описание изменений | ||
basket | {basket} | Описание корзины | Передаётся в событии create_basket |
crm_entity_id | |||
bitrix_lead_id |
Тело {basket}
Webhook create_basket отправляет данные при создании корзины — подборки объектов на выбранные даты со ссылкой для гостя.
Событие отправляется после сохранения корзины, в том числе при формировании ссылки без отправки гостю и при создании через API. Для получения события Webhook агентства должен быть включён.
| Название поля | Тип | Описание | Дополнительно |
|---|---|---|---|
| id | integer | ID корзины | |
| url | string | Ссылка на корзину для гостя | |
| source | {source} | Параметры подборки | |
| user_id | integer | ID пользователя, создавшего корзину | |
| created_at | timestamp | Время создания корзины | |
| updated_at | timestamp | Время обновления корзины | |
| lifetime | integer | null | Срок действия корзины в днях | null или значение ≤ 0 — без ограничения срока |
| crm_request_id | integer | null | ID связанной заявки CRM в RealtyCalendar | |
| amo_request_id | integer | null | ID связанной заявки amoCRM в RealtyCalendar | |
| crm_widget_request_id | integer | null | ID связанной заявки CRM-виджета в RealtyCalendar | |
| rent_id | integer | null | ID связанной брони | |
| uuid | string | null | UUID корзины | |
| secure_id | string | null | Служебный идентификатор корзины |
Тело {source}
Состав полей зависит от способа создания корзины. Дополнительные поля могут отсутствовать или содержать null.
| Название поля | Тип | Описание | Дополнительно |
|---|---|---|---|
| begin_date | строка в формате YYYY-MM-DD | Дата заезда | |
| end_date | строка в формате YYYY-MM-DD | Дата выезда | |
| items | array {item} | Объекты в подборке | |
| phone | string | null | Телефон гостя | |
| string | null | Почта гостя | ||
| from | string | null | Значение поля from, переданное при создании | |
| guests_count | integer | null | Количество гостей | |
| extra_charge | integer | null | Размер дополнительной наценки | |
| extra_charge_type | string | null | Способ расчёта наценки | percent — проценты; currency — денежная сумма |
| total_extra_charge | integer | null | Общая сумма дополнительной наценки |
Тело {item}
| Название поля | Тип | Описание | Дополнительно |
|---|---|---|---|
| apartment_id | integer | string | ID объекта | |
| apartment_title | string | Название объекта в подборке | |
| amount | number | string | Стоимость проживания за выбранный период | Число или строка в зависимости от способа создания |
| is_special_amount | boolean | Признак вручную заданной стоимости | Может отсутствовать |
Тело {booking}
Название поля | Тип | Описание | Дополнительно |
id | integer | id брони | |
url | string | ссылка на бронь в личном кабинете | |
agency_id | integer | id агентства | |
begin_date | строка в формате “YYYY-MM-DD” | Заезд | |
end_date | строка в формате “YYYY-MM-DD” | Выезд | |
number_of_days | integer | количество дней брони | |
number_of_nights | integer | количество ночей брони | |
arrival_time | string | null | время прибытия, например "17:00" | |
departure_time | string | null | время убытия, например "11:00" | |
realty_id | integer | id объекта | |
realty_room_id | integer | id комнаты из номерного фонда | |
apartment | описание объекта | ||
address | string | адрес объекта | |
user_id | integer | id пользователя, который создал событие | |
created_at | timestamp | время создания события | |
updated_at | timestamp | время обновления события | |
status_cd | integer | статус брони в числовом формате | |
is_delete | boolean | удалена ли бронь | |
is_hidden | boolean | для Booking.com и Tvi показывает true, если не оплачен менеджер каналов | |
notes | string | null | Примечание к брони | |
color | string | null | цвет брони | |
reaction | string | null | эмодзи | |
source | string | источник брони | |
booking_origin_id | integer | id площадки-источника брони | |
booking_origin | источник брони подробно | ||
client_id | integer | id клиента (гостя) в нашей базе | |
client | описание клиента (гостя) | ||
amount | integer | сумма брони | |
price_per_day | integer | стоимость за день | |
prepayment | integer | оплаченная сумма | |
payment | integer | сколько прошла сумма оплаты | |
payment_links | string[] | массив созданных ссылок на оплату брони через Монету | |
event_calendar_payments | array {payment} | массив платежей и депозитов при хуке создания брони | |
payments_with_deleted | array {payment} | массив платежей и депозитов при хуке изменения брони | |
deposit | integer | сколько оплачен депозит | |
deposit_payment_links | string[] | массив созданных ссылок на оплату залога через Монету | |
rent_payment_invoices | список счетов в личном кабинете агентства | ||
balance_to_be_paid_1 | integer | Сколько осталось оплатить {amount} - {prepayment} | |
balance_to_be_paid_2 | integer | {amount} - {prepayment}+{дата booking_deposit} | |
platform_tax | float | комиссия площадки, значение передаёт площадка | |
platform_tax_currency | string | null | валюта комиссии площадки | |
is_send_confirm_email | boolean | есть ли подтверждение брони на почту гостя | |
automessages_enabled | включена ли функция автосообщений | ||
booking_id | старое поле, не используется | будет удалено | |
days | старое поле, не используется | будет удалено | |
max_days | спец.цена старое поле, не используется | будет удалено | |
closed_on_arrivial | спец.цена | будет удалено | |
closed_on_departure | спец.цена | будет удалено | |
rate_ids | спец.цена | будет удалено | |
single_use_amount | спец.цена старое поле, не используется | будет удалено | |
closed | спец.цена | будет удалено | |
min_stay_through | спец.цена | будет удалено | |
max_stay_through | спец.цена | будет удалено | |
ostrovok_rate_ids | спец.цена | будет удалено | |
ostrovok_occupancy_ids | старое поле, не используется | будет удалено | |
oktogo_rate_ids | спец.цена | будет удалено | |
use_rates_restrictions | спец.цена | будет удалено | |
expedia_rate_ids | спец.цена | будет удалено | |
special_price_id | спец.цена | будет удалено | |
bronevik_rate_ids | спец.цена | будет удалено | |
sync_at | системное поле | будет удалено | |
preparing | системное поле | будет удалено | |
partner | системное поле | будет удалено | |
partner_uid | системное поле | будет удалено | |
partner_guests_count | системное поле | будет удалено | |
hotels_101_rate_ids | спец.цена | будет удалено | |
secure_id | системное поле | будет удалено | |
uuid | системное поле | будет удалено |
Тело {client}
Название поля | Тип | Описание | Дополнительно |
id | integer | id клиента | |
fio | string | имя клиента | |
string | почта клиента | ||
phone | string | телефон клиента | |
additional_phone | string | null | дополнительный телефон | |
created_at | timestamp | время создания | |
updated_at | timestamp | время обновления | |
modified_at | timestamp | ||
agency_id | integer | id агентства | будет удалено |
Тело {booking_origin}
Название поля | Тип | Описание | Дополнительно |
id | integer | id источника брони | |
title | string | название источника брони | например “Avito.ru” |
Тело {apartment}
Название поля | Тип | Описание | Дополнительно |
id | integer | id объекта | |
title | string | служебное название объекта, а если нет служебного название - то адрес объекта | |
| address | string | Полный адрес объекта |
Тело {payment}
Название поля | Тип | Описание | Дополнительно |
rent_id | integer | id события (брони) | |
rent_payment_invoice_id | integer | id счёта | |
user_id | integer | id пользователя, который создал платеж | |
amount | integer | сумма платежа | |
is_approved | boolean | старое поле, не используется | будет удалено |
note | string | null | комметарии к платежу | |
timezone | string | старое поле, не используется | будет удалено |
created_at | timestamp | время создания | |
updated_at | timestamp | время обновления | |
paid_at | timestamp | время оплаты | |
paymentable_type | string | старое поле, не используется | будет удалено |
paymentable_id | integer | старое поле, не используется | будет удалено |
refunded | boolean | null | возвращен ли платеж | |
type | "payment" | “deposit” | тип платежа | |
payment_type | "income" | “refund” | “fine” | доход, возврат или штраф | |
string | старое поле, не используется | будет удалено | |
parent_payment_id | integer | id платежа, который вернули | |
payment_system | "moneta" | "moneta_le" | "yandex_kassa" | "manual" | платежная система | |
paid_user_id | integer | null | внутренний id пользователь платежной системы | |
is_delete | boolean | удален ли платеж | |
refund_data | json | полная информация о возврате от платежной системы | |
refund_started_at | timestamp | время возврата платежа | |
moneta_payment_state | string | старое поле, не используется | будет удалено |
creation_origin | "internal" | "external" | как было создан платеж | |
moneta_transaction_id | bigint | null | внутренний id платежа | |
uuid | string | старое поле, не используется | будет удалено |
secure_id | string | старое поле, не используется | будет удалено |
payment_link | string | ссылка на оплату |
Тело {changes}
Название поля | Тип | Описание | Дополнительно |
event_calendar | integer | изменение данных о брони (даты, время, сумма, статус и т.д.) | |
client | объект | изменение данных клиента | |
event_calendar_payments | массив | изменения в платежах |
Примеры Webhook
Пример вебхука на создание брони
{
"action": "create_booking",
"status": "booked",
"data": {
"booking": {
"id": 113386019,
"begin_date": "2025-06-25",
"end_date": "2025-06-26",
"realty_id": 208656,
"user_id": 96663,
"created_at": "2025-06-16T11:30:24.239+03:00",
"updated_at": "2025-06-16T11:30:44.353+03:00",
"status_cd": 5,
"booking_id": null,
"amount": 500,
"is_delete": false,
"notes": "2 гостей",
"color": null,
"contacts": null,
"source": "manual",
"days": null,
"realty_room_id": null,
"max_days": null,
"closed_on_arrivial": false,
"closed_on_departure": false,
"rate_ids": null,
"single_use_amount": null,
"closed": false,
"min_stay_through": null,
"max_stay_through": null,
"ostrovok_rate_ids": null,
"ostrovok_occupancy_ids": null,
"booking_origin_id": null,
"oktogo_rate_ids": null,
"arrival_time": null,
"departure_time": null,
"prepayment": 500,
"client_id": 35632150,
"deposit": 0,
"is_send_confirm_email": false,
"payment": 500,
"use_rates_restrictions": false,
"expedia_rate_ids": null,
"special_price_id": null,
"is_hidden": false,
"bronevik_rate_ids": null,
"agency_id": 58474,
"reaction": null,
"sync_at": "2025-06-16T11:30:24.239+03:00",
"preparing": false,
"partner": null,
"partner_uid": null,
"partner_guests_count": null,
"platform_tax": null,
"platform_tax_currency": null,
"hotels_101_rate_ids": null,
"automessages_enabled": false,
"uuid": "3ee9d678-2a88-4e74-ab7a-65b79091e332",
"secure_id": "o8yqwjeDQO",
"client": {
"id": 35632150,
"fio": "Кирилл",
"email": null,
"phone": "+7 999 888-88-88",
"additional_phone": null,
"created_at": "2025-06-16T11:30:17.195+03:00",
"updated_at": "2025-06-16T11:30:17.773+03:00",
"swindler_id": null,
"contact_text": "Кирилл\nзабронировал 24-25 июня, Тверская 18\n500/сут",
"modified_at": "2025-06-16T11:30:17.195+03:00",
"contact_text_for_ios": "24-25 июня; Тверская 18; Кирилл; 500",
"agency_id": 58474,
"last_numbers": null
},
"event_calendar_payments": [
{
"id": 24902385,
"rent_id": 113386019,
"rent_payment_invoice_id": 117228,
"user_id": 96663,
"amount": 500,
"is_approved": false,
"note": null,
"created_at": "2025-06-16T11:30:43.966+03:00",
"updated_at": "2025-06-16T11:30:43.966+03:00",
"timezone": "Europe/Moscow",
"paid_at": "2025-06-16T11:30:43.966+03:00",
"paymentable_type": null,
"paymentable_id": null,
"refunded": null,
"type": "payment",
"payment_type": "income",
"email": null,
"parent_payment_id": null,
"payment_system": "manual",
"paid_user_id": null,
"is_delete": false,
"refund_data": null,
"refund_started_at": null,
"moneta_payment_state": null,
"creation_origin": "internal",
"moneta_transaction_id": null,
"uuid": "1a68362a-d287-424b-adcb-f7aea7e81642",
"secure_id": "vBWPUdGmsM",
"payment_link": null
}
],
"url": "https://realtycalendar.ru/event_calendars/113386019",
"price_per_day": 500,
"apartment": {
"id": 208656,
"title": "Тверская 18"
},
"booking_origin": {
"id": null,
"title": null
},
"rent_payment_invoices": [
{
"id": 117228,
"name": "Перевод"
},
{
"id": 111397,
"name": "Сякой"
},
{
"id": 104687,
"name": "Карта"
},
{
"id": 104427,
"name": "Монета"
},
{
"id": 104390,
"name": "Наличные"
}
],
"deposit_payment_links": [],
"payment_links": [],
"number_of_days": 2,
"number_of_nights": 1,
"balance_to_be_paid_1": 0,
"balance_to_be_paid_2": 0,
"address": "Тверская 18"
},
"crm_entity_id": null,
"bitrix_lead_id": null
}
}
Пример вебхука на изменение брони
{
"action": "update_booking",
"status": "booked",
"data": {
"booking": {
"id": 113386019,
"begin_date": "2025-06-25",
"end_date": "2025-06-26",
"realty_id": 208656,
"user_id": 96663,
"created_at": "2025-06-16T11:30:24.239+03:00",
"updated_at": "2025-06-16T11:33:21.547+03:00",
"status_cd": 5,
"booking_id": null,
"amount": 500,
"is_delete": false,
"notes": "2 гостей",
"color": null,
"contacts": null,
"source": "manual",
"days": null,
"realty_room_id": null,
"max_days": null,
"closed_on_arrivial": false,
"closed_on_departure": false,
"rate_ids": null,
"single_use_amount": null,
"closed": false,
"min_stay_through": null,
"max_stay_through": null,
"ostrovok_rate_ids": null,
"ostrovok_occupancy_ids": null,
"booking_origin_id": null,
"oktogo_rate_ids": null,
"arrival_time": null,
"departure_time": null,
"prepayment": 500,
"client_id": 35632150,
"deposit": 0,
"is_send_confirm_email": false,
"payment": 500,
"use_rates_restrictions": false,
"expedia_rate_ids": null,
"special_price_id": null,
"is_hidden": false,
"bronevik_rate_ids": null,
"agency_id": 58474,
"reaction": null,
"sync_at": "2025-06-16T11:33:21.574+03:00",
"preparing": false,
"partner": null,
"partner_uid": null,
"partner_guests_count": null,
"platform_tax": null,
"platform_tax_currency": null,
"hotels_101_rate_ids": null,
"automessages_enabled": false,
"uuid": "3ee9d678-2a88-4e74-ab7a-65b79091e332",
"secure_id": "o8yqwjeDQO",
"client": {
"id": 35632150,
"fio": "Кирилл",
"email": null,
"phone": "+7 999 888-88-88",
"additional_phone": null,
"created_at": "2025-06-16T11:30:17.195+03:00",
"updated_at": "2025-06-16T11:30:17.773+03:00",
"swindler_id": null,
"contact_text": "Кирилл\nзабронировал 24-25 июня, Тверская 18\n500/сут",
"modified_at": "2025-06-16T11:30:17.195+03:00",
"contact_text_for_ios": "24-25 июня; Тверская 18; Кирилл; 500",
"agency_id": 58474,
"last_numbers": null
},
"payments_with_deleted": [
{
"id": 24902385,
"rent_id": 113386019,
"rent_payment_invoice_id": 117228,
"user_id": 96663,
"amount": 500,
"is_approved": false,
"note": null,
"created_at": "2025-06-16T11:30:43.966+03:00",
"updated_at": "2025-06-16T11:30:43.966+03:00",
"timezone": "Europe/Moscow",
"paid_at": "2025-06-16T11:30:43.966+03:00",
"paymentable_type": null,
"paymentable_id": null,
"refunded": null,
"type": "payment",
"payment_type": "income",
"email": null,
"parent_payment_id": null,
"payment_system": "manual",
"paid_user_id": null,
"is_delete": false,
"refund_data": null,
"refund_started_at": null,
"moneta_payment_state": null,
"creation_origin": "internal",
"moneta_transaction_id": null,
"uuid": "1a68362a-d287-424b-adcb-f7aea7e81642",
"secure_id": "vBWPUdGmsM",
"payment_link": null
},
{
"id": 24902540,
"rent_id": 113386019,
"rent_payment_invoice_id": 104427,
"user_id": 96663,
"amount": 2000,
"is_approved": false,
"note": null,
"created_at": "2025-06-16T11:33:17.273+03:00",
"updated_at": "2025-06-16T11:33:17.273+03:00",
"timezone": "Europe/Moscow",
"paid_at": null,
"paymentable_type": "Moneta::Income",
"paymentable_id": 2174830,
"refunded": null,
"type": "deposit",
"payment_type": "income",
"email": null,
"parent_payment_id": null,
"payment_system": "moneta",
"paid_user_id": null,
"is_delete": false,
"refund_data": null,
"refund_started_at": null,
"moneta_payment_state": null,
"creation_origin": "internal",
"moneta_transaction_id": null,
"uuid": "49052179-587b-44c8-a173-d8e6823bfe7f",
"secure_id": "KBbCuT0EaW",
"payment_link": "https://saferents.ru/d/KBbCuT0EaW"
}
],
"url": "https://realtycalendar.ru/event_calendars/113386019",
"price_per_day": 500,
"apartment": {
"id": 208656,
"title": "Тверская 18"
},
"booking_origin": {
"id": null,
"title": null
},
"rent_payment_invoices": [
{
"id": 117228,
"name": "Перевод"
},
{
"id": 104687,
"name": "Карта"
},
{
"id": 104427,
"name": "Монета"
},
{
"id": 104390,
"name": "Наличные"
}
],
"deposit_payment_links": [
"https://saferents.ru/d/KBbCuT0EaW"
],
"payment_links": [],
"number_of_days": 2,
"number_of_nights": 1,
"balance_to_be_paid_1": 0,
"balance_to_be_paid_2": 0,
"address": "Тверская 18"
},
"changes": {
"event_calendar": {
"sync_at": [
null,
"2025-06-16T11:33:21.574+03:00"
]
},
"client": {
"contact_text": [
null,
"Кирилл\nзабронировал 24-25 июня, Тверская 18\n500/сут"
],
"contact_text_for_ios": [
null,
"24-25 июня; Тверская 18; Кирилл; 500"
],
"modified_at": [
null,
"2025-06-16T11:30:17.195+03:00"
]
},
"event_calendar_payments": [
{
"24902385": {
"rent_id": 113386019,
"rent_payment_invoice_id": 117228,
"user_id": 96663,
"amount": 500,
"is_approved": false,
"note": null,
"timezone": "Europe/Moscow",
"paid_at": "2025-06-16T11:30:43.966+03:00",
"paymentable_type": null,
"paymentable_id": null,
"refunded": null,
"type": "payment",
"payment_type": "income",
"email": null,
"parent_payment_id": null,
"payment_system": "manual",
"paid_user_id": null,
"is_delete": false,
"refund_data": null,
"refund_started_at": null,
"moneta_payment_state": null,
"creation_origin": "internal",
"moneta_transaction_id": null,
"uuid": null,
"secure_id": "vBWPUdGmsM"
}
},
{
"24902540": {
"rent_id": 113386019,
"rent_payment_invoice_id": 104427,
"user_id": 96663,
"amount": 2000,
"is_approved": false,
"note": null,
"timezone": "Europe/Moscow",
"paid_at": null,
"paymentable_type": "Moneta::Income",
"paymentable_id": 2174830,
"refunded": null,
"type": "deposit",
"payment_type": "income",
"email": null,
"parent_payment_id": null,
"payment_system": "moneta",
"paid_user_id": null,
"is_delete": false,
"refund_data": null,
"refund_started_at": null,
"moneta_payment_state": null,
"creation_origin": "internal",
"moneta_transaction_id": null,
"uuid": null,
"secure_id": "KBbCuT0EaW"
}
}
]
},
"crm_entity_id": null,
"bitrix_lead_id": null
}
}
Пример вебхука на создание корзины
Условный пример корзины, созданной через API:
{
"action": "create_basket",
"data": {
"basket": {
"id": 12345,
"user_id": 678,
"created_at": "2026-10-05T10:00:00.000+03:00",
"updated_at": "2026-10-05T10:00:00.000+03:00",
"crm_request_id": null,
"amo_request_id": null,
"crm_widget_request_id": null,
"lifetime": null,
"uuid": "20fb1889-a686-45c8-9640-9d7d985e7d0b",
"secure_id": null,
"rent_id": null,
"source": {
"begin_date": "2026-10-10",
"end_date": "2026-10-12",
"items": [
{
"apartment_id": 456,
"apartment_title": "Квартира на Центральной",
"amount": 10000
}
]
},
"url": "https://example.com/basket/example"
},
"crm_entity_id": null,
"bitrix_lead_id": null
}
}
Частые вопросы
1. Будут ли выгружены все бронирования, сделанные до подключения Webhook?
Нет, Webhook будут отправляться только по новым событиям.
2. Будет ли отправлен Webhook об изменениях брони, если даты уже прошли?
Webhook будет отправляться по всем событиям по бронированиям, даты которых ещё не прошли. Если бронь была создана до подключения Webhook, уведомление о её создании не поступит, однако последующие изменения будут передаваться. Изменения по бронированиям с уже прошедшими датами через Webhook не отправляются.
3. Как повторно отправить выгрузку через Webhook?
Для активации хука нужно изменить бронирование.
4. Сколько времени длится передача данных через Webhook?
Обычно передача данных занимает всего несколько секунд.
5. У вас есть внешний API?
На данный момент у нас нет внешнего партнёрского API, которое мы официально поддерживаем и сопровождаем.
6. Остались вопросы?
Напишите, пожалуйста, на почту: partners@realtycalendar.ru
7. Передаётся ли через Webhook сумма к получению после удержания комиссии площадки?
Нет. Через Webhook отдельно передаются полная стоимость бронирования и комиссия площадки. Готовая сумма за вычетом комиссии не передаётся — её необходимо рассчитывать в принимающей системе.
Остаток к оплате показывает, сколько ещё должен внести гость с учётом предоплаты. Это не сумма, которую получит владелец после удержания комиссии.
8. Можно ли узнать, кто подключил Webhook?
Нет. RealtyCalendar не сохраняет информацию о том, какой пользователь подключил Webhook. Поэтому определить сотрудника, добавившего конкретный адрес Webhook, нельзя.

