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.
Google Ads operator
With Google Ads connected, ad fatigue proposes, each as a card for your
approval: a fresh image for a worn-out display ad, pausing an ad that costs
too much per conversion, moving budget to your best converter, and lower
bids where an ad group is over your target.
Search-term mining blocks and adds terms against your target cost per
conversion.
Propose an ad change in the Inbox stages the same kind of card yourself,
and the weekly brief says how each paid channel is pacing against its
monthly budget.
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.