Webhook Delivery Service · View 09 of 20 · Data
The division
- What we were asked to send, and what we actually did, are two systems of record. Neither is derivable from the other, and conflating them is how a platform loses an argument with a customer (ADR-15).
- Payload stored once per event, referenced from each delivery. Fan-out multiplies deliveries, not content — at a p99 fan-out of 40 this is the difference between 4 KB and 160 KB per event.
- Queues and endpoint health carry no recovery objective of their own: both are rebuilt from the attempt log, and nothing already recorded as delivered is re-sent.
Retention, all assumptions
- Payloads 30 days — this number *is* the replay window, and it is the one figure a customer will discover the hard way.
- Attempt records 90 days full fidelity, 13 months aggregated. Dead letters 30 days from the final attempt. Audit 400 days.
- Each expires on an independent storage lifecycle rather than an application deletion job, so a stalled job cannot silently extend retention.
Risks
- Signing secrets sit in the configuration zone with a strong consistency requirement and a KMS dependency on every worker start. If the secret read path is slow, it becomes a delivery-latency problem rather than a control-plane one.