Menu

1 / 2

Webhook Retry Strategies (2026) — Idempotency, Backoff, Dead Letters

DEV Community·ShotaTanikawa·6 months ago
#Gn55xHdm
#pillar#webhooks#node#postgres#event
Reading 0:00
15s threshold

Stripe will retry your webhook up to 17 times over 3 days . GitHub up to 50 times over 8 hours. Square up to 70 times over 72 hours.

If your code charges a credit card or sends an email when those retries hit, you have a problem.

This is the field guide I wish someone had handed me on day one for building webhook receivers that survive retries. Four pillars: idempotency by event ID , 2xx-fast async processing , understanding each sender's retry policy , and dead-letter handling for the requests that never succeed . Code examples are Node.js + Postgres, but the patterns are language-agnostic.

Quick recipe : dedupe by event ID before doing real work, return 2xx fast, treat duplicates as no-ops, and set up a dead-letter queue for events that fail too many times. The rest is sender-specific tuning.

Why retries are unavoidable

Webhook senders (Stripe, GitHub, Shopify, etc.) decide an event was "delivered" based on whether your endpoint returned a 2xx HTTP status.…

Continue reading — create a free account

Join HashtagPLUS to read full articles, follow hashtags, vote, and join the conversation.