Changelog

What changed in HeyCMO, newest first.

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.

These dated entries describe past releases. Past prices, trials and response targets are historical; the current Alpha scope and support terms above and below apply today.

One entry for each piece of work merged into HeyCMO, newest first. A change reaches the hosted HeyCMO with the next release.

Fix: approved recovery emails go out when only Stripe's payment link was refreshed

  • A recovery email a person approved is no longer held as "the invoice changed" just because Stripe refreshed the payment page link it shows for that invoice. It is still held when the amount due, the currency or the payment page itself (another account or address, or none) changed.

Recovery approvals and rehearsals bound to what was reviewed

  • Every approval names the version that was reviewed, including a script approving with an API key on a HeyCMO you run yourself with no sign-in for people: an approval that names none changes nothing and asks for the version shown in the Inbox. Retrying an approval of an item that already ran still gets the same answer without it.
  • Turning on live recovery emails counts only a rehearsal sent through the email provider you use now, after its credentials were last saved and after any switch of provider. Switching provider means rehearsing again.

Fix: count recoveries when the email was accepted

  • A payment no longer loses its recovery attribution when the email provider accepted the recovery email before payment but HeyCMO finished recording the send afterward. The latest eligible email is chosen by when it was accepted, within the same 14-day window. Rehearsals and emails accepted after payment still receive no credit, and replayed payments count only once.

Source-bound operation runtime foundation

  • Marketing operations now have a shared typed execution core: source-pinned definitions, explicit implementation bindings, dependency-checked plans, per-tenant idempotency and a durable-store contract.
  • The core keeps approval, provider acceptance, reconciliation and rehearsal separate. Interrupted work requires reconciliation instead of being sent again. The reviewed operation catalog remains partial, and an operation without a registered implementation is not reported as executable.
  • Direct provider mutations have their own source-review class with approval and reconciliation requirements; they are no longer forced into artifact generation. This foundation does not enable new live provider actions.

A new look for the dashboard, and only a person approves

  • The dashboard has a new look: new colours in the light and dark themes, the Onest typeface with page titles in Bricolage Grotesque, and pill-shaped buttons. Tomato now marks only the one thing to do: a page's main button and the count badge. Nothing moved on any page, and the fonts come from HeyCMO itself, never from a font service.
  • The campaign page is now called Factory, and the link on a brief or report card reads Start a campaign from this →.
  • Where people sign in to HeyCMO with an account, only a person signed in to the dashboard can approve. An API key, the CLI's included, that approves an item or a whole campaign changes nothing and gets a link where a person can decide. Declining still works with a key.

Fixes: final notices wait for Stripe, and fewer paid address checks

  • If your Stripe account retries payments through Billing automations, Stripe says when it will retry only in an update that follows the failed payment. HeyCMO now allows for that: for the first hour after a failed attempt it treats a retry as still possible. So a day-one notice's card no longer says Stripe has stopped retrying when its retries have just begun, no notice is drafted in that hour when Send the notice and reminders while Stripe is still retrying is off, and a final notice is never drafted then. A decline only your customer can fix still gets its final notice without waiting.
  • Before a marketing email goes, HeyCMO checks that the address can receive mail. An address found deliverable is now not checked again for 30 days in your workspace, and a check that comes back unknown or catch-all, which the checking service does not charge for, no longer counts toward your usage. HeyCMO keeps a one-way token for this, never the address, and erasing a person's data removes it.

Confirm or withdraw a customer's permission to be quoted

  • Settings → Workspace → Customer quotes lists the praise HeyCMO kept from your customers' feedback. When a customer agrees to be quoted, an admin confirms it there, with how they agreed (their reply, a signed form) and where that is kept. Only then may a draft quote them, and only in the words you confirmed: if the words change, the quote waits to be confirmed again.
  • Withdraw permission takes the quote out of every draft still waiting for your approval; what was already approved or published keeps its words. Every decision is in the audit log.
  • The review-ask card's line about quotes waiting for permission now says where to confirm them.

