Answers / Stripe webhooks

Best tool to verify a Stripe webhook fired

Matt Turley, Continuum. Updated 5 November 2026.

The short answer

Best tool to verify a Stripe webhook fired

Stripe’s own Event deliveries view is the best first check, because it shows whether each event was delivered and what your server answered. Use the Stripe CLI to test before you deploy, an inspector for the raw request and your own logs to prove your app acted on the event.

How we compared them

We make Continuum and it has no webhook tool, so on this question the other options fit better.

“Did the webhook fire” hides three different questions: did Stripe send it, did my server receive it, and did my app do the right thing. Each option was weighed on:

  • Which of those three questions it answers.
  • Whether you need to write code to use it.
  • How far back it can look.
  • What it cannot tell you.

The options

Options are listed from the one closest to Stripe to the one furthest from it. Facts about each product come from the sources at the bottom, looked up on the date shown there.

Stripe Dashboard: Event deliveries

Stripe’s own delivery log

Open the Webhooks tab in the Dashboard (Workbench) and pick a destination, then open Event deliveries. Each event shows as Delivered, Pending or Failed. Opening one lists every attempt with its HTTP status code and the time of any retry still to come.

Good at
It answers from the sender’s side: did Stripe send the event, and what did your server reply. If a try failed, the tab shows when Stripe will try again.
Fits
Anyone with Dashboard access, whether or not they write code.
Drawbacks
It tells you what your endpoint replied, not whether your app acted on the event. Stripe counts a redirect as a failure, so an endpoint URL that redirects to another one will show as Failed. Retries in a sandbox are far fewer, so a failure there is easy to miss.

Sources: [1] [2]

Stripe CLI

Test and replay from a terminal

The command stripe listen --forward-to localhost:4242/webhook sends events to an endpoint on your own machine. stripe trigger payment_intent.succeeded creates a test event, and stripe events resend with an event ID and an endpoint ID redelivers one.

Good at
You can test before anything is deployed and replay a real event after you fix a bug.
Fits
A developer, or a technical friend with a terminal and ten minutes.
Drawbacks
The signing secret for CLI-forwarded events differs from the one for a Dashboard endpoint, and mixing them up makes signature checks fail. The forwarding command also has to run in a real terminal, not the Workbench shell.

Sources: [1] [3] [4]

A webhook inspector (Webhook.site, Hookdeck)

A third party that records the request

Webhook.site gives you a public URL, an email address and a DNS name. It shows whatever is sent to them. Hookdeck sits between the sender and your app and keeps past events you can search and filter. Each shows its payload, delivery attempts and responses. You can replay any of them.

Good at
You can see the exact request, headers and body included, even when your own server logged nothing.
Fits
Debugging an endpoint that returns errors you cannot explain, or an app on a host with thin logs.
Drawbacks
A third party sees your webhook payloads, which can hold customer and payment details, so use test mode data. Prices for both change and the sources we found disagree, so no price is quoted here. Check their sites.

Sources: [5] [6]

Your own logs and database

Proof that your app acted on the event

A record in your own system that says it received an event with a given ID and what it did next. Stripe’s docs advise that when your endpoint receives an event it already handled, it should skip it and still return a 200, which stops further retries.

Good at
Only this proves your app did the right thing. A delivered event with a 200 reply can still have been ignored by your code.
Fits
Anyone taking real payments.
Drawbacks
It exists only if someone wrote it, and it cannot show an event that never reached your server.

Sources: [3]

Continuum

Not a webhook tool

Continuum has no tool that shows whether a Stripe event fired, and this page does not pretend otherwise. What it sells is a human read of an AI-built app. A $299 Ship Check reads the whole codebase, and the Leak Check results page lists payment error flows as part of that deeper pass.

