CheckoutAlarmWatch my app free

Stripe webhook works in test mode but not live

Test payments unlocked premium every time. Then you switched to live keys, a real customer paid, and nothing happened. Test and live mode are two separate setups. Here is what has to be copied over.

What it would catch here

Give it a live read-only key and it watches live mode: live events that stay undelivered, live endpoints that are disabled, and live sales that stall. A test key only reads test mode, so use a live key once you launch.

What it won't catch

It won't compare your test and live setups. It doesn't alert when live mode has no endpoint at all. Use the checklist below.

Plans

Free: 1 site, checked once a day. Pro: $19 a month, up to 3 sites checked hourly. You prove you own the site first. For Stripe we only take a restricted key with read access to Events, Webhook Endpoints and Charges. Full secret keys are refused. Compare plans

Create a live endpoint

Objects in one mode can't be used in the other, and webhook endpoints are objects. Stripe's go-live list says to "update each webhook endpoint's URL and copy the new signing secret." Switch the dashboard to live and add the endpoint there. Stripe: switch to live mode

Use the live signing secret

"If you use the same endpoint for both test and live API keys, the secret is different for each one." Put the live whsec_ secret in your production settings. A test secret on live events fails the signature check. Stripe: verify events

Swap the API keys

Test keys start with sk_test_ or rk_test_. Live keys start with sk_live_ or rk_live_. Update them where your app reads them, then redeploy. Stripe: API keys

Swap the price IDs

Lovable's guide to going live says to switch to live price IDs, because they differ between modes. The same is true in any app. Lovable: Stripe go-live checklist

Use a real HTTPS address

In live mode the endpoint must use HTTPS. A tunnel or localhost URL that worked with the Stripe CLI won't work here. Stripe: receive events with HTTPS

Read the live deliveries

In live mode, open the endpoint's Event deliveries and match the status code to Stripe's table. Stripe: fix HTTP status codes Then see 400, 500 and timeouts or 401 errors.

Make one real purchase

Lovable's go-live list ends with a real purchase to confirm it works. Buy your own cheapest plan and check that premium unlocks. Lovable: go live

Do test and live mode share webhook endpoints?
No. Each mode has its own objects, and Stripe's go-live list says to update each endpoint's URL and copy the new signing secret. You set up the live endpoint separately.
Is the signing secret the same in live mode?
No. Stripe says that if you use the same endpoint URL for test and live keys, the secret is different for each one.
My price IDs work in test but fail live. Why?
Prices are objects, and objects made in test mode don't exist in live mode. Lovable's docs also say price IDs differ between modes.

With a live read-only key, CheckoutAlarm emails you when live events stay undelivered or a live endpoint is disabled. It doesn't alert on a missing live endpoint today.

CheckoutAlarm is new. It only checks sites you prove you own. How to verify

Watch my app free

Docs checked on Oct 20, 2026.