Skip to content
Use case

Debug and replay Stripe webhooks

Works with Stripe webhook events. When invoice.payment_failed or checkout.session.completed hits a broken handler, HookWatch shows the exact delivery and lets you replay once it is fixed.

Works with Stripe webhook events. Stripe drives your billing state through webhooks — payment.succeeded, invoice.payment_failed, and checkout.session.completed are how your app learns that money moved. If your endpoint is broken when one arrives, the subscription state in your app quietly drifts from what Stripe believes is true — and the customer notices before you do.

How Stripe deliveries fail

  • Target 500 errors. Your handler throws on invoice.payment_failed and returns 500. Stripe marks the event failed and retries on its own schedule.
  • Timeouts. The handler does too much inline (provisioning, emails) and does not return 200 before Stripe’s timeout.
  • Signature mismatch. The Stripe-Signature check fails — usually the raw body was parsed before verification, the wrong signing secret is set, or clocks are skewed — and the handler rejects it with 400.

The HookWatch flow

Point your Stripe webhook URL at your HookWatch endpoint, and each event is:

  • Captured — the full event body and headers, including the signature header.
  • Inspected — read the failed response and the exact payload that triggered it.
  • Fixed — reproduce locally from the captured body, patch the handler, deploy.
  • Replayed — re-send the captured event so the invoice or subscription change is recorded.

This is webhook debugging applied to Stripe. For the failure modes in depth, see webhook 500 errors and webhook replay. HookWatch works with Stripe events; it is not an official Stripe integration or partnership.

Get started

Start debugging your webhooks.

Point one endpoint at HookWatch, capture a failure, and replay it once it’s fixed. Free during beta.