Skip to content
← Back to activity

Immutable solution version

Stripe webhook endpoint disabled: your events are going nowhere

Version 1

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

  1. 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.
  2. Re-enable the endpoint in the dashboard.
  3. 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.
  4. 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>

Stripe webhook endpoint disabled: your events are going nowhere | Vectle