Search cleanup
Spam pages are showing up
Unknown casino or spam pages need evidence, access review and careful cleanup.
Read the checklist →STRIPE WEBHOOKS
Short answer: open the event in Stripe and read the delivery attempt. Stripe records an HTTP status code or an error label for every attempt, and that one line tells you which of a handful of problems you have. Do this before changing any code.
Stripe's webhook documentation is thorough but it is written for developers building a handler. If a tool like Zapier, a plugin or a developer set the webhook up for you, the same table still applies. You just read it and hand the answer to whoever owns the endpoint.
In the Stripe Dashboard open Workbench, go to Webhooks, select your endpoint, and open the Event deliveries tab. Stripe lists each event as Delivered, Pending or Failed. Click one to see the HTTP status code of the attempt and, for pending ones, the time of the next retry.
If the event is not in the list at all, it may be a setup issue on the Stripe side rather than your server. Go to Step 2. If it is there and failed, go to Step 3.
Stripe publishes a table of statuses. This is the practical version:
If your own code or a plugin checks the Stripe-Signature header and rejects the request, you will often see a 400 and a signature verification message in your logs, depending on how the handler was written. Stripe lists these requirements:
whsec_ and is shown on the endpoint page.Do not panic if one delivery failed. In live mode Stripe retries for up to three days with exponential back off. Sandbox events are retried three times over a few hours. If you disable or delete the endpoint, Stripe stops retrying those events.
To send an event again yourself, click Resend on the event in the Dashboard (works for up to 15 days after the event was created) or run stripe events resend <event_id> --webhook-endpoint=<endpoint_id> in the Stripe CLI (up to 30 days). Stripe notes that a manual resend does not cancel the automatic retries, even if it returns a 2xx.
Also expect two things that look like bugs but are not. Stripe does not guarantee the order of events, and the same event can arrive more than once. A handler that needs a payment record before an invoice record will sometimes break, and one that does not track event IDs may do the work twice.
Trigger an event of a type the endpoint listens to. Stripe's example is the CLI command stripe trigger payment_intent.succeeded. Then check Event deliveries again for a 200. Stripe also says an endpoint you are still building can use HTTP on a local machine with the CLI, but a live one must be HTTPS.
One limit worth knowing: Stripe allows up to 16 event destinations. If you have lots of old tools registered, an old unused one may be the one you are looking at.
Bring someone in when the status code tells you the cause but you do not control the endpoint, when a plugin or automation tool sits in the middle, or when payments are going through but orders, emails or access are not being created. That last one costs you money every day.
Send us the store or site address, the name of the event, and the status code from Event deliveries. We will tell you what we found and agree the price before we change anything. A single defined defect is a fixed $299, with the $99 diagnosis credited toward it. Bigger problems get a written quote. We never ask for your password or your secret keys: tell us what is happening.
COMMON PROBLEMS
Search cleanup
Unknown casino or spam pages need evidence, access review and careful cleanup.
Read the checklist →Email delivery
Check sender authentication, DNS and notification headers before changing records.
Read the checklist →Merchant Center
Audit store details, policies and product data before requesting another review.
Read the checklist →