Replit
The Repl is running. The form might not be.
Editor secrets, a sleeping deployment, and a webhook pointed at the development URL are three different outages that all look like a healthy project.
Replit makes the app easy to run while you have the editor open. Customers arrive later, on the deployed URL, sometimes while the machine is waking up and sometimes without the secrets you set in the editor.
A free ping tells you the deployed URL answers. A funnel replay tells you the form still posts and the confirmation still renders. Verify the domain before a replay runs.
What usually breaks
Secrets set in the editor, not on the deployment
The Stripe key works when you press Run. The deployed instance has a different secret store. Checkout works for you and fails for everyone else.
The deployment sleeps through a webhook
Stripe posts, the process is cold, and the request times out. Stripe retries, then marks the endpoint failing. Your own click never saw the delay.
The webhook still targets the development URL
The endpoint you created first uses the repl.co development host. Production traffic never matches that route, so payments succeed and the database stays empty.
In-memory state dies on restart
A signup flow that stored the pending email in memory loses it when the machine restarts. The next request has no session and shows an empty page.
SSL on a custom domain that only half propagated
The Replit URL is fine. The custom domain you put on the ad still has a certificate warning, or no DNS at all. Check the URL you actually advertised.
Watch the next break before a customer does.
Free checks the public URL. Pro replays the path after you verify the domain.