Why your app still says free after a successful Stripe payment

The charge went through and the account is still on the free plan. Here are the six places the grant goes missing between Stripe and your database, and how to find which one you have.

Mystra10 min read
A timeline of a successful checkout: the card is charged, the browser returns to the app a second later, and the webhook that grants access arrives after that. In the gap the customer is signed in and still on the free plan.stripecard chargedsigned in, still on the free planyour appback on /successwebhook grants access

See this run on your own app

Mystra walks signup, welcome email, checkout and paid access after every deploy, with proof. One app and 25 runs a month are free, no card.

A magic-link signup travels five hops: the form, your server, the email provider, the inbox and the link that opens a session.MAGIC-LINK SIGNUP · FIVE HOPS1Form2Your server3Email provider4Inbox5Link opensEvery hop can fail without an error in your logs.Only a real inbox, and a real click, proves the whole chain.

Guide9 min read

How to test a magic-link signup flow end to end

A magic-link signup has five hops and fails silently at each one. Here is where it breaks, how to test it by hand, in CI, and on production after every deploy.

Read the post →
An uptime check pings the homepage and gets 200. A revenue-path check walks signup, welcome email, checkout and paid access, and finds checkout broken.UPTIME CHECKGET https://app.example.com/200 OK · 87 ms · every 30 s“Everything is up.”The homepage answered. Nothing else was asked.REVENUE-PATH CHECKSign up1.8 sWelcome email4 sCheckoutPOST /api/checkout → 500Paid accessnot reached“Checkout broke on deploy a41f9c2.”

Explainer8 min read

Synthetic monitoring vs uptime checks: what each one actually proves

An uptime check proves your homepage answers. Synthetic monitoring proves a browser could finish a task. Neither proves a customer could sign up and pay, unless you point it at that path.

Read the post →