# Post-launch — 90-day measurement plan > Creator-only. The other half of `PLAN.md`: PLAN tells you what to > build, this tells you what to measure once it's live and which > numbers trigger which actions. > **Version**: 1.0 · **Adopted**: 2026-05-01 · **Owner**: Michael This is a runnable monthly checklist, not analytics theatre. Every metric below has a **threshold** and an **action**. If you're not willing to execute the action when the threshold trips, drop the metric — measuring without responding is busywork. ## 1. The five numbers that matter Every other dashboard, chart, or vanity stat is downstream of these five. The funnel is short on purpose; pre-PMF traffic doesn't have the resolution to support more. | # | Metric | How to compute | Threshold | When tripped | |---|--------|----------------|-----------|--------------| | 1 | **Persona engagement** | `demo.run_completed / demo.page_view` per persona | < 30 % for 4 consecutive weeks | Demo isn't running or BEFORE preview isn't compelling. **Action:** check iframe loads; widen BEFORE preview to show pollution clearly; move demo above the fold. | | 2 | **Demo→CTA intent** | `demo.cta_clicked / demo.run_completed` per persona | < 5 % for 4 consecutive weeks | Demo is impressive but the CTA isn't earning trust. **Action:** add network-tab privacy screenshot; soften the price callout; A-B test eyebrow copy on the CTA card. | | 3 | **Purchase rate** | `gumroad.purchase / demo.cta_clicked` per persona | < 30 % for 4 consecutive weeks | Visitors click through but don't pull the card out. **Action:** check Gumroad listing renders cleanly; verify refund-policy copy; check that the screenshot on the listing matches the demo they just ran. | | 4 | **Refund rate** | `gumroad.refunds / gumroad.purchase` rolling 30 days | > 5 % | Buyer expectation mismatch. **Action:** read every refund email; determine if it's a feature gap (build it), a positioning lie (rewrite), or a personal-fit miss (fine, ignore). | | 5 | **Support load** | email tickets / 100 sales rolling 30 days | > 10 | The product isn't self-serve enough at this price. **Action:** find the top 3 questions; add to in-app onboarding + landing-page FAQ + the persona's saved pipeline. | These five also map to BUSINESS.md §12 — that doc names the metrics; this doc operationalises them. ## 2. Monthly review — 30-minute checklist Block 30 minutes on the first Monday of every month for the first six months. After month 6 if numbers are stable, drop to 15 minutes quarterly. ``` [ ] Pull last 30 days of demo events from Cloudflare Web Analytics [ ] Pull last 30 days of Gumroad sales + refunds export [ ] Compute the five numbers in §1 per persona [ ] Note which thresholds are tripped (if any) [ ] Read every refund email since last review [ ] Read every support email since last review [ ] Decide ONE thing to change this month (only one) [ ] Update CHANGELOG with what was changed and why [ ] Schedule next review ``` The "decide ONE thing" rule is load-bearing. Pre-PMF traffic doesn't have the volume to A/B-test multiple changes in parallel — you'll just confuse yourself about what moved the number. ## 3. Per-persona scoreboard (template) Maintain in a single text file or spreadsheet. The shape that fits in a notebook page is the shape you'll actually update. ``` Month: 2026-06 ───────────────────────────────────────────────────────────────── Shopify Bookkeeper RevOps Total Page views 420 180 290 890 Demo runs 137 59 82 278 CTA clicks 9 7 6 22 Purchases 3 2 2 7 Metric 1 (engage) 33% 33% 28% 31% Metric 2 (intent) 7% 12% 7% 8% Metric 3 (purchase) 33% 29% 33% 32% Metric 4 (refund) 0% 0% 0% 0% Metric 5 (support) 3 tickets / 100 sales Tripped thresholds: RevOps engagement (28% < 30%) This-month change: Move demo embed above the fold on revops page; reduce hero text by 40%. Last-month change: Added network-tab screenshot to all 3 pages. Result: intent +1.5 percentage points on Shopify, flat elsewhere. ``` ## 4. Stage-gate triggers from PLAN.md Reproduced here so the gate criteria sit beside the metrics that fire them: | Trigger | From | Action | |---|------|--------| | **First paying customer** | PLAN §4 | Continue. Plan is working. | | **Zero paid in 90 days** | PLAN §4 | Audit the funnel. Don't add features. Run a small (1-week) outbound experiment to 30 niche-community contacts as a control, even though it stretches the no-touch constraint, to determine whether the bottleneck is reach or conversion. | | **$5 k/mo MRR** | DECISIONS §8 | Re-evaluate async constraint. Add priority-support tier (PLAN §2.7). | | **$10 k/mo MRR** | DECISIONS §8 | Revisit time-budget allocation. Decide on tools 06–08 vs. additional bundles. | | **Marketplace shutdown** | PLAN §4 / DECISIONS §8 | Switch landing-page CTA to own-domain Stripe Checkout. Pre-built; one-line edit. | | **Streamlit hard direction change** | DECISIONS §8 | Low-probability re-lock. Tk fallback documented. | | **Burnout signal** | DECISIONS §8 | Stop. Triage. The constraint matters more than the revenue ramp. | ## 5. What we deliberately do NOT measure These look productive but predict nothing pre-PMF. Don't add them. - **Bounce rate** — single-page sites have artificially high bounce. Useless signal. - **Time on page** — landing pages are *supposed* to be quick reads. Long time on page often means confusion, not engagement. - **Heatmaps / scroll-depth** — no statistical resolution at <500 monthly visitors. Add when you cross 5 k/month. - **Email open rates** — under §2.7 priority support is the only email channel; opens aren't a buying signal. - **Social mentions** — vanity. The signal that matters is "did they buy" or "did they come back." ## 6. What we measure once, then trust Do these once, then let them run for 6+ months without re-measuring: - **Demo correctness** — once per pipeline release, run all 3 demos end-to-end via `tests/test_pipeline.py` and check the output looks reasonable. The CI pipeline already does this; nothing to add. - **Cross-platform install** — once per release, verify the PyInstaller bundle launches on Mac / Windows / Linux. After three green releases, trust the build pipeline; spot-check on major OS updates only. - **Privacy claim integrity** — once at launch, capture the network tab while running the cleaner and host that screenshot at a stable URL. Re-capture only when a new tool or dependency is added. ## 7. Per-persona attribution The buy buttons on every landing page carry `?from=` query parameters. Gumroad propagates that into the order metadata. Use it to attribute purchases: | persona key | landing page URL | Gumroad query | Source | |---|---|---|---| | `shopify-pet` | `/shopify-pet/` | `?from=shopify-pet` | Shopify operator | | `bookkeeper` | `/bookkeeper/` | `?from=bookkeeper` | Bookkeeper / freelance accountant | | `revops` | `/revops/` | `?from=revops` | Marketing / RevOps agency | | `apex` | `/` | (no query — use `unknown` bucket) | Generic discovery | When `unknown` exceeds 30 % of total, add UTM tagging to community posts and SEO blog backlinks so you can break the bucket apart. ## 8. The four months that decide whether the plan works Reading PLAN.md §3 + this doc together, the rough script: | Month | What's running | What we expect to learn | |---|---|---| | **M1** (June) | Installers · demo · 3 landing pages · Gumroad live | Whether the funnel mechanically works. Numbers will be noisy; just look for one purchase. | | **M2** (July) | M1 + community posts in 3 niches + 1 SEO post | Which persona converts. Re-allocate effort to the highest-converting niche. | | **M3** (August) | M2 + landing-page changes from M2 review | Whether intent-rate moved on the change. Decide tools 06–08 go/no-go. | | **M4** (September) | M3 + first repeat-buyer signals | Whether the Pipeline Runner is producing retention as designed. | By end of M4, the data tells you whether the plan is producing $1k–3k/mo (BUSINESS.md §6 6-month target) — extrapolated from the trajectory, not the absolute number. ## 9. The hardest part of the plan to execute Not the metrics. Not the build. **The "decide ONE thing per month" rule** — operators with engineering backgrounds chronically pick three changes per month and conclude nothing because their signal is muddled. This doc says one. It means one.