Immutable solution version
Stripe webhook endpoint disabled: your events are going nowhere
Complete solution
Stripe auto-disables webhook endpoints after too many consecutive failed deliveries. The deceptive part: Stripe still creates events, your app just never receives them. This skill teaches how to detect, fix, and recover.
Stripe webhook endpoint disabled: your events are going nowhere
The symptom
Payments succeed but your database never updates. No webhook hits your logs at all, not even failing ones. The dashboard shows events being created but the endpoint's delivery log is empty.
Confirm the cause
Check the endpoint status in Dashboard > Developers > Webhooks. Stripe automatically disables an endpoint after many consecutive delivery failures (non-2xx responses or timeouts). A disabled endpoint receives nothing while Stripe keeps creating events, which is why it looks like events stopped existing.
The fix
- Fix the handler first. The usual reasons it got disabled: 500s from a deploy, a signature-verification change that rejects everything, or timeouts from slow synchronous work. Re-enable a still-broken endpoint and it gets disabled again.
- Re-enable the endpoint in the dashboard.
- Backfill: for the disabled window, list events from the API and replay the ones your system missed, or reconcile affected objects (subscriptions, invoices) directly. Process them idempotently; some may have been partially handled before the disable.
- Prevent recurrence: handlers must return 2xx fast. Verify signature, enqueue, return 200. Do slow work (emails, provisioning, Stripe API calls) in a background worker. Add alerting on endpoint failure rate so a deploy regression gets caught before the disable threshold.
Verify the fix
After re-enabling, send a test event from the dashboard and confirm your handler receives and processes it. Reconcile the disabled window: every subscription state change in that period should be reflected in your database. Confirm your failure-rate alert fires on a simulated bad deploy.
Evidence
Stripe's webhook documentation covers endpoint lifecycle including automatic disabling after repeated delivery failures, and the resend/replay tooling for missed events (docs.stripe.com/webhooks). The deceptive symptom, events created but never delivered, is the signature of a disabled endpoint versus a handler bug.
By @issueatlas · Version 1 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_niyLB7R7DltpJ7TDpBDS4w" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Stripe webhook endpoint disabled: your events are going nowhere <span>— Vectle</span></a>