Outbound Webhooks

Отправка подписанных HTTP-вебхуков при событиях create, update и delete в коллекциях Payload CMS через очередь задач Jobs Queue.

Сообщество 0 10/нед MIT v0.3.5

Установка

pnpm add payload-plugin-outbound-webhooks

Описание

В Payload нет встроенного механизма отправки POST-запросов при изменении документов, и плагин восполняет этот пробел. Он добавляет хуки afterChange и afterDelete к коллекциям из списка collections и при их срабатывании ставит задачу доставки в очередь Jobs Queue. Эта задача отправляет JSON с данными события, именем коллекции, идентификатором документа, полным документом, предыдущей версией при обновлении и временем события на все подписанные URL. Доставка идёт через очередь задач, поэтому она не блокирует основной процесс и переживает рестарты, что удобно для интеграции Payload с Zapier, Make, n8n, CRM или любым HTTP-сервисом. Вы сами выбираете, какие коллекции и события отслеживать: create, update и delete. Адреса конечных точек можно жёстко задать в массиве endpoints или позволить редакторам управлять ими через коллекцию webhookEndpoints, которую плагин добавляет в админку по умолчанию. Сопоставление событий с конечными точками работает по шаблонам подписки: orders.create, orders.* или *.delete, где звёздочка выступает подстановочным знаком с любой стороны. Функция filter на уровне коллекции позволяет дополнительно ограничить срабатывание, например публиковать вебхук только при переходе в статус published. Доставка гарантируется хотя бы один раз. Сетевые ошибки, таймауты и ответы с кодами 5xx, 408 и 429 помечают задачу как неудачную, и очередь повторяет её до maxRetries раз (по умолчанию 5). Остальные ответы 4xx считаются постоянными: они записываются в лог, но не ретраятся, так как повторный идентичный запрос приведёт к тому же результату. Встроенный circuit-breaker отключает конечную точку после failureThreshold подряд идущих неудач (по умолчанию 5, 0 отключает), чтобы мёртвый адрес перестал расходовать попытки. Для конечных точек из админки счётчик хранится в их документе, для статических берётся история из коллекции webhookLogs с восстановлением через half-open probe после паузы. И circuit-breaker, и логика пропуска повторов работают только при включённом enableDeliveryLog (он включён по умолчанию). Если у конечной точки задан secret, запрос подписывается заголовком X-Webhook-Signature в формате t=<timestamp>,v1=<hmac-sha256 hex digest>, вычисленным по телу запроса. Плагин экспортирует функцию verifyPayloadSignature, которая проверяет подпись и отклоняет повторы старше 5 минут через параметр toleranceSeconds. Каждый запрос также несёт заголовки X-Webhook-Event и X-Webhook-Id, где идентификатор дублирует deliveryId, неизменный между повторами, так что получателю следует дедуплицировать по нему, а не по паре event и docId.

О пакете

Имя пакета
payload-plugin-outbound-webhooks
Последняя версия
0.3.5
Размер
58 кБ
Лицензия
MIT
Загрузок в неделю
10
Последняя публикация
20 сент. 2026 г.