How to use this
Print it. Tick it. Anything unticked on launch day is either a conscious decision or a bug you will find out about from a customer. This is the same list we run before every product we ship, including our own.
1. Billing and entitlements (12)
- Plans and prices exist in Stripe (or Paddle / Lemon Squeezy), not hard-coded
- Trial end, upgrade, downgrade and cancel all tested with test cards
- Webhook signature is verified; webhook handler is idempotent
-
payment_faileddowngrades access after a grace period and emails the user - Entitlements are checked server-side on every gated action
- Usage limits exist and are enforced for any metered feature (AI calls, seats, storage)
- Tax collection is on (Stripe Tax or a merchant of record)
- Invoices have your legal entity name and address
- A real card has been charged and refunded once, end to end
- Annual plan exists (it will be 20–40% of revenue)
- Coupon / promo path exists for launch and for support
- The customer portal (update card, download invoices) is linked from settings
2. Legal and trust (7)
- Terms of Service and Privacy Policy are live and linked in the footer and signup
- A Data Processing Agreement is available if you sell to businesses in the EU/UK
- Cookie consent exists if you use non-essential cookies in the EU
- Account deletion and data export exist (even if manual)
- Support email is a real, monitored inbox
- Legal entity, address and VAT number are on invoices and the site
- Sub-processors list exists (Stripe, Vercel, OpenAI, etc.)
3. Onboarding and lifecycle (8)
- Signup to first value takes under 3 minutes with no help
- Empty states tell the user what to do, not just that there is nothing
- Welcome email sends within 60 seconds and contains one action
- Day 3 email: the one feature that predicts retention
- Trial-ending email 3 days out and 1 day out
- Payment-failed email with a one-click fix link
- Cancellation flow asks one question and offers one alternative
- Transactional emails come from your domain with SPF, DKIM and DMARC set
4. Reliability and security (9)
- Error tracking is on (Sentry or similar) with alerts to a channel you read
- Uptime monitor pings the app and the marketing site every minute
- Database backups are automatic; one has been restored in the last month
- Rate limiting on auth, signup and every AI or email-sending endpoint
- Secrets rotated since the last contractor left
- Staging environment matches production
- Deploy from
mainis automated; rollback takes under 5 minutes - Status page or at least a pinned “known issues” location
- Custom domain on HTTPS with
wwwand apex both redirecting correctly
5. Analytics (5)
- Privacy-friendly analytics on the marketing site (Plausible, Umami, Fathom)
- Product events fire for: signup, activated, upgraded, churned
- One dashboard shows signups, activation rate, paid conversions and MRR
- UTM parameters are captured at signup and stored on the user
- Search Console and sitemap submitted for the marketing site
6. Launch day runbook (6)
| Time | Action |
|---|---|
| T-24h | Freeze deploys. Test the full signup-to-paid path on a phone. |
| T-1h | Check status of Stripe, hosting, email provider. Open error tracker and analytics side by side. |
| T-0 | Publish: Product Hunt / LinkedIn / X / newsletter / communities. One link, one CTA. |
| T+1h | Reply to every comment. Watch signups vs errors. |
| T+6h | Ship one visible fix from feedback. Post about it. |
| T+24h | Email everyone who signed up but didn’t activate. Ask one question. |
First-week dashboard
Track only these five numbers daily for the first 7 days:
- Visitors to signups (%)
- Signups to activated (%)
- Activated to paid (%)
- Support tickets per 100 signups
- Error rate
Everything else is noise until you have 100 paying customers.
What to do next
If you have more than 10 boxes unticked and launch is in two weeks, you have a scoping problem, not a speed problem. The MVP Scoping Playbook fixes that. If you want us to run the checklist against your product, book a call.