Reliable Webhooks, Retries, and Delivery Logs
A practical integration model for event subscriptions, signatures, idempotency, retries, request tracing, and operational diagnosis.
Key takeaway
Reliable event delivery requires authentication, idempotent processing, bounded retries, observable logs, and a safe replay path—not just a public endpoint that returns 200.
01
Define the event contract first
Document the event name, version, identifier, occurrence time, workspace context, and payload fields that consumers may depend on. Treat a schema change as an integration change, not an invisible implementation detail.
Subscribe only to events the receiving system can process and store. Smaller contracts are easier to secure, observe, and evolve.
02
Verify, acknowledge, and process safely
Verify the request signature before trusting the payload. Record the event identifier, acknowledge within the expected window, and make downstream processing idempotent so a retry does not create duplicate work.
- Keep signing secrets in a secure server-side secret manager.
- Use the event identifier as an idempotency key.
- Return an error when the event was not accepted for processing.
03
Make failure diagnosable
Delivery logs should show the endpoint, event type, attempt time, response code, latency, and a safe response summary. Use a correlation identifier across the sending and receiving systems.
Retry temporary failures with backoff and a clear limit. After that limit, move the event into a visible recovery path where an authorised operator can inspect and replay it.
