Skip to main content
For SaaS apps that want to fire webhooks at their CUSTOMERS’ endpoints when domain events happen (“invoice.paid” → customer’s URL). Svix-style HMAC-SHA256 signatures so receivers using Svix’s reference verifier work unchanged.

Install

Config

Dispatch an event

The plugin enqueues delivery jobs to every matching endpoint via Pylon’s ctx.scheduler.runAfter. Failed deliveries retry on the configured schedule (default: 5s → 5m → 30m → 2h → 5h → 10h → 14h → dead).

Receiver verification

Receivers verify with the same algorithm Svix’s reference verifier uses:

Endpoints

Customers register webhook URLs by inserting into the WebhookEndpoint entity: Tenant-scoped policy: auth.tenantId == data.applicationId or auth.is_admin. Apps that want a stricter ACL (e.g. only owner role) override this in their manifest.

Delivery audit

Every attempt writes a WebhookAttempt row: Read-only entity — customers can view their endpoint’s delivery history but can’t mutate it.

Secret rotation

Both signatures appear in the webhook-signature header (v1,<sig-old> v1,<sig-new>). Receivers accept either — gives customers a window to rotate their stored secret without dropping deliveries.