Good at
A person can read how your handler is written, which no delivery log shows. Say you want the webhook handler read when you order.
Fits
You take payments, the handler was written by an AI tool, and you want someone to check how it was built.
Drawbacks
It is a review, not a monitor. It will not tell you whether a particular event fired last Tuesday, and Stripe’s Event deliveries tab answers that directly.

See what a Ship Check covers →

Which one fits which need

Pick by the question you are asking. This is not a ranking.

Which option fits which need, for: best tool to verify a stripe webhook fired.
Which option fits which need, for: best tool to verify a stripe webhook fired.
If you need toLook at
Did Stripe send the event, and what did my server answer?The Event deliveries tab, in Stripe.
I want to test my handler before I deployStripe CLI: listen and trigger.
Replay a real event after a bug fixResend from the Dashboard within 15 days, or the CLI within 30.
My server logged nothing and I need the raw requestA webhook inspector.
Did my app actually act on the event?Your own logs and database.
Is the handler written safely?A code review by a developer, or by Continuum.

Start with Stripe’s own log

If the Event deliveries tab shows a Delivered event and your app still did nothing, the problem is in your handler. That is the point where a second pair of eyes on the code earns its price. See what a Ship Check covers →
Book a call →See all services and prices →
FAQ

Straight answers

How do I check whether a Stripe webhook fired?
Go to Event deliveries for your endpoint in the Stripe Dashboard. A status of Delivered, Pending or Failed sits next to each event, and opening one shows the HTTP status code of every attempt.
Why does Stripe show my webhook as failed?
Stripe treats any redirect as a failure, so the endpoint URL must be the final one. A 4xx reply means the endpoint is not reachable or does not accept POST, a 5xx reply means your app errored, and a timeout means the handler took too long. Return quickly and do heavy work afterwards.
How long does Stripe retry a failed webhook?
In live mode Stripe tries for up to three days with exponential backoff. In a sandbox it retries three times over a few hours.
Why does signature verification fail?
The raw request body must reach the verifier unchanged, because any change breaks the signature. Each endpoint also has its own signing secret, and events forwarded by the Stripe CLI use a different secret from a Dashboard endpoint.
Can I resend a Stripe event?
Yes. The Dashboard lets you resend an event for up to 15 days after it was created, and the Stripe CLI works for up to 30 days. Because a resend does not stop Stripe’s automatic retries, your handler should skip events it has already processed.
Keep reading
Stripe key leak checkHow to tell whether a Stripe secret key has shipped to the browser.Can I expose this key?A free in-browser check for whether a key belongs in front-end code.Best AI app security checkWhich checks to run on an AI-built app, and in what order.Ship FixFixed-scope repair for payments that look right in the demo and fail for real customers.
Sources
  1. 1. Receive Stripe events in your webhook endpoint, Stripe Docs, Stripe, checked 2026-11-05: Retries (three days in live mode, three tries over a few hours in a sandbox), signature verification, and forwarding events to a local endpoint with the CLI.
  2. 2. Manage event destinations, Stripe Docs, Stripe, checked 2026-11-05: The Event deliveries tab: Delivered, Pending and Failed, attempts with status codes, and common error causes.
  3. 3. Manage webhook endpoints (process undelivered events), Stripe Docs, Stripe, checked 2026-11-05: Resending events from the Dashboard (15 days) and the CLI (30 days), and skipping events already processed.
  4. 4. Resolve webhook signature verification errors, Stripe Docs, Stripe, checked 2026-11-05: The raw body requirement, and that a CLI-forwarded endpoint has a different signing secret from a Dashboard-managed one.
  5. 5. Webhook.site, Webhook.site, checked 2026-11-05: Describes an instant public URL, email address and DNS name that show whatever is sent to them.
  6. 6. Hookdeck, Hookdeck, checked 2026-11-05: Describes browsing, searching and filtering historical events, inspecting payloads, delivery attempts and responses, and replaying events. Pricing varied between the sources we found, so none is quoted.
Best tool to verify a Stripe webhook fired | Continuum