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.