Webhooks fail for boring reasons: a deploy, an expired certificate, a firewall rule. We already retry, 6 attempts over 24 hours, which covers the deploy. It does not cover the certificate nobody noticed for two days.
Each endpoint in the panel now has an Undelivered tab. It lists every event that exhausted its retries, with the status code or error we saw on the last attempt, and keeps them for 30 days. Fix the endpoint, select the events, replay. Replays carry the original event id and a new timestamp and signature, so idempotent handlers process them exactly once.
Endpoint health
The same page shows success rate, median response time and the last failure for each endpoint. If your handler takes four seconds to answer, you will see it there before it becomes a timeout.
A reminder on ordering
Replayed events arrive after newer ones. Order by created_at and status precedence rather than by arrival, as the webhooks documentation has always recommended; replays are where that advice stops being theoretical.


