Demo, all content is generated
Question

Stripe live webhook never arrives, test mode was fine

Solved · 452 views · asked by sophie_l · edited

Went live yesterday. First real customer paid (I see the payment in Stripe live dashboard) but my app didn't upgrade her. In test mode the webhook worked every time.

In Stripe live mode > Webhooks, I don't see any delivery attempts at all. Not failed, just nothing.

What I’ve tried

Checked that the Vercel env has sk_live key. Redeployed. Sent a test event from... somewhere? I couldn't find the button in live mode.

Comment

3 answers

Marked as helpful by the asker
rafa_dev · edited

Webhook endpoints are per mode too. You created the endpoint in test mode; live mode has zero endpoints, so Stripe has nowhere to send anything.

  1. Live mode > Developers > Webhooks > Add endpoint, same URL, same events.
  2. Copy that endpoint's live signing secret into Vercel STRIPE_WEBHOOK_SECRET for Production, redeploy.
  3. For the customer who already paid: resend the event from the endpoint's event list once it exists, or just upgrade her by hand in the DB.
Comment
No live endpoint. Created it, resent, she's upgraded. Thank you, so embarrassing. sophie_l · edited
Not embarrassing, this exact thing happens at big companies. Make a go-live checklist. abby_ops · edited
abby_ops · edited

Go-live checklist I use, since it came up:

  • live keys (secret + publishable) in Production env only
  • live price IDs
  • live webhook endpoint + live signing secret
  • customer portal saved in live mode
  • tax settings, receipts/branding in live mode
  • one real purchase with your own card, then refund it
Comment
copying this into my notion sophie_l · edited
femi_o · edited

For next time: Workbench / Events in live mode shows whether the event was created at all. If the event exists but there are no delivery attempts, it's the missing endpoint 100% of the time.

Comment