Fixes: approval notices, mention lists, AI answer costs and playbook starts

  • A positive post about a competitor, or a mention listening found only by a competitor's name, is no longer offered as your case study or as someone to ask for a review.
  • If an approval notice reached nobody (a Slack link that no longer works, no email recipient set), HeyCMO no longer counts it as sent: it tries again in the next notice window, so once you set up a channel, the approvals waiting are announced.
  • On the GEO page, a run's Spent figure now includes answers an AI engine billed but could not finish (an empty answer, a refusal), and they count against the run's budget.
  • Starting a playbook when no writing model is set up now says so on the Loops page ("Drafting needs a writing model, and none is set up on this HeyCMO deployment yet.") instead of "Something went wrong (500)", and no longer leaves behind a run that says "Drafting". A model that declines to draft a step says so too.

Citation drift reads comparisons and conditions correctly

  • In an answer like "Rival, which is cheaper than Acme, costs $99", where Acme is you, Citation drift no longer lists Rival's price as yours.
  • A denial limited to some customers or a situation ("no free plan for enterprise customers") counts as drift only when your product context says something about that same group or situation.
  • When your product context stated no prices or capabilities while some of a panel's answers came in, the GEO page now says those answers were not checked, instead of reporting that none contradicts you.

Your first day always ends with something to approve; Decide does what the Inbox does

  • If Stripe has no failed payment today, Find failed payments now offers Stage a sample recovery rehearsal: a recovery email for a made-up customer and payment, drafted in your brand, that you can read, edit and approve. Approving it sends nothing, to anyone, and finishes the getting-started checklist; it counts in nothing that measures your real work. If real work arrives first, the sample steps aside.
  • When the first look finds five failed payments or fewer, HeyCMO drafts their emails at once, without asking again.
  • Read my website in setup now checks your site for AI search, with or without the website reader set up: which AI search bots your robots.txt lets in, how your homepage does on five citability checks and what to change, and, if you have no /llms.txt, a draft of one built from your own pages, ready to copy. HeyCMO changes nothing on your site.
  • On your phone, Decide declines a recovery email as far as the Inbox does (this email, this customer's first emails, or all of them) and opens the same editor in the card.
  • Triage from the keyboard on the Inbox and Decide: j and k move between cards, a approves, e edits and d declines, only on the card the keyboard is in. Turn keys off if single keys get in your way.
  • Briefs and reports a campaign can start from have Launch in Marketing Factory →, which opens the Factory with the card's summary as the goal.

Where failed payments went, plan payback, and attribution models side by side

  • The Scorecard's Where failed payments went follows the payments that first failed in the last 30 or 90 days: why they failed, which were held back or not emailed, which email each got furthest to, what came back after it, and what was recovered beyond Stripe's own retries. Each currency has its own view, and an amount HeyCMO never recorded says so, never 0. Without Stripe connected it asks you to connect it.
  • Beside it, plan payback compares what was recovered with what your HeyCMO plan cost for the same days (for example "0.33× your plan"). It counts US-dollar recoveries only; on Alpha, a free trial or without a plan it reads Plan payback not known and says why.
  • The Stripe conversions card can switch between attribution models (first touch, last touch, U-shaped, time-decay, Shapley value, Markov removal effect and MMM marginal ROAS) for trials or new paying subscriptions, and each model says what it can and cannot tell. MMM marginal ROAS shows figures only when the latest weekly brief's model passed its evidence check, and otherwise says why not.

Companies reading your buying pages, briefed to sales

  • A new Company intent loop in the RevOps pack looks every hour for a company in one of your ICP segments that has visited your pricing, enterprise, security, integrations or MCP docs pages 3 or more times in a day (a visit is one visitor in one hour, so reloads do not add up). It needs your Segment page calls to name the visitor's company, from a reverse-IP or company-analytics source. HeyCMO keeps the company only, never the visitor's IP address, email address or anonymous ID.
  • Each such company becomes a Company reading your buying pages brief for your sales team: the pages and visits, what is known about the company and where each fact came from, why it fits your ICP, and its owner or open deal in your CRM. With Slack connected, your channel hears within a minute. One brief per company every 90 days; approving marks the hand-off as seen, and HeyCMO contacts no one and writes nothing to your CRM.
  • Company details come from your CRM first, then from a company-data provider where HeyCMO has one set up, then from the company's own website. A detail no source states stays blank.
  • Twenty joins HubSpot, Attio and Pipedrive as a CRM you can connect, once HeyCMO turns it on.

The Factory checks what your evidence says before it plans

  • Before the Factory writes a campaign's plan, it asks the questions buyers ask (payback, total cost, approval and safety, reliability, why switch, what sets you apart) and looks for answers in what HeyCMO knows about your business. The plan shows What your evidence says: each question marked Answered, One source, No evidence yet or Sources disagree, with the quotes and where each comes from, and Also found in your knowledge for topics you did not ask about.
  • Where evidence is missing or sources disagree, it looks again, up to three times. Drafts lean only on claims your own knowledge supports: a disputed claim or a quote from the web is never handed to the writers. Prices are compared only when they are per the same thing, so "$49 per seat" and "$199 per workspace" do not disagree.
  • With a writing model set up, and outside a dry run, a model also checks the quotes against their questions; with web research set up, up to two web searches fill gaps, marked as from the web. Otherwise the panel says the quotes were checked by rules only, and why. A launch campaign from a GitHub release skips this step.

Personal notes for your biggest accounts, and no nudge for customers it would drive away

  • A customer whose failed invoice is at least your VIP threshold ($500 by default; set it under Settings → Email → Failed payment recovery), or whose account someone on your team works in your CRM, now gets a plain, personal recovery note instead of the branded email, signed by their account owner in the CRM or by your sender name. The same goes for the upgrade and expansion emails to an account someone works in your CRM or that pays at least that much a month.
  • These notes always wait for your review, even when you have let HeyCMO send recovery emails on its own. The card says why the account is a VIP and how much is at risk.
  • With the HeyCMO Slack app connected, a VIP's card is posted to your approvals channel before anything else, with the amount at risk, why the payment failed and who signs the note (never the customer's address or the email itself). When Slack is not connected, notifications are stopped or your workspace is restricted, the card says nobody outside HeyCMO was told.
  • A VIP's note goes when any recovery email would: after a soft decline or insufficient funds it too waits for Stripe's own retry first, so you are asked to review it only when it is due.
  • The VIP threshold has a currency (USD by default). An invoice in another currency is not compared with it, since HeyCMO has no exchange rates; set the currency your customers pay in under Settings → Email.
  • A failed-payment holdout never holds out a VIP account's invoice.
  • Once your churn-save holdouts have enough results, HeyCMO no longer sends a re-engagement email to inactive customers those results show the email drives away (for example, inactive yearly subscribers who cancel more often when reminded). It only holds back when the evidence is clear for every kind of customer it looks at together, and only once each side of the holdout has at least 10 customers who cancelled and 10 who stayed; each one is in the audit log with the estimate. Holding back that email does not delay any other: if the same customer's payment fails the next day, HeyCMO acts on it. While a holdout has too few results, it drafts the email as before, and the run report says what is missing when that changes.

