Docs

Playbook

What to do for your play: upgrade one that already has flows, or add one for the first time.

Every email now gets written from your product's real facts, tested by subject line, and measured by purchases. Here is what to do for your play. Pick your track.

TrackWhoTime
A. My play already has flowsInstalled before the September 2026 release. Your flows keep running; you're upgrading them.~30 min, mostly Claude
B. I'm adding a play for the first timeNothing in 8xSend yet. You do about 20 minutes; Claude does the rest.~1 hour end to end

Track A — My play already has flows

Nothing broke and nothing needs reconnecting. Your keys, events and live flows are untouched. These steps get the new copy, briefs and measurement into your play.

1. Make sure Claude Code is connected to this play

Where: your app's repo.

Open Claude Code in the repo and type /mcp. You should see 8xsend connected. If not, open 8xSend → your play → the setup panel → Connect this codebase, copy the .mcp.json it shows into the repo root, and restart Claude Code.

2. Reinstall any flow that shows "v2 available"

Where: 8xSend → Flows.

Flows installed from an older template show a badge under their name. Open the row's ⋯ menu → Reinstall from library. Leave "Keep my edited copy" unticked so you get the new template with its briefs. The old flow is archived (its stats stay); the new one arrives as a draft.

Heads-up: the old flow stops the moment you reinstall. Do steps 3 and 4 straight after, so the gap is minutes, not days. To compare v1 with v2 later, open Analytics and click Include archived flows — the old flow's numbers sit next to the new one's.

3. Let Claude write the copy from your product's real facts

Where: Claude Code, one command per flow.

/mcp__8xsend__write_copy abandoned-checkout

The first time, Claude fills in the product facts (what the app does, real prices, real ratings) from your repo and store listing. Then it rewrites each email to its brief, previews it, and fixes what the copy check flags. Run it once for every flow you have. You can read and correct the facts under Settings → General → Product facts.

4. Set the new drafts live

Where: Claude Code.

/mcp__8xsend__go_live abandoned-checkout

Claude validates the flow, shows you the subject lines, and asks. Say yes. Repeat for each flow you reinstalled.

5. Fix your checkout events

Where: Claude Code. Paste this:

Run check_events on 8xSend and fix every property gap it reports. In particular:
checkout_started must fire when the paywall or checkout screen opens (not only at the
payment sheet), once per attempt, with a stable checkout_id, value_cents as the real
price in cents, currency, and item_name as the plan or pack name users see.
checkout_completed must carry the same checkout_id. Re-run check_events until
property_gaps is empty, then deploy.

This is the single biggest lever. Without a price and a name, the abandoned-checkout flow can't tell a $5 pack from a $60 plan and every reminder says "your order".

6. Connect RevenueCat, if you haven't

Where: 8xSend → Settings → Sending → RevenueCat, and the RevenueCat dashboard.

Copy the webhook URL from 8xSend into RevenueCat's webhook settings, and put the same secret in both. Subscriptions, renewals, cancellations and failed payments then reach 8xSend without any app code.


Track B — I'm adding a play for the first time

You do the things only a human can (accounts, DNS, keys). Claude does everything else and stops before anything sends.

1. Create the project

Where: 8xSend → New project.

Name it after the play. Tick Connect Claude Code now. You'll get a .mcp.json snippet; put it in your app repo's root. Your postal address and consent default come across from the other 8x plays automatically.

2. Do the four Resend steps on the setup panel

Where: 8xSend → your play (the checklist on the overview) and resend.com.

The panel takes each value right there, in order:

  1. Paste a Resend API key.
  2. Add the DNS records for your sending subdomain (for example mail.yourapp.com).
  3. Paste the delivery webhook secret.
  4. Confirm the tracking subdomain.

Each step turns green when it's done. This is the 20 minutes.

3. Connect RevenueCat

Where: Settings → Sending → RevenueCat, and the RevenueCat dashboard.

Webhook URL from 8xSend into RevenueCat; same secret in both. Skip only if the play sells nothing.

4. Hand it to Claude

Where: Claude Code in the app repo.

/mcp__8xsend__setup_play

One command. Claude fills the settings and product facts, sets the email design from your app's own colours and logo, installs only the flows your app's events can drive, writes every email to its brief, wires the client code and hooks into the repo, tests a signup with a sandbox key, then issues the real key and puts it in your deploy environment.

Expect two requests from Claude: confirm it may put EIGHTXSEND_INGEST_KEY in your production environment (or add it yourself where your backend's secrets live, then redeploy), and "ready to go live?" for each flow. Read the subject lines it shows, then say yes.

5. Make the checkout events count

Where: Claude Code. Paste this after setup finishes:

Make sure checkout_started fires when the paywall or checkout screen opens, once per
attempt, with a stable checkout_id, value_cents (real price in cents), currency and
item_name (the plan or pack name users see), and that checkout_completed carries the
same checkout_id. Run check_events and confirm property_gaps is empty.

6. Go live, one flow at a time

Where: Claude Code.

/mcp__8xsend__go_live welcome-series

Start with Welcome. Add the others over the following days once you've seen the first emails land in a real inbox.


Both tracks — what you'll see once it's running

WhereWhat's new
Flows pageA Converted column: purchases and subscriptions credited to each flow. An email only gets credit if the person clicked or opened it before buying, within 5 days.
Flow → Performance tabEvery email in the sequence, in order, with sent, open, click, unsubscribe and purchases (and how many came from a click). Pick "Last 4 complete weeks" for a benchmark that doesn't move; weeks lock 5 days after they end.
Flow builderEach email node shows sent / open / click / conv. Select an email → Subject test to try a second subject line. The panel reads the result for you ("B wins on open rate, 99% confidence — remove A") once each arm has 200 sends; until then it says it's too early to call.
AnalyticsConversions and attributed revenue per flow. Include archived flows shows a reinstalled flow's v1 next to its v2.
Portfolio (admins)Every project and every flow in one table: sent, open rate, click rate, conversions, revenue.
Your app's analyticsEvery link back to the app carries utm_source=8xsend, utm_medium=email, utm_campaign=<flow>, utm_content=<email>. Nothing to set up.
Settings → GeneralThe product-facts sheet Claude wrote. Correct anything that's wrong; every future rewrite uses it.
Claude Code/mcp__8xsend__write_copy <flow> any time you want a flow rewritten. check_events tells you if your app stopped sending a property.

Stuck? Ask Claude first: "what does the 8xSend setup checklist still need?" It reads the same checklist you see and will name the exact step. If it's a Resend or DNS problem, that's the one part it can't do for you.

Full references: the setup guide, the flow catalog and the events contract. Claude reads the same pages.