🧾 Типы событий
Что это. Тип события — строка, по которой подписка решает, доставлять событие или нет. Она же уходит в заголовок X-Webhook-Type исходящего запроса.
Когда нужно. Когда вы заводите исходящий вебхук и выбираете, на что подписаться.
В сервисе вебхуков нет перечня «поддерживаемых событий Fixorix». Тип события — произвольная строка, её задаёт та система, которая публикует событие, а не сервис вебхуков. Ни один сервис Fixorix пока в этот контур события не публикует, поэтому готового списка типов, на которые можно подписаться, сейчас просто не существует.
Всё, что описано ниже, — правила, по которым типы устроены, а не список доступных значений.
Как устроен тип события
Подписка хранит набор строк-типов. Когда в источник событий приходит событие, сервис сравнивает его тип со строками подписки:
- сравнение точное, по всей строке — шаблонов вида
ticket.*нет; - фильтров по содержимому события нет: подписка смотрит только на тип;
- у каждой подписки свой набор типов, поэтому одно событие может породить несколько доставок — по одной на каждую подписанную на этот тип подписку того же проекта и того же источника.
Конверт события
В доставку уходит весь конверт события целиком, байт в байт — не только полезная нагрузка.
| Поле | Обязательно | Описание |
|---|---|---|
id | да | Идентификатор события. Уходит в заголовок X-Webhook-Id, по нему получатель дедуплицирует повторы |
projectId | да | UUID проекта. Уходит в заголовок X-Webhook-Project-Id |
type | да | Тип события. Уходит в заголовок X-Webhook-Type |
createdAt | нет | Момент возникновения события, ISO-8601 |
{
"id": "evt-20260824-000123",
"projectId": "1f2e3d4c-5b6a-7890-abcd-ef1234567890",
"type": "ticket.created",
"createdAt": "2026-08-24T10:15:30Z"
}
Событие с пустым телом, с невалидным JSON, без обязательных полей, с неверным форматом идентификатора или типа, с не-UUID в поле проекта или с некорректной датой доставлено не будет — оно отбраковывается до создания доставки.
Ограничения формата
| Что | Формат | Куда попадает |
|---|---|---|
| Тип события | [A-Za-z0-9][A-Za-z0-9._:@-]{0,127} | Заголовок X-Webhook-Type и тег метрики |
| Идентификатор события | [A-Za-z0-9][A-Za-z0-9._:@-]{0,254} | Заголовок X-Webhook-Id |
| Имя источника событий | [A-Za-z0-9][A-Za-z0-9._-]{0,248} | Настройка подписки |
Ограничение не косметическое. Тип и идентификатор уходят в HTTP-заголовки: перевод строки внутри значения расщепил бы запрос. Кроме того, тип становится тегом метрики — неограниченный набор значений раздул бы их количество.
Тип, не подходящий по формату, отклоняется при регистрации подписки ошибкой 400 invalid_type. При снятии типа с подписки формат не проверяется — снять можно и то, что было записано раньше.
Единственный встроенный тип
В сервисе зашито ровно одно значение — webhook.test. Это тип по умолчанию для тестовой отправки: если при тестовой отправке не указать свой тип, доставка уйдёт именно с ним.
Хотите увидеть работающую доставку прямо сейчас — отправьте тестовое событие. Это единственный способ, пока события продукта не публикуются.
Как выбирать имена типов
Раз каталога нет, имена придумывает публикующая сторона. Разумные правила:
- разделяйте части точкой: сначала объект, потом действие —
ticket.created,chat.status.changed; - держитесь одного языка и одного регистра во всей интеграции;
- пробелов, кириллицы и переводов строки в типе быть не может — их не пропустит проверка формата;
- не кладите в тип идентификаторы конкретных объектов: каждое новое значение — отдельный ряд в метриках;
- 128 символов — верхняя граница, но короткое имя читается в журнале лучше.
Служебные наборы значений
Их сервис действительно перечисляет — они встречаются в ответах управляющего API:
| Набор | Значения |
|---|---|
| Статус доставки | PENDING, IN_PROGRESS, DELIVERED, FAILED, EXHAUSTED |
| Статус вебхука | ACTIVE, PAUSED |
| Состояние секрета подписи | PRIMARY, SECONDARY |
| Способ проверки секрета на приёме | HEADER, FIELD |
Что означает каждый статус доставки — в таблице на странице Исходящие вебхуки.
Что есть в продукте вместо каталога
События внутри платформы существуют — на них реагируют Сценарии: «Сообщение от клиента», «Обращение создано», «Сменился статус обращения», «Тикет создан», «Комментарий клиента», «Подписка оформлена», «Превышен AI-лимит» и другие. Полные списки — в разделе Триггеры.
События сценариев и события вебхуков — не одно и то же. Сценарии реагируют на них внутри платформы; в контур вебхуков эти события пока не попадают, и подписаться на них по именам из редактора сценариев нельзя. Ориентироваться на них при проектировании интеграции можно — рассчитывать, что подписка на такое имя сработает, нельзя.
Ограничения
- Каталога типов событий продукта нет.
- Сервисы Fixorix пока не публикуют события в контур вебхуков.
- Подписка сравнивает тип целиком: шаблоны и подстановочные знаки не поддерживаются.
- Фильтровать доставку по содержимому события нельзя — только по типу.
- Схема полезной нагрузки события сервисом не проверяется: обязательны только поля конверта.
→ Вебхуки · Исходящие вебхуки · Входящие вебхуки · Вебхуки на дашборде · Триггеры сценариев