Launch video plans, and podcasts to pitch yourself to

  • A launch campaign from a GitHub release adds a card with a plan for a launch video, widescreen and vertical: its scenes, captions and every claim with its link, in your release notes' own words and your brand kit's colours. HeyCMO does not make the video; approving the card marks it done.
  • Where HeyCMO's image signing is set up, each plan comes with a storyboard image carrying Content Credentials, so anyone can check it came from HeyCMO; otherwise the card says it is unsigned and why.
  • Once HeyCMO turns on podcast search and your listening is on, the Journalist desk loop also searches the past week's podcast transcripts for complaints about the pricing or reliability of up to three of your competitors, and for two of your desk topics. Each episode it finds is a card with the quote, the minute it was said, why it matched and your own facts to pitch yourself as a guest from. HeyCMO contacts no show. It runs once a day, with at most two such cards a run, and a newly turned-on desk stages its first ones on its next run.
  • A podcast card found through Listen Notes keeps only the episode's id and date, as Listen Notes' terms require: Show the episode reads the rest live, the card shows "Powered by Listen Notes", and it cannot be edited.

How AI answers credit you, and citation-ready articles

  • The GEO page shows Attributed visibility: how much of each AI answer's text credits you, so a lead paragraph about you counts far more than a passing mention near the end, with its change since last week. The engine table shows it for each engine, beside Source spread: how many different sites the answers cite. A panel from before this change says "not measured", never 0.
  • A Citation drift section lists answers that name or cite you but get you wrong: a competitor credited in a sentence that cites your own page, your product called a competitor's, a price your product context does not list, or something your product context says you offer said to be missing. The weekly GEO report says how many, and a recommendation suggests stating those facts plainly on your site. It is a rule-based check: it misses a paraphrased or implied mistake, and a claim about anything your product context does not state. Prices and capabilities are checked only against what your product context states, and the page says when there was nothing to check them against. An answer quoting your own comparison page about a competitor is not counted.
  • Long-form articles from the Marketing Factory are checked for what gets a page cited in AI answers: a figure from your facts every 250 words (never more than your facts hold), a named quote or source every 300 words, and every section opening with a short answer that stands on its own. A figure your facts do not state, or one of your own goals written as a result, sends the draft back; smaller suggestions travel with the draft without holding it up. A draft with hidden text or instructions aimed at AI systems is never staged, while an article about AI, one written for assistants who are people, or one showing an example of such text, is.

Where your next ad dollar goes

  • With two or more paid channels connected (Google Ads, Microsoft Advertising, Meta or LinkedIn Ads), the weekly brief has a Cross-channel budget section: what each channel's next conversion costs now, with a range, how long its effect carries over, and whether your spend explains your trials or new paying customers better than chance. If it does not, the section says so and shows no figures.
  • It needs 8 weeks of data with at least 100 conversions, and 28 days of spend that varies from day to day on each channel. Until then the section says what is missing.
  • When the numbers clearly back it, HeyCMO proposes a Cross-channel budget move in your Inbox: how much a day to move from one channel to another, what it should gain a week, and why it stops there. A move changes a channel's daily spend by at most 20%, within its monthly pacing and your daily spend cap. Approving records your decision; HeyCMO changes no budget from it.
  • A budget raise that ad fatigue proposes for Google Ads or Microsoft Advertising is held back when the model is confident the channel's next conversion would cost more than your target.

Recovery emails wait for the right moment

  • Recovery emails now go when they can help, by why the payment failed. After a soft decline or insufficient funds, the first email waits 24 to 48 hours, because Stripe's own retry often collects these payments without one; if a retry fails after the first 24 hours, the email goes right then, else at the next daily run. Either way it is the first email your customer gets, even when that run falls on the reminder's day. For insufficient funds, the reminder and the urgent email wait up to 3 days for a payday: a Friday, the 1st, the 15th or the month's last business day.
  • Once your workspace has enough past failed payments (20 in the last 180 days, 5 of them paid without an email, and 20 followed unpaid with no email for two days), HeyCMO learns from them how long that first email should wait, and the run report says what it learned. It goes only by what those payments show, never past what your history has followed. Until then it waits 24 hours and says why.
  • A recovery email waits while Stripe's next automatic retry is less than 12 hours away, but no longer than the day after it is due, so a daily retry cannot hold it for ever. An approved email that has not waited that long yet is held if the retry is less than 2 hours away; if the retry fails, HeyCMO drafts the email again with the new attempt, which you approve again unless HeyCMO sends recovery emails for you.
  • An expired card, a card the bank will not charge again, or a 3D Secure check: only your customer can fix these, so the first email goes at once, the reminder on day 3, and the final notice no longer waits for Stripe to stop retrying.
  • Each recovery email in your Inbox says why the payment failed and why it goes when it does, and Settings shows the timing.
  • If HeyCMO sends recovery emails for you without asking, it asks once more: the timing changed what that permission covers, so the next recovery email waits in your Inbox until you turn the permission on again on the Autonomy page.

Your GitHub releases start a launch campaign

  • Settings → Connections → GitHub releases gives you a webhook address and a secret (shown once) to add in GitHub. From then on, publishing a release, or merging a changesets "Version Packages" pull request, starts a launch campaign in the Factory from your release notes. Drafts and pre-releases start nothing.
  • The campaign puts its pieces in your Inbox, and nothing goes out until you approve: a changelog page (a pull request HeyCMO never merges when your website is a Git repository, otherwise a draft in your CMS), a LinkedIn post, an X thread to copy post by post, and a release digest for your own email tool. Each card says why it is a draft to copy when it cannot be more.
  • Every card states only what your release notes say, and links only to your own repository's release, pull requests and commits.
  • Settings lists your latest launches with a link to each, and under Not started any release that was not launched and why (the kill switch, a restricted workspace, no active plan, or more than 10 launches in a day). Redeliver it from GitHub once that is resolved.

Every playbook finishes, and three new playbooks

  • Approving a playbook's last step (send, publish or go live) now always leads somewhere: a card for the connected tool that ships it or, where none can, a Playbook deliverable to paste card with the deliverable and where it goes. Nothing is sent or published until you approve that card. Before, a last step HeyCMO could not ship stopped there.
  • Product launches, feature announcements, campaigns, press campaigns, referral programs, community launches and the three new playbooks get a card for each connected channel that ships them (the LinkedIn post, the X post, the article for your website), with the rest of the kit ready to paste.
  • Some last steps also apply what they list under On approval: Revenue operations basics writes your ICP segments and goals into your marketing record, AI search visibility adds its prompts to your AI answer tracking and gives you an llms.txt to paste, and a technical SEO audit puts its topics on your editorial calendar.
  • Three new playbooks: Webinar or event, Affiliate and partner program and Founder posting.

Drafts follow the rules your own edits teach

  • When you edit a LinkedIn post, an X post, a website article or a Factory draft before approving it, or decline one over its tone or wording, HeyCMO keeps your version beside its own. Every few such changes on a channel it works out what you keep changing (rhetorical questions, exclamation marks, a hard call to action, length, phrases you always cut), and adopts those rules only if they would have brought its past drafts closer to yours.
  • New LinkedIn and X posts, and Factory drafts for that channel, then follow those rules, with a few of your own edits as examples. Your brand rules still come first, and a draft that breaks a learned rule is written again.
  • Only your last 180 days count, an edit made after undoing an earlier one counts too, and an email addressed to a person is never kept for this.
  • Through the API you can see each channel's rules, learn from your changes now, or go back to an earlier version.

Recovery emails say why the payment failed, with a 1-click card update

  • Recovery emails now know why a payment failed and say so: an expired card, a 3D Secure check from the bank, insufficient funds, or a card the bank refused. Before, HeyCMO could not read the reason from Stripe, so every email used the general copy.
  • The button follows the reason. For an expired or refused card it reads Update card in 1 click and opens Stripe's page for adding a new card (falling back to the invoice when your Stripe customer portal is not set up); for a 3D Secure check it reads Complete 3D Secure verification; for insufficient funds or another decline, Retry payment or switch card. In a dry run the card page creates nothing in Stripe and says so.
  • Stripe's card page changes the customer's default card only. When a subscription is set to charge a card of its own, the button opens the invoice instead, where a new card pays, so a customer never updates a card that the renewal then does not use. The same goes for a subscription that has ended since the email was sent (Stripe cancelled it after its retries, say): the button opens the invoice, so a new card is never saved where nothing would charge it.
  • The card-expiry email also goes when Stripe says a saved card expires at the end of the month, for annual and mid-cycle customers whose renewal is far off; still one email per card and month.
  • If you connected Stripe before this release, HeyCMO adds the card-expiring event to its webhook in your Stripe account by itself, within a day. If you set that webhook up by hand (your key cannot manage webhooks), add customer.source.expiring to it in Stripe, or connect Stripe again. To let the emails read the reason and open the card page, give the Stripe key PaymentIntents: Read, Charges: Read, Subscriptions: Read and Customer portal: Write.

Drafts and plans find related facts in what HeyCMO knows

  • When HeyCMO looks up what it knows about your business for a draft, a plan or your AI assistant, it now also follows the names and topics entries share, so it finds facts linked to your question and not only those that use the same words. Customer quotes you have not confirmed are still never used, and the names it keeps never include an email or web address.

Prompts, context and discovery for AI assistants

  • AI assistants connected to HeyCMO that support MCP prompts now list four ready-made workflows you can start from their prompt or slash menu: triage your approval inbox, launch a product release, diagnose your paid efficiency, and write an executive summary of the week. Each one starts from your own records as they are right now, says plainly when something is empty or could not be read, and changes nothing by itself: approving still happens in the dashboard.
  • An assistant can attach your marketing state or your latest weekly brief to a conversation as context, whatever app it is.
  • In assistants that show apps inline, your metrics and recovered revenue now appear as a small scorecard, each currency on its own and "Not measured" where there is nothing to measure yet, with a link to the Scorecard.
  • Assistants and directories that look for HeyCMO's agent card at the older address now find it, and HeyCMO publishes a listing file for the official MCP Registry.

