Reviewing and editing drafts

Approve, edit or decline what HeyCMO prepared, from the dashboard, your phone, Slack or your assistant.

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.

Approve, edit or decline

Inbox → read each draft → Edit if you want → Approve. Declined drafts never go out, and every decision is audit-logged and teaches the next draft (see What your decisions teach HeyCMO below).

After your first approval

The Inbox page changes once you have approved something. This week sums up the last 7 days — loop runs, items prepared for you, your decisions, emails sent (rehearsals until you go live), changes made in your other tools and money recovered after a recovery email — with how each number is counted on hover; Your plan says where your marketing plan stands; Needs you lists what is waiting for your decision. And What happens next lists four things, each a link to where it is done, until all four are:

  1. Go live (Settings → Channels): until HeyCMO approves your go-live request, approved emails are rehearsals and nothing reaches a customer. The Alpha operator agrees a review and send window with you; there is no committed response time or trial clock.
  2. Connect Google Analytics and, where HeyCMO offers it, Google Postmaster Tools (Settings → Connections): the weekly brief and the Scorecard read them.
  3. Start a holdout (the Scorecard's experiments): a small share of customers gets no HeyCMO email, so the Scorecard can show what the emails changed.
  4. Your first weekly brief (the Brief page): it says when the weekly review runs next, or to turn it on.

Editing a draft before you approve it

Press Edit on an email card. You get:

  • Subject and Body (HTML) fields. The body is the email's HTML as plain text, one paragraph per line — change the words between the tags and leave the tags alone. Keep the payment link in a payment reminder; the editor warns you if an edit removes a link.
  • A live preview beside it, showing exactly what the customer will read. It is sandboxed: nothing in a draft can run in your dashboard.
  • Locked fields — recipient, Stripe invoice, and Stripe's retry evidence. You cannot change who an email goes to or the facts recovery attribution relies on; to email someone else, decline and let the loop stage a new draft.
  • Under a dashed rule in the preview, what HeyCMO adds at send time (an approximation): nothing for payment reminders; for marketing emails (win-back, churn, trial, upgrade, expansion), your postal address, the AI disclosure and an unsubscribe link, unless the copy already has them. If your postal address or consent attestation is missing, the editor says the send will be refused — fix it in Settings → Email → Sender identity.
  • On a marketing email card (not while editing), the preview is the exact message: HeyCMO builds it with the same code that sends it, so you see the HTML your customer gets — your brand colour and logo, the footer, the unsubscribe link — plus the plain-text part, the headers, and whether approving would send it or only rehearse it (and why).

Save changes stores a new version of the draft (the card shows ✏️ edited, and the Audit page records the before and after). Your next Approve sends that edited version and nothing else. Cancel discards the edit. Playbook drafts open a markdown editor with a rendered preview; both editors also show the raw JSON under Advanced: raw JSON. A card with no editor (a report, a proposal, a post or ad change) has no Edit button and says why: approve it as it stands, or decline it and say what should change.

Everything works from the keyboard: Tab to Approve, Edit or Decline and press Enter. Or triage with single keys, on the Inbox and on Decide alike: j and k move to the next and previous card, a approves the card you are on, e opens its editor and d opens its decline (which still asks why). a, e and d act only on the card the keyboard is in: click elsewhere on the page and they do nothing until j, k or Tab takes you back into a card. The keys do nothing while you type in a field or a dialog is open, and holding a approves only one card. If single keys get in your way (speech input, say), Turn keys off beside them; that browser remembers it.

A brief or report a campaign can start from (an SEO content brief, a content refresh brief, a counter-campaign brief, an AI answer visibility report, among others) has Start a campaign from this →: it opens the Factory with the card's one-line summary as the campaign goal and the reason that fits it; nothing runs until you press Start campaign there.

What your decisions teach HeyCMO

When you decline a draft, the reason you pick and the note you write are kept for that loop and kind of draft; so are your edits (which fields you changed, and the subject and the first lines before and after) and your approvals. The next draft of the same kind is written with your two latest declines and two latest edits from the last six months as your past feedback: what to avoid and the wording you chose. It is read as data, never as instructions, and never with anyone's email address. A card drafted with it says so, for example Adjusted after your last decline: the tone did not match your brand. So pick the reason that fits ("the tone did not match", "a fact about the customer is wrong", "the timing is wrong") and say in the note what you want instead. A decline for a compliance concern or a wrong fact also counts against letting that kind of action run on its own.

The weekly Loop portfolio review can now propose one small change to a loop's setting, for example the days without activity before a customer counts as at risk from 14 days to 10 days. It never moves a setting below half or above one and a half times HeyCMO's default; when it would, the card says so and proposes nothing. Approving the review applies exactly the changes it lists (nothing is turned on or off), and the Loops page shows each change on its loop. The Autonomy page shows how long you usually take to decide each kind of action.

Your edits to posts, pages and campaign pieces (and declines whose reason is about the text, such as the tone) also teach the Marketing Factory and the LinkedIn and X post drafter. Once a channel has three new ones, HeyCMO works out from what you changed a few house rules and examples for that channel's next drafts, and keeps them only if they match your past edits better than the ones before; nothing invented, and never a rule your edits do not support. There is no dashboard view of these rules yet.

Approving from your phone, Slack or your assistant

  • Your phone: open https://agent.heycmo.ai/decide, tap Add to Home Screen, and turn on notifications for that device (on Decide, or Settings → Notifications & Slack). A notification says only how many decisions are waiting ("2 decisions waiting"), never a customer's details, and opens straight to the card: approve or decline with one thumb. Decide does what the Inbox does: Edit opens the same editor in the card (subject and body, saved as a new version), and declining a recovery email asks how far the feedback reaches (this action only, this recipient and future Step 1 drafts, or all dunning drafts), as on the desktop.
  • Slack: install the HeyCMO Slack app and link your Slack user (Settings → Notifications & Slack → Get a link code), then approve low-risk items, or decline any item, from its own message in Slack.
  • Claude, ChatGPT or another AI assistant: connect it to HeyCMO's MCP address (https://agent-api.heycmo.ai/v1/mcp) with an API key (API keys), or by signing in where your HeyCMO deployment offers it, to see your inbox, weekly brief, loops, metrics and recovered revenue inside it (in assistants that show apps inline, the inbox, the brief and a small scorecard appear as apps). Assistants that support MCP prompts list four ready-made workflows: triage your approval inbox, launch a product release, diagnose your paid efficiency, and an executive summary of the week. Each starts from your own records as they are now and changes nothing by itself, and an assistant can attach your marketing state or your latest brief to a conversation as context. Approving still needs you: the assistant gets a link to the card in your dashboard.
  • The CLI: heycmo inbox lists what is waiting and heycmo decline <id> --reason "…" declines. heycmo approve <id> with an API key approves nothing where people sign in: it prints the card's link for a person to approve in the dashboard. On a HeyCMO you run yourself with no sign-in, approve the version you reviewed: heycmo inbox prints heycmo approve <id> --hash <version> under each item, and an item edited since is not approved.

Wherever you decide, you approve the version on your screen. If someone edits a draft after you open it, approving it changes nothing and asks you to review it again.

An approved email is sent through your verified domain only once HeyCMO has approved your go-live request (see Go live). Until then approval is a rehearsal (dry run): the decision is recorded and audited, no email leaves, and the result is marked (dry-run).

A standing approval — letting one kind of email go out without asking you each time — is off by default, and every send waits for you. It is earned, not switched on: Controls → Standing approvals shows, for each kind, your own decisions (how many, approved, edited before sending, days watched, incidents) against the bar HeyCMO has signed, and what is still to go. On the OS plan, once a kind is Ready for a standing approval an admin ticks that they understand it and its terms and clicks Request a standing approval; HeyCMO's review team checks the record and says yes or no. Only transactional emails such as failed-payment recovery can get one; marketing emails, posts and anything that spends money always ask you. Pause everything, your do-not-contact list, compliance, your limits and live send still apply to every action, any incident (a bounce, a complaint, an unsubscribe spike, a pause, a safety decline) ends it at once and notifies you, and End the standing approval ends it whenever you want. CLI: heycmo autonomy status.

Lifecycle emails (win-back, churn, trial, upgrade, expansion)

These loops work like dunning: the loop puts a brief in your inbox (who and why — no copy yet). Approving the brief writes the email in your brand template and puts the email in your inbox as a separate card; nothing is sent until you approve that one too. Trial, upgrade and expansion emails contain no prices, discounts or deadlines — the drafter is checked for that. A trial that sales already works, or an at-risk account with an owner in your CRM, gets no brief: it goes to a person as an escalation card (see Connect your CRM).

They are marketing email, so they stay a rehearsal (dry-run, nothing sent) until every one of these holds:

  1. Your workspace is live (go-live approved, as for dunning).
  2. HeyCMO's operator has allowed that email type on the platform, and the deployment allows marketing sends at all. Ask us; we enable types one at a time.
  3. You opt in per type in Settings → Email → Lifecycle emails: tick the type, choose the consent basis for that recipient list (express consent; soft opt-in — existing customers, similar products, opt-out offered at sign-up and in every email; or legitimate interest with a balancing test on file — not valid where e-privacy rules require consent), and say where the consent record lives (a policy URL, your sign-up form version — not email addresses). Optionally set the button link (https; without one the email invites a reply). Opting in is recorded with your name and the time.
  4. Your sender identity has a postal address, consent attestation and an unsubscribe link (Settings → Email → Sender identity).
  5. The recipient has not hit the frequency cap (by default one email per person per 7 days, counting every lifecycle type and the payment-recovery emails, which count but are never held back) and is not suppressed. Set your own limit in Settings → Email → Lifecycle emails → Contact frequency (1 to 10 emails in 1 to 90 days, across every loop).

HeyCMO also checks every email a loop drafts against the others it sent or has waiting for the same person: the card says "Also e-mailed by failed-payment recovery on 14 Oct." when another loop reached them, and a loop steps aside for the loop that owns the person's situation (churn save drafts no payment nudge for someone failed-payment recovery already e-mailed; people inactive 30 days or more get win-back's email, not churn save's). The run's report says what it did not draft and why.

An upgrade or expansion email to an account someone works in your CRM, or one that pays at least your VIP amount a month (Run your first recovery loop), is a plain, personal note signed by its account owner instead of the branded email, and it always waits for your review. And once your churn-save holdouts have enough results (at least 10 customers who cancelled and 10 who stayed on each side), HeyCMO stops sending the re-engagement email to the kinds of inactive customers those results show it drives away; each such hold-back is in the Audit log with the estimate.

The same Settings panel says, per type, whether it would send live and, if not, which of these is missing. A rehearsed send is recorded in the Audit log with the reasons.

Measuring deliverability. The email-deliverability loop reports DKIM, SPF and DMARC from real data or says "not measured". Two sources: DMARC aggregate reports — add the reporting address HeyCMO gives you to your domain's DMARC record (rua=mailto:…) once report forwarding is set up for your workspace, or post the report files yourself (gzip, zip or XML) to POST /v1/deliverability/dmarc-reports with an execute key — and Google Postmaster Tools: verify your domain there, then connect it in Settings → Connections. Settings → Email → Deliverability (and GET /v1/deliverability) shows what is measured.

Holdouts (optional). As with dunning, you can set up a win-back, trial conversion, churn save, upgrade or expansion holdout from the Scorecard's experiments (Set up a … holdout, then start it with its consent terms; API: POST /v1/experiments): a random share of customers gets no email, so you can see whether the emails change reactivation, conversion, retention, upgrades or expansion.