Retry behavior
A webhook delivery is considered successful when your endpoint returns a 2xx status within Permissio's request timeout. Any other outcome triggers a retry.
The exact retry schedule (intervals, attempt count, dead-letter behavior) is owned by the Permissio API team and not yet documented in the public surface. Until it is, treat the schedule as opaque and at-least-once:
- Build handlers that are idempotent. Use
Permissio-Delivery-Idas the dedup key. - Do not assume any specific retry interval. Plan for the same event ID arriving more than once, even after a long gap.
- For an authoritative breakdown of retries, intervals, and dead-letter behavior, contact the API team — that documentation has not yet shipped.
The t= value in Permissio-Signature is generated fresh for every send, including retries — a retried delivery carries a new t and a new signature, so a 5-minute freshness window will still accept it. For deduplication, use Permissio-Delivery-Id — it stays the same across every retry of the same delivery row, so handlers can dedupe on it safely — rather than t.