Your results

The weekly brief, the Scorecard, what HeyCMO changed in your tools and the audit trail.

View as Markdown

HeyCMO is an invitation-only, $0 operational Alpha for Stripe and Resend recovery emails. A person approves every message before it is sent. The guides also describe implementation capabilities outside the Alpha. Their presence here does not make them available in the pilot. Start with the Alpha checklist. Help: alpha@heycmo.ai.

  • Inbox — This week: what HeyCMO did in the last 7 days, including the money recovered after a recovery email, per currency
  • Scorecard → your business — it leads with recovered revenue, new MRR, trials, trial to paid, paid spend and open pipeline; then a Marketing P&L (30d) (new MRR and the revenue your emails recovered, less paid spend and HeyCMO's cost, one table per currency, with a CAC estimate and payback months) and Targets: each goal on your Strategy page against its target, with the days left. A figure HeyCMO has not measured says so, never 0
  • Scorecard — email-driven recovered revenue for the last 30 days, with Stripe's own retries and recoveries that cannot be attributed either way (30 days and all time) shown separately; all-cause recovery (all-time), labelled as raw last-touch, and "Recovered by touch" (which email of the sequence each recovered payment followed), plus daily metrics across GA4, GSC, Ads, ESP, Product Analytics, and CRM pipeline; the Funnel (sessions → key events → trials → paid over 30 days, and a warning when your ad platforms claim far more conversions than Stripe shows), Acquisition by channel (GA4 key events per source and medium) and Stripe conversions by channel (from click capture; see the model switcher below). GA4 days are your property's own days, in its reporting time zone, and the newest is the property's yesterday. A GA4 number reads Not assessed while tracking QA cannot assess your tracking: it checks the key events your GA4 property lists (or the ones you name with PUT /v1/tracking/settings, API, admin), and an event not recorded in the last 90 days is not assessed rather than reported broken
  • Scorecard → Where failed payments went — every payment that first failed in the last 30 or 90 days, followed in five steps: what failed and why (not enough funds, card expired, the bank asked the customer to confirm, card refused, declined but a retry can pass, or reason not read); what HeyCMO held back on purpose (your holdout, the customer cancelled, Stripe ended the subscription) or has not emailed yet; what was emailed, by the furthest email sent (notice, reminder, urgent, final); what was recovered after an email (what the customer actually paid), less what Stripe's Smart Retries collected; and what came back beyond Smart Retries. That figure is for the payments that first failed in the window, so it can differ from the recovery tiles below it, which count the payments made in the window. Beside that last figure, what it is against your HeyCMO plan for the same days ("0.33× your plan": US-dollar recoveries against the published Operator or OS price; tax, usage over the allowance and add-ons not included). On Alpha, the free trial or a price HeyCMO does not publish it says the payback is not known and why. Each payment is counted once, and amounts in different currencies are never added: pick the currency. Payments that failed before HeyCMO kept amounts are counted apart, never as zero. Only a holdout says whether the email caused the recovery, and the card says so
  • Scorecard → Stripe conversions by channel — pick Trials or New paying subscriptions, then the model: First touch, Last touch (the default), U-shaped, Time-decay, Shapley value, Markov removal effect or MMM marginal ROAS. Each shows every channel's credit and share and, for new paying subscriptions, the first payments it is credited with in each currency. HeyCMO keeps each conversion's first and latest visit, so every model reads those two, and the card says what each model can and cannot tell; none of them proves a channel caused a conversion. MMM marginal ROAS shows the marketing-mix model your weekly review last fitted on your daily ad spend: each paid channel's conversions, what its next conversion costs with an 80% range (which understates the uncertainty: it can cost more than the top), and what the model puts down to everything that is not paid spend. Before a fit (it needs weeks of daily spend from a connected ad account), or when your ad spend explains your conversions no better than the day of the week and chance, it says why and shows no number
  • Inbox → Changes HeyCMO made — for an approved budget change, pause, creative swap or post, what its metric did 14 and 28 days later (directional: other things move too); for a pause or negative keywords that metric is spend, so it says which way spend went without calling it better or worse; the track record line under a card says it too
  • GEO — how AI answer engines mention you. Turn on AI answer visibility in Loops and write the questions your buyers ask an assistant (admin); each week HeyCMO asks the engines your deployment has set up and shows your share of voice, citation share, the questions where an engine cites a competitor and not you, Attributed visibility (how much of each answer's text credits you, weighted toward the start of the answer, with its change since last week), Source spread (how many different sites the answers cite) and Citation drift: answers that name or cite you but get you wrong (a competitor credited in a sentence citing your page, your product called a competitor's, a price your product context does not list, or something it says you offer said to be missing). Drift is a rule-based check: it misses a paraphrased mistake, and a panel from before a measure existed says "not measured", never 0
  • Brief — the weekly CMO summary, staged every week (the first on the weekly review's first run), with or without GA4: recovered revenue and any holdout result, autonomy changes, HeyCMO's own record (decisions and loop runs) and, once connected, your GA4 and email numbers
  • Factory (/factory) — turn a goal into a campaign. HeyCMO reads your plan, brand and past lessons, picks channels, checks what your own evidence says about each question a skeptical buyer would ask (What your evidence says on the run: answered, one source, no evidence yet, or sources disagree; a question nothing answers is never filled in), writes a plan (and waits for your OK on it if you ask), drafts a piece for each channel, reworks drafts that score low (a long-form article is also checked for what gets a page cited in AI answers: figures from your own facts, named sources, sections that open with a short answer; a figure your facts do not state sends it back) and puts every piece in your Inbox for you to approve; afterwards it notes lessons from what you approved, edited and declined. Start one from the dashboard (/factory) or the CLI (heycmo factory list, heycmo factory run "Competitor X raised prices 30%" --trigger competitor_move --channels cms,linkedin, heycmo factory resume <runId> --decision decline_all, heycmo factory memory --observe). Approving a campaign's drafts is yours to do: with a key, --decision approve_all (like heycmo approve <id>) changes nothing and prints a link to open in the dashboard
  • Audit — every action, decision, and reason, append-only and cryptographically hash-chained (heycmo audit verify)
  • API GET /v1/metrics/recovery — the same numbers as JSON: email-driven 30/90-day cents, the split by class (email_driven / automatic_retry / unknown), the split by stage (byStage: notice, reminder, urgent, final) and the raw total. Each recovery comes from a signed Stripe payment webhook matched to a send that was not a dry run
  • API GET /v1/metrics/recovery/waterfall?days=30|90 — the waterfall as JSON, per currency, with the payback or why it is not known; GET /v1/metrics/attribution/models?conversion=trials_started|paid_conversions — one conversion read by every model (read scope)
  • The headline is email-driven recovery, and it only counts a payment on evidence: paid before Stripe's next scheduled retry, or paid by hand after Stripe had stopped retrying (recorded when the invoice was sensed). Payments Stripe's retry collected are automatic retry; everything else is unknown, shown beside it, never folded in. Stripe's own customer emails can also prompt a payment, so email-driven is "not an automatic retry, after our email" — not proof our email caused it.