Webhook retry schedules, compared

Every provider answers four questions differently: how long do I get to respond, what counts as success, how many retries do I get, and when does it give up — or disable my endpoint entirely? The answers are scattered across eighteen sets of docs (and some of the numbers circulating in blog posts are stale). Here they are in one table, each row sourced from the provider's current documentation and cross-checked in our per-provider deep-dive guides.

ProviderDeadlineSuccess =Retry scheduleGives up / disables
GitHub10 s2xxNo automatic retries — manual Redeliver onlyeach delivery is one shot
Stripe2xxbackoff for up to 3 days (live mode)dropped after 3 days
Shopify5 s2xxup to 8 retries over ~4 h, increasing intervalssubscription removed after continued failures within 24 h
WooCommerce2xx, 301 or 302No retries — each failure just countssilently disabled after 5 consecutive failures
GitLab10 s (GitLab.com)not 4xx/5xx/timeoutNo automatic retries — manual resend onlytemp-disabled after 4 consecutive failures (1 min → 24 h backoff); permanent at 40 (17.11+)
Bitbucket10 snon-5xxup to 2 auto-resends, on 5xx only (X-Attempt-Number)dropped after attempt 3
Slack Events3 s2xx3 retries: ~immediately, +1 min, +5 min (x-slack-retry-num/-reason)app risks temporary disable below 5% success (apps under 1,000 events/h exempt)
Zoom3 s200–2992 retries: +20 min, then +60 min — 3xx/4xx never retrieddropped after retry 2
Meta (WhatsApp/Messenger/IG)200exponential backoff, up to 7 daysdropped — no dead-letter queue, no replay
Twitch EventSub2xxat-least-once; schedule undisclosed (Twitch-Eventsub-Message-Retry counts attempts)subscription revoked with notification_failures_exceeded
Discord Interactionssynchronousvalid responseNo retries — it's a request/response APIendpoint removed on sustained failures
Mailgun200 (406 = permanent reject)+5 m, +10 m, +15 m, +1 h, +2 h, +4 h (~8 h total)dropped after; delivery-notification hooks aren't retried at all
Square2xxexponential backoff up to 24 h (1 min, 2 min, …; square-retry-number/-reason)event discarded after 24 h
HubSpot5 s2xxup to 10 retries over 24 h, varying delays (retried on connection failure, timeout, any 4xx/5xx)dropped after 24 h
Svix (Clerk, Resend, Railway…)2xximmediately, +5 s, +5 m, +30 m, +2 h, +5 h, +10 h, +10 h (same svix-id every attempt)marked failed after the schedule; dashboard replay
AWS SNS (HTTP/S)2xxdefault numRetries: 3, ~20 s targets — only 5xx and 429 are retriedany other non-2xx discarded immediately; retry window hard-capped at 3,600 s
Notionacknowledged (2xx)up to 8 retries, exponential backoff — final attempt ~24 h after the triggeraims for at-most-once delivery: after the schedule the event is gone; re-fetch state via the API
PayPal200up to 25 retries over 3 daysmarked Failed; manual resend from the dashboard
Paddle5 s2xx within 5 ssandbox: 3 over ~15 min; live: 60 over ~3 days, exponential (same event_id)dropped after the schedule

Patterns worth noticing

Don't trust the table — verify it

Numbers like these rot (Shopify's schedule was "19 retries over 48 hours" for years; the current docs say 8 over ~4 hours — plenty of blog posts still quote the old figure). The schedule your endpoint actually experiences is easy to observe directly: point the provider at a capture bin, set the bin's response status to 500, trigger one event, and read the retry timestamps off the dashboard. The step-by-step retry-testing guide covers forcing timeouts and 4xx-vs-5xx behaviour too.

No signup needed. Or from your terminal: curl https://hookden.pages.dev/new

← All guides · Signature debugger · Payload examples · Docs · Hookden vs webhook.site