All releases
Feature

Trawl webhooks: pick your events, Send test, replay, and a low-balance warning

Trawl webhooks now work like Mail, Auth and Waitlist: several endpoints per workspace, each with its own events, a Send test that shows what your server answered, and a 30-day event log with replay. A new credits.low event warns you before your balance runs out.

/v1/workspaces/:workspaceId/webhooks/endpoints manages up to 10 endpoints per workspace. Each one picks its events from job.succeeded, job.failed and the new credits.low, and receives them for every job in the workspace: there is nothing to attach to a job any more. GET …/webhooks/event-types describes each event with an example payload.

credits.low is sent once when your balance drops below 10% of your last top-up (at least 100 steps), and again after your next top-up. GET …/credits now says low_balance and where the line is.

POST …/webhooks/endpoints/:id/test sends a signed example right away and returns what your receiver answered. GET …/webhooks/events lists the last 30 days of events with the state of each delivery and when the next retry is due, and POST …/webhooks/events/:id/replay sends one again. Secret rotation now has a grace period during which both secrets sign. Deliveries carry the Standard Webhooks headers webhook-id, webhook-timestamp and webhook-signature.

Deprecated: /v1/workspaces/:workspaceId/webhooks and …/webhooks/:id and their sub-routes keep working, now with Deprecation and Sunset headers, until 2027-01-15. Your existing webhooks became endpoints with the same ids, URLs and secrets, and still receive only the jobs that name them in webhook_id. Until the same date they keep receiving the X-Trawl-Signature, X-Trawl-Event and X-Trawl-Event-Id headers, and every body keeps the old top-level event, occurred_at and job fields. X-Trawl-Delivery-Attempt is no longer sent. See the webhooks guide.