Интеграции передают события бизнеса в другой сервис сразу, как они произошли: новый диалог, запись, вызов сотрудника, обращение. Через Zapier или Make можно, например, добавить строку в таблицу, отправить сообщение в чат или создать карточку в CRM без ручного копирования.
Где найти
Откройте «Модули» в верхнем меню, подключите модуль «Интеграции» (по умолчанию он выключен) и нажмите «Открыть интеграции» на его карточке. Откроется вкладка «Вебхуки», рядом — вкладка «Журнал событий». Раздел открывается только Владельцу и Администратору: адрес приёмника может содержать личный токен. Пока модуль выключен, события никуда не отправляются, а пропущенные не будут отправлены позже. Получатели остаются настроенными, журнал событий продолжает вестись.
Как добавить приёмник
- В Zapier создайте Zap с триггером «Webhooks by Zapier» и событием «Catch Hook» и скопируйте выданный адрес. В Make добавьте модуль «Custom webhook» и скопируйте его адрес.
- На странице интеграций заполните «Название» (например, название Zap) и «Адрес приёмника» (скопированный адрес).
- В «Какие события отправлять» отметьте, что отправлять.
- Нажмите «Добавить приёмник».
- Секрет подписи показывается один раз. Скопируйте его и сохраните. Zapier и Make он не нужен; ваш собственный сервер использует его для проверки подписи. Если секрет потерян, создайте новый через «Сменить секрет».
- На карточке приёмника нажмите «Отправить тест». Результат: Доставлено или Не доставлено с причиной.
Адрес должен быть публичным и начинаться с https. Не принимаются, и страница называет причину: адреса http, IP-адреса вместо домена, нестандартные порты, адреса с логином и паролем, внутренние адреса и адреса на доменах ReceptionWorks. Страница показывает только домен и путь адреса: часть после знака вопроса может содержать токен вашего приёмника.
Какие события отправляются
- «Новый диалог» (
conversation.started): клиент начал новый диалог в любом канале. Тестовые чаты и заблокированные клиенты не отправляются. - «Запрошен сотрудник» (
conversation.handoff_requested): AI-сотрудник или система попросили подключить сотрудника. В событии указана причина: просьба AI-сотрудника, остановленные автоматические ответы, ручной режим, недоступный AI-сотрудник, исчерпанный лимит ответов или неактивный тариф. - «Диалог передан сотруднику» (
conversation.handed_off): сотрудник принял диалог. Отправляется каждый раз. - «Новая запись», «Запись изменена» и «Запись отменена» (
booking.created,booking.changed,booking.cancelled): запись создали, изменили или отменили AI-сотрудник, вы в календаре или бизнес-ассистент. - «Новое обращение» (
support_case.created) и «Обращение изменено» (support_case.updated): обращение создано, либо изменились его статус, приоритет или описание. Внутренние заметки команды не отправляются. - «Новое сообщение» (
message.created): каждое сообщение, которое видит клиент, отправляется сразу, как появилось: от клиента, AI-сотрудника, сотрудника бизнеса или системы (уведомление в диалоге). В событии есть текст сообщения. - «Диалог целиком» (
conversation.transcript): весь диалог, который отправляется, когда в нём не было сообщений 30 минут. Если диалог продолжается, он отправляется снова после каждой следующей паузы.
События тестового чата не отправляются. Приёмник получает только события, которые произошли после его добавления и пока он включён: то, что случилось во время паузы или отключения, позже не отправляется.
«Новое сообщение» и «Диалог целиком» несут полный текст диалогов, в том числе то, что пишут клиенты. Текст покидает ReceptionWorks и попадает к выбранному вами приёмнику, поэтому отмечайте эти события только для приёмников, которым доверяете. У нового приёмника эти два события не отмечены. Они отправляются, только пока их отметил какой-либо приёмник, и не попадают в журнал событий и его выгрузку: сам диалог есть во входящих. Тестовые чаты и заблокированные клиенты не отправляются.
Что получает приёмник
Каждое событие — это POST-запрос с телом JSON. Пример для вызова сотрудника, который запросил AI-сотрудник:
{
"schema_version": "business-webhook.v1",
"id": "5b0c5e2e-0000-4000-8000-000000000001",
"type": "conversation.handoff_requested",
"occurred_at": "2026-10-07T09:30:00.000Z",
"business": { "name": "Example Studio" },
"actor": { "kind": "ai_employee" },
"channel": "telegram",
"employee": { "name": "Anna" },
"conversation": { "url": "https://app.example.com/businesses/studio/inbox?conversation=example" },
"customer": { "name": "Maria", "email": "maria@example.com", "phone": "+1 555 0100" },
"booking": null,
"handoff": { "reason": "ai_request", "reason_text": "The customer wants to discuss a discount" },
"support_case": null
}
id: идентификатор события. При повторных попытках он не меняется, поэтому игнорируйте уже обработанный id.type: тип события из списка выше;occurred_at: время по UTC.business: название вашего бизнеса.actor: кто вызвал событие.kind—customer,ai_employee,team_member(сотрудник или бизнес-ассистент) илиsystem.channel:web,telegram,instagram,whatsappилиmessenger, либоnull, если у события нет диалога.employee: имя AI-сотрудника илиnull, если действовала команда или бизнес-ассистент.conversation.url: ссылка на диалог; она открывается для членов команды, вошедших в аккаунт.null, если диалога нет.customer: имя, email и телефон на момент отправки илиnull. Контакты передаются полностью, поэтому добавляйте только приёмники, которым доверяете.booking: только в событиях записи: название услуги,starts_at,ends_at,statusи место.handoff: только для «Запрошен сотрудник»:reason(ai_request,automation_stopped,manual_mode,ai_unavailable,quota_exhaustedилиplan_inactive) иreason_text— собственное объяснение AI-сотрудника илиnull.support_case: только в событиях обращений:subject,status(open,in_progress,waiting_customer,resolvedилиclosed) иpriority(low,normal,highилиurgent).message: только для «Новое сообщение»:id,sequence(место сообщения в диалоге),author(customer,ai_employee,team_memberилиsystem),text,created_atиattachments: список изkind(всегдаimage),nameиmedia_type. Передаются только имя и тип вложения, без самого файла.transcript: только для «Диалог целиком»:message_count(сообщений в диалоге),truncatedиmessages: сообщения в том же виде, чтоmessage. В диалог целиком входят не более 500 последних сообщений и 512 КиБ текста;truncatedравноtrue, если более старые сообщения не вошли.
Разделы, которые к событию не относятся, равны null. У тестового события из «Отправить тест» тип webhook.test, и все разделы, кроме business, равны null. В данных нет переведённых текстов: названия переданы как сохранены, коды — фиксированные английские слова, а время указано по UTC.
"message": {
"id": "6c1d0f52-0000-4000-8000-000000000002",
"sequence": 12,
"author": "customer",
"text": "Hello, can I book for Friday?",
"created_at": "2026-10-07T09:29:41.000Z",
"attachments": [{ "kind": "image", "name": "photo.jpg", "media_type": "image/jpeg" }]
}
Сообщения и диалоги целиком могут приходить не по порядку и повторяться, поэтому не полагайтесь на порядок прихода. По sequence восстанавливайте порядок сообщений в диалоге, а доставку с уже обработанным webhook-id отбрасывайте. Диалог целиком повторяет сообщения, которые вы могли уже получить по одному: используйте его, чтобы проверить или восстановить весь диалог.
Как проверить подпись
В каждом запросе три заголовка стандарта Standard Webhooks: webhook-id, webhook-timestamp и
webhook-signature. Zapier и Make их не проверяют. На своём сервере используйте официальную библиотеку Standard
Webhooks для вашего языка: передайте ей секрет в точности как показан (он начинается с whsec_), исходное
неизменённое тело запроса и три заголовка. Проверка вручную:
signed_content = webhook-id + "." + webhook-timestamp + "." + raw request body
signature = "v1," + base64( HMAC-SHA256( key, signed_content ) )
key = base64-decoded part of the secret after "whsec_"
Заголовок webhook-signature содержит v1, и подпись. После «Сменить секрет» в нём две подписи через пробел: принимайте
запрос, если совпала любая. Отклоняйте запросы, у которых время отличается от вашего больше чем на пять минут.
Повторы и автоматическое отключение
Приёмник должен ответить кодом 2xx за 10 секунд. Перенаправления не выполняются: адрес, который перенаправляет,
считается ошибкой. Иначе ReceptionWorks повторяет отправку: сразу, затем через 1 минуту, 5 минут, 30 минут, 2 часа,
6 часов и 12 часов. Это 7 попыток примерно за 21 час. Если все неудачны, доставка получает статус Не доставлено
в «Журнал доставок», и вы можете нажать «Отправить повторно». Повторы идут с тем же webhook-id, поэтому приёмник может отбрасывать
дубли.
Приёмник отключается автоматически, если отвечает, что адреса больше нет (код 410), или если пять событий подряд не доставлены. Тогда на карточке появляется «Отключён автоматически» с причиной, а команда получает уведомление. Исправьте адрес и нажмите «Включить»: события, пропущенные за это время, не отправляются.
Пауза, новый секрет, удаление
- «Пауза» останавливает отправку без удаления приёмника; чтобы продолжить, нажмите «Включить».
- «Сменить секрет», затем «Создать новый секрет»: новый секрет показывается один раз. Старый действует ещё 24 часа, чтобы вы обновили приёмник без потери событий.
- «Удалить», затем «Удалить приёмник» удаляют приёмник насовсем.
Что важно знать
- Интеграциями управляют только Владелец и Администратор. В бизнесе может быть до 5 приёмников.
- Журнал доставок показывает событие, приёмник, время, статус, число попыток и следующую попытку. Текст запросов в нём не хранится.
- Проверка через «Отправить тест» не создаёт запись в журнале и не требует настоящего события.