Webhook delivery looks simple until your first partner misses a payment event. Reliability is a design choice, not an afterthought.
Sign every payload
Use HMAC-SHA256 with a per-endpoint secret. Document the verification steps clearly — partners should copy a working code sample, not reverse-engineer your format.
Exponential backoff with a cap
Retry failed deliveries with increasing intervals: 1 minute, 5 minutes, 30 minutes, 2 hours, up to 24 hours. Cap total attempts and surface the final failure in your dashboard.
Idempotency keys belong on both sides
Include a unique event ID in every payload. Encourage partners to deduplicate on that ID so retries never double-charge or double-ship.
Make logs searchable
Support teams need to answer “did you send event X?” in seconds. Index deliveries by event ID, endpoint URL, and HTTP status code.
