Справочный центр / Исходящие вебхуки

Исходящие вебхуки

Кратко

Исходящий вебхук отправляет JSON POST на HTTPS-адрес при выбранном событии заявки. По желанию тело подписывается HMAC-SHA256.

Доступ и события

Настройка находится в Настройки → Автоматизация → Исходящие вебхуки и доступна администратору. Интерфейс предлагает события:

Если список событий пуст, вебхук получает все вызываемые движком события.

Формат запроса

{
  "event": "ticket_created",
  "ticket_id": 4521,
  "tenant_id": 18,
  "timestamp": "2026-08-30T10:30:00Z",
  "data": {
    "subject": "Не работает оплата",
    "status": "new",
    "priority": "high",
    "category": "billing",
    "assigned_to": null,
    "source": "widget"
  }
}

Дополнительные поля конкретного события добавляются внутрь data. Полей webhook_id, вложенных ticket/contact/metadata в общем контракте нет.

Также отправляется заголовок X-Webhook-Event с кодом события.

Проверка подписи

Если у вебхука задан секрет, заголовок имеет вид:

X-Webhook-Signature: sha256=<hex-hmac>

Пример для Node.js:

const crypto = require('crypto');

const expected = 'sha256=' + crypto
  .createHmac('sha256', secret)
  .update(rawBody)
  .digest('hex');

const actual = req.headers['x-webhook-signature'] || '';
const valid = expected.length === actual.length &&
  crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(actual));

Считайте HMAC по исходным байтам тела до JSON-разбора.

Доставка и журнал

Движок делает одну синхронную попытку: до 5 секунд на соединение и до 10 секунд на весь запрос, без перехода по redirect. Встроенной очереди повторов, backoff и автоматического отключения после серии ошибок сейчас нет. Поэтому принимающая сторона должна быстро вернуть 2xx, а собственную тяжёлую работу поставить в свою очередь.

Для каждой попытки сохраняются HTTP-код, ошибка, сокращённый ответ и время. В списке видны число отправок и последний статус; полный журнал показывает последние 100 записей.

Настройка и тест

Успешный тест подтверждает доступность URL и формат текущего запроса, но не доказывает обработку реальных событий вашей системой.

Частые вопросы

Почему доставка не повторилась?

Повторов в текущем движке нет. Исправьте принимающий endpoint и инициируйте новое событие либо тест.

Можно подписать один URL на несколько событий?

Да. Отметьте нужные события; их код всегда приходит в поле event и заголовке X-Webhook-Event.

Связанные статьи

Не нашли ответ? Найдите другую статью или напишите в поддержку.