Weekly Cohort Funnel
Current week + last 2 weeks. Cohort matures over the 7-day trial — current week marked PENDING until full cycle closes.
| Stage | Count | Rate | Cost/event |
|---|---|---|---|
| New Visitors | 227 | — | — |
| Trial Attempts | 0 | 0.0% | — |
| Trials Activated | 0 | — | — |
| Paid Conversions | 1 | — | $519 |
| CC Declines | 0 | — | — |
| Stage | Count | Rate | Cost/event |
|---|---|---|---|
| New Visitors | 236 | — | — |
| Trial Attempts | 0 | 0.0% | — |
| Trials Activated | 0 | — | — |
| Paid Conversions | 0 | — | — |
| CC Declines | 0 | — | — |
| Stage | Count | Rate | Cost/event |
|---|---|---|---|
| New Visitors | 187 | — | — |
| Trial Attempts | 0 | 0.0% | — |
| Trials Activated | 0 | — | — |
| Paid Conversions | 2 | — | $288 |
| CC Declines | 0 | — | — |
Stages: visitors → trial attempts (CC entered) → trials activated → paid conversions. Rates show next-stage conversion. Cost-per-event = (30-day trailing ads spend) / (count). All-time benchmark rates (Apr-Jul 2025 peak): visitor→attempt 7.93%, attempt→trial 56.27%, trial→paid 28.38%, visitor→paid 1.27%.
Monthly Trajectory
Month-over-month rollup since marketing relaunch (2026-05-03). CAC trajectory + trial→paid rate trend.
| Month | Visitors | Attempts | Trials | Paid | Spend | CAC | Trial→Paid |
|---|---|---|---|---|---|---|---|
| May 2026 | 791 | 0 | 0 | 3 | $2,627 | $875 | — |
| Jun 2026 | 924 | 0 | 0 | 5 | $3,438 | $687 | — |
| Jul 2026 | 733 | 0 | 0 | 2 | $2,189 | $1,094 | — |
| Aug 2026 | 1,048 | 0 | 0 | 3 | $2,990 | $996 | — |
| Sep 2026 | 590 | 0 | 0 | 3 | $1,873 | $624 | — |
Cumulative averages (post-relaunch window)
Weekly Breakdown (since 5/3 relaunch)
Flat table view of every week since marketing relaunch — pair with the Funnel tab's cohort cards for at-a-glance scanning.
| Week | Visitors | Attempts | Trials | Paid | CC Declines | Spend | CAC | Trial→Paid |
|---|---|---|---|---|---|---|---|---|
| ✅ Apr 27–May 3 | 104 | 0 | 0 | 0 | 1 | $71 | — | — |
| ✅ May 4–May 10 | 235 | 0 | 0 | 0 | 0 | $591 | — | — |
| ✅ May 11–May 17 | 201 | 0 | 0 | 0 | 4 | $679 | — | — |
| ✅ May 18–May 24 | 172 | 0 | 0 | 0 | 5 | $541 | — | — |
| ✅ May 25–May 31 | 196 | 0 | 0 | 0 | 5 | $744 | — | — |
| ✅ Jun 1–Jun 7 | 269 | 0 | 0 | 0 | 1 | $813 | — | — |
| ✅ Jun 8–Jun 14 | 201 | 0 | 0 | 0 | 1 | $763 | — | — |
| ✅ Jun 15–Jun 21 | 224 | 0 | 0 | 0 | 3 | $868 | — | — |
| ✅ Jun 22–Jun 28 | 240 | 0 | 0 | 0 | 0 | $761 | — | — |
| ✅ Jun 29–Jul 5 | 219 | 0 | 0 | 0 | 4 | $724 | — | — |
| ✅ Jul 6–Jul 12 | 247 | 0 | 0 | 0 | 1 | $866 | — | — |
| ✅ Jul 13–Jul 19 | 148 | 0 | 0 | 0 | 3 | $316 | — | — |
| ✅ Jul 20–Jul 26 | 139 | 0 | 0 | 0 | 0 | $290 | — | — |
| ✅ Jul 27–Aug 2 | 152 | 0 | 0 | 0 | 0 | $331 | — | — |
| ✅ Aug 3–Aug 9 | 189 | 0 | 0 | 0 | 0 | $537 | — | — |
| ✅ Aug 10–Aug 16 | 304 | 0 | 0 | 0 | 0 | $751 | — | — |
| ✅ Aug 17–Aug 23 | 278 | 0 | 0 | 1 | 0 | $635 | $635 | — |
| ✅ Aug 24–Aug 30 | 244 | 0 | 0 | 1 | 1 | $920 | $920 | — |
| ✅ Aug 31–Sep 6 | 227 | 0 | 0 | 1 | 0 | $519 | $519 | — |
| 🟡 Sep 7–Sep 13 | 236 | 0 | 0 | 0 | 0 | $814 | — | — |
| 🟡 Sep 14–Sep 20 | 187 | 0 | 0 | 2 | 0 | $576 | $288 | — |
Channel Performance
Acquisition channel breakdown from GA4 (last 30 days). Per-contact attribution is unsourced — see the banner below.
Where our paid customers came from
⚠️ Not measured — the source was retired, the answer is not "nowhere". Per-contact channel attribution came from HubSpot, which was eliminated on 2026-07-09 (comms-stack decision, ADR 2026-07-06). Attio replaced it as the CRM but its attribution fields are populated on under 10% of records, so they cannot stand in without inventing a channel mix. The replacement is first-party click-id capture at signup, queued as its own item. Until then, read the GA4 table below as directional traffic only, never as "where our customers came from".
GA4 raw sessions/users/conversions (last 30d) — known inflated by bot traffic + cross-domain dupes
| Channel (GA4) | Sessions (30d) | Users | GA4 Conversions |
|---|---|---|---|
| Paid Search | 708 | 496 | 0.0 |
| Direct | 521 | 422 | 0.0 |
| Organic Search | 77 | 45 | 0.0 |
| Unassigned | 63 | 43 | 16.0 |
| Referral | 28 | 8 | 0.0 |
| Organic Social | 9 | 9 | 0.0 |
| AI Assistant | 5 | 3 | 0.0 |
| Cross-network | 1 | 1 | 0.0 |
⚠️ Don't trust these numbers for decisions. GA4 reports raw events including bot traffic (G11 deferred, ~25% non-US sessions), cross-domain duplicates (theinvestnest.com + app.theinvestnest.com may double-count), and the "Conversions" column counts ALL conversion events (trial + signup + purchase), not just paid customers. Per-contact attribution — the thing that WOULD be the real picture — is currently unsourced; see the note above.
Recent Attempts + Activation
User-level activation view (was your Notes column, now first-class). Last 30 days, sorted newest first.
This tab needs DB access — likely IP allowlist for the GHA runner. Local runs work.
System Health
GHA cron status + integration credential health. Catches the "cron silently failed" pattern that surfaced 2026-05-25.
🚨 Reconciliation anomalies (cross-source drift detection)
| Severity | Category | Description |
|---|---|---|
| info | reconciliation | Stripe vs Postgres reconciliation skipped: connection to server at "investnest-portal-db-prod-cluster.cluster-ro-cfiomvnoetmu.us-east-1.rds.amazonaws.com" (34.227.165.84), port 5432 failed: timeout expired |
| warning | attribution | GA4 reports 16 conversions in last 30d vs Stripe true new paid = 5 (ratio 3.2×). ✅ DIAGNOSED + IN-PLAN (NOT a new emergency) — see mrr-funnel-reference.md §2: GA4 'conversions' blends signup + an INFLATED client-side trial event (fires on the checkout button pre-card, not real activation — UI PR #143) + premium; only Stripe true-new-paid is real money. Fix = route Google Ads off the button-click signal (§15 W0.1, gated post-6/6). Re-alarm only if the ratio moves materially. |
Anomalies surfaced by data_truth.py reconcile() — automatic cross-check between Stripe and Postgres. Empty = system in sync.
GHA cron health (last 50 runs grouped by workflow)
| Workflow | Latest status | Last run (UTC) | Next scheduled (UTC) |
|---|---|---|---|
| .github/workflows/business-state-audit.yml | failure ⚠️ 5/5 recent fails | 2026-09-19 17:10 | — |
| .github/workflows/customer-health-audit.yml | failure ⚠️ 5/5 recent fails | 2026-09-19 17:10 | — |
| .github/workflows/marketing-channel-audit.yml | failure ⚠️ 5/5 recent fails | 2026-09-19 17:10 | — |
| DevOps Watchdog — daily loop self-audit | success | 2026-09-19 16:11 | 2026-09-20 13:00 |
| Funnel Dashboard — daily regenerate + deploy to Cloudflare Pages | in_progress | 2026-09-19 17:10 | 2026-09-20 09:15 |
| Operator Heartbeat — silent-morning detector | success | 2026-09-19 14:21 | 2026-09-20 11:15 |
| dream-cycle | failure ⚠️ 4/5 recent fails | 2026-09-19 11:59 | 2026-09-20 07:30 |
Integration credentials (presence check — no values displayed per Standing Rule #6)
| Integration | Status |
|---|---|
| Stripe | ✅ Configured |
| ChartMogul | ✅ Configured |
| Attio (CRM — replaced HubSpot 2026-07-09) | 🔴 Missing |
| Intercom | ✅ Configured |
| Anthropic | ✅ Configured |
| Google Ads | ✅ Configured |
| GitHub | ✅ Configured |
| Postgres prod | ✅ Configured |
| Cloudflare | ✅ Configured |
| X / Twitter | ✅ Configured |