Experiment results you can check any day, and what targeting would have done

  • On the Scorecard, a holdout's lift now comes with a 95% interval and a p-value that stay valid however often you look, so checking every day does not make a result look better than it is. Results read before this change look as they did.
  • A landing-page test shows the same always-valid p-value beside its interval; how its winner is decided has not changed.
  • For a failed-payment holdout, the Scorecard estimates how much would have been recovered had HeyCMO emailed only the invoices it expects the email to help (by invoice size and Stripe's retry state), against emailing every one. It is marked directional, since nothing has run that way, and appears once enough invoices have been assigned since this change.
  • A holdout with more than 100,000 customers is read from its counts alone, and the Scorecard says so.

Nothing on the editorial calendar goes missing

  • The Content page's editorial calendar keeps earlier weeks' unfinished items at the top: a brief or draft still waiting for you, and a published page whose results are still coming.
  • A link suggestion that did not go live (a rehearsal, a failure, or one you declined) is proposed again, up to five times, read fresh from the page.
  • Two approved edits to the same page never overwrite each other.
  • A newly published or edited page gets its 14-, 28- and 56-day results even when older ones are waiting.

This week counts every approval you gave

  • This week on the Inbox now counts an approval even when HeyCMO could not carry the action out afterwards.

Export, delete and erase your data

  • Settings → Advanced → Your data, for admins: Export my data downloads one file with up to 10,000 rows of each kind of record (never secrets or API key hashes), and Delete workspace says what is deleted and what is kept, and works only once you type the workspace's exact name.
  • Deleting a workspace deletes or clears all of its data, stored files included, and signs everyone out. Kept: the audit log, billing and tax records, and records without message content, which expire on the retention schedule. Any part of a deletion that did not finish is finished overnight, and the page lists any DNS records of your hosted pages to remove.
  • An admin can erase one of your customers by email address, through the API or the CLI. Their address is removed from drafts, sent emails, notes, knowledge and the pages HeyCMO read, web addresses included, and only a one-way hash stays on your suppression list, so they are never emailed again. Someone else's address that merely contains theirs is left alone. An email already approved or sending is not changed, so run the erasure again once it has gone.
  • Records now expire as HeyCMO's data retention page says: sent and declined emails lose their recipient and message after 90 days, and past actions' content, usage and run records go after 24 months.

Experiments and P&L

  • The Scorecard leads with your business: recovered revenue, new MRR, trials, trial to paid, paid spend and open pipeline. Below it, a Marketing P&L for the last 30 days (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 each of your goals against its target, with the days left. A figure HeyCMO has not measured says so, never 0.
  • Holdouts for churn saves, upgrade prompts and expansion prompts: start one with its consent and a random share of customers gets nothing from that loop, so you see what the emails really changed. When a holdout's stopping rule is met you hear once, by email and Slack; HeyCMO never stops one for you.
  • A landing-page test with a clear winner shows Promote variant X. Approving it shows that variant to every visitor and ends the test with its results kept; undoing it shows the original page to everyone again.
  • Paywall optimization is now part of Pricing page experiments, which reads your pricing pages in Google Analytics and suggests a hosted test. If you had the paywall loop on, the pricing loop is on in its place.
  • Holdout results count every customer fairly: upgrades and expansions are checked every day, so one inside the holdout's window counts even though the expansion loop runs once a month, and a stopped churn-save holdout can be concluded only once each customer's retention has been checked, so nobody still paying is counted as lost.

The Factory: turn a goal into a campaign you approve

  • A new Factory page, under Grow, turns a goal into a campaign. Say what you want and what prompted it (your own goal, a competitor's move, a product launch, customers leaving, or being missing from search or AI answers), pick the channels (blog article, LinkedIn, X, email, paid ads, a landing page version), and HeyCMO writes a plan and a draft for each channel from your plan, brand and past lessons.
  • Turn on Show me the plan before drafting to read who the campaign is for, its main message and the pieces planned, then Approve plan and draft or Decline plan.
  • Every draft is checked before it reaches your Inbox: its figures and promises against your facts, your brand voice and words to avoid, and the channel's length and link rules. A draft that falls short is reworked up to three times, and one that still fails stays out of your Inbox. The page shows each draft's score and checks.
  • When the drafts are ready: Approve all, Decline all or Review one by one in Inbox. Nothing is published until you approve it.
  • Lessons shows what HeyCMO noted from what you approve, edit and decline and from how campaigns went, and what it will use next time. Lessons update at the end of each campaign, or now with Update lessons.

Social and competitive v1

  • Founder posts on the Loops page plans a few posts a week in your voice for your LinkedIn profile or Page, X and Facebook Page, two by default: on a topic from your editorial calendar, one of your most-read pages, news in your market, or a competitor's move written as a take on the market that never names them. Each post is a card that names its day, and approving it posts it then. Until HeyCMO turns on posting for your workspace, approving is a rehearsal and nothing is posted.
  • 48 hours after a post on a LinkedIn Page or X goes out, its card shows impressions, clicks, reactions, replies and reposts. LinkedIn shares no numbers for posts on your own profile, and HeyCMO does not read Facebook's yet; the card says so.
  • Listening and community engagement draft a reply in your voice to up to three mentions of your brand a run. HeyCMO never posts it: the card links to the thread, and approving it marks the mention answered.
  • The competitors on the Strategy page are now the one list that listening, competitor ads, your AI search prompts and the keyword gap all read, each with up to three positioning notes and a Battlecard. Once HeyCMO turns on page watching, Watch their pages follows each competitor's home and pricing page, and the competitor digest says what changed and what it can mean for you.
  • On the Press page you mark each journalist request you answered as sent, or quoted with a link to the piece, and the page counts your last 90 days. An answer whose request has expired moves to Earlier answers, so you can still mark it quoted.

Customer docs

  • The HeyCMO docs (docs.heycmo.ai): guides to setting up and running HeyCMO (Stripe, your email provider and DNS, going live, reviewing drafts, the kill switch and caps, billing, your team and API keys, exporting and deleting your data), every loop with what it does and needs, the API reference with the scope each call needs, this changelog and a status page.
  • In the dashboard, Help and Status sit at the foot of the menu, each Settings page, the Brief, Loops and Billing say Learn more to their guide, and Settings gives the support address: support@heycmo.ai, answered within one business day.

Going live finishes setup, and HeyCMO tells you when it is on

  • Setup ends with a Go live step: it shows what still has to be in place before the emails you approve reach your customers, and Request go-live asks HeyCMO to turn live sending on. The step turns green once HeyCMO approves, without a reload, and waiting never sends you back into setup.
  • When every step you do is done, All set offers Find failed payments and Request go-live; while HeyCMO reviews your request the second reads See your go-live request.
  • Where HeyCMO reviews go-live requests, Settings → Channels → Live sending and the Go live step say when you asked and that HeyCMO approves live sending within one business day, and your free trial is paused while you wait. The days are added back once HeyCMO decides or you withdraw the request.
  • When HeyCMO approves, you are told once, by email to your notice recipients and in Slack, that live sending is on and how to turn it off. If your kill switch is on or your trial or plan has lapsed, the notice waits until that ends, for up to 48 hours after the approval.

Legal and trust pack

  • A security page, heycmo.ai/security, says how HeyCMO protects your data today (encryption, the audit log, who can do what, how deletion works), what is not in place yet, and where to report a vulnerability.
  • The dashboard's menu and sign-in pages link to it.

One story on every public surface

  • heycmo.ai and the pricing page lead with what HeyCMO does today: recovery emails for failed Stripe payments, drafted for you to approve. While self-serve sign-up is being finished, Request access emails the team.
  • The pricing page lists strategy playbooks, publishing to your website and the MCP server under Operator, and under OS only what OS adds: every loop pack, no cap on how many loops are on, graduated autonomy and five times the included usage.
  • Operator's weekly report on how AI answer engines name you no longer takes one of its 15 loop slots.

Learning: feedback ledger and applied tuning

  • When you decline a draft with a reason, or edit one before approving it, the next draft of that kind takes it into account, and its card says what it was adjusted after.
  • Approving the weekly loop review can now change a loop's settings (a threshold, how many items it stages in a run, how often it runs) within safe limits; the Loops page shows any setting that differs from the default.
  • A finished holdout's result appears in the next weekly brief, and the Autonomy page shows how long you take to decide each kind of action.

Content pipeline

  • The content loops now read your own numbers every week, with nothing to send in: Search Console clicks, Google Analytics page views and your WordPress posts. The new Content page shows what HeyCMO read and your busiest pages.
  • An SEO brief now says who a search is for, which page it should lead to and which competitor pages rank. Draft this on a brief writes the article for your approval; on WordPress it can also propose edits to a page you already have.
  • 14, 28 and 56 days after a post goes live or a page is edited, HeyCMO reads that page's search numbers again and shows what changed.
  • One editorial calendar on the Content page holds each proposed topic once a week. Two loops (directory listings and programmatic SEO quality) are held back until they do what their names say.

The home and the path after approval

  • After your first approval the Inbox shows This week (what HeyCMO did in the last 7 days), Your plan and What happens next: go live, connect Google Analytics, start a holdout and read your first weekly brief.
  • Every loop on the Loops page says what it is for, what it needs connected and how its last run went. Turning one on asks first, and What it found shows its runs, what each put in your Inbox and what came of it.
  • Settings → Listening is its own page, with Collect now, and you can turn on the marketing skills library yourself.
  • No page shows an API address, a setting name or an internal run id any more.

Attribution v1

  • The Scorecard shows which channels bring sign-ups and paying customers: Google Analytics key events by channel, a funnel from visits to paid, and Stripe conversions by channel (last click and first touch).
  • A small snippet for your own site keeps the ad click and campaign a visitor arrived with, so a live Stripe trial or first payment can be joined to the visit that brought it. A browser that asks not to be tracked is not.
  • Every change HeyCMO applies in your other tools gets a 14- and 28-day readback of the number it was meant to move, shown as a direction, never as proof, and links in posts carry consistent campaign tags.

Contact ledger and coordination

  • HeyCMO keeps track of whom it has emailed, across every loop. A card says when another loop already emailed the person ("Also e-mailed by failed-payment recovery on 14 Oct."), and a loop steps aside when another one owns that customer's situation.
  • Settings → Email → Contact frequency sets one limit for every loop: by default one email per person every 7 days. Payment recovery emails count toward it but are never held back.
  • When two loops would reach the same people on the same day, HeyCMO proposes moving one, as a card for your approval.

Voiced drafter

  • Posts and notes now read like your business wrote them: LinkedIn, X and Facebook posts, newsjacking takes and partner notes are written in your brand's tone, and posts in your own name follow two or three of your own posts (Settings → Workspace → Brand voice).
  • Every draft is checked for tone, claims and links before it reaches your Inbox, the card says who wrote it, and you can edit the words before you approve. With no writing model, nothing is drafted and the loop says why.
  • Referral and review requests are emails you approve one by one, and a customer's words are quoted only with their permission.

Dunning journey

  • A failed payment gets a sequence instead of one late email: a notice the day it fails, a reminder on day 3, an urgent email on day 7 and a final notice from day 14 once Stripe stops retrying. Each waits for your approval, and you can change the days in Settings → Email → Failed payment recovery.
  • A customer whose card expires before a renewal can be told first, and a paused, cancelled or written-off subscription never gets a payment email.
  • The Scorecard shows which email of the sequence each recovered payment followed. Connect Stripe again (the same key) to get the day-one notice and the card-expiry email.

Governed decide

  • Some loops can ask a writing model to rank and explain what passed their rules: upgrade prompts, SEO briefs, paid-search proposals and mention labels. The card says why HeyCMO kept each item.
  • Listening can leave out phrases you name, and a negative mention with a wide reach sends you an escalation notice by email, Slack or push.

Tenant marketing state

  • Your workspace keeps one marketing record: who you sell to, your goals, channels, budget, competitors, words to avoid and messaging pillars. Setup's new Your ICP and goals step writes it, finalizing your strategy updates it, and every loop and draft reads it.
  • The Strategy page (under Work) shows your plan and the record, and you edit any part in place. Finalizing a plan puts one card per recommended playbook in your Inbox.
  • Words to avoid apply to every draft.

Honest inbox: cards say what they are

  • Every report, digest and proposal card says what it found and what to do next, in plain words, on the dashboard, your phone, Slack, the CLI and your AI assistant. Raw data stays behind a closed Details.
  • A card that lists people to contact (community threads, referral and review asks) says they are candidates you write to yourself, and a card with no editor says so instead of showing raw data.

Spend ceilings the founder owns

  • Settings → Advanced → Caps: lower any cap for your workspace (emails a day, changes per run, AI model spend, ad spend per currency). HeyCMO sets the ceilings; you can only tighten them.
  • AI model spend has its own daily and weekly limit from your plan, and Billing shows today's model spend.
  • An ad change your caps would refuse says so on its card before you approve it.

Defect sweep: the review's small fixes

  • The weekly brief arrives every week, with or without Google Analytics.
  • Failed-payment recovery looks back 60 days by default and says what it did not count, and a cancelled subscription, or one set to cancel, is never emailed about a payment.
  • Run now on a loop always looks again, and says when the loop already ran that day.
  • Twenty smaller fixes across anomaly alerts, tracking checks, search reports, search-term mining and setup.