Writing eCommerce Emails With Claude Code
Most AI-written ecommerce email copy is bad. Not because the models are bad, but because "write me an email about our sale" gives the model nothing to work with. It doesn't know how your brand talks, what your products actually are, or what good email copywriting looks like. So it fills the gaps with generic hype.
We use Claude Code to write first-draft campaign copy in our agency, and the difference between junk output and copy that's nearly sendable comes down to three layers of context: a brand voice profile, your full product catalog, and real copywriting instruction packaged into a reusable skill. Then one more step ties it together: briefs generated from your actual Klaviyo campaign data.
This post walks through the full setup. Prefer to watch? Here's the video version, with all the prompts and scripts linked in the description:
Why "Write Me an Email" Prompts Fail
When you ask an AI to write an email with no setup, it's missing three things:
- Your brand voice. Without it, every brand sounds like the same enthusiastic marketing intern.
- Your product facts. Without them, the copy is either vague ("delicious and refreshing!") or worse, invented.
- Copywriting fundamentals. Without direction, you get feature dumps and exclamation points instead of copy built around a real customer problem.
The fix is to build each of those layers once, save them as files, and have Claude reference them every time it writes. In the video I use OLIPOP as the example brand because it's well known, but the process is identical for any Shopify store.
Step 1: Build a Brand Voice Profile
The first prompt sets Claude up as a brand voice strategist. You give it your store URL, and it reads your homepage, about page, product pages, and any other pages you point it at. Then it outputs a structured voice profile: tone, vocabulary, sentence patterns, how the brand handles humor, what it never says.
Two practical notes from running this. First, you'll sometimes need to hand it a couple of extra pages if it doesn't find the good ones on its own. Second, save the output to a file. That file becomes permanent context for every email the system writes from now on. You do this once, not per campaign.
This is the single biggest jump in output quality. Copy written against a real voice profile sounds like your brand. Copy written without one sounds like everyone's.
Step 2: Pull Your Full Product Catalog
Shopify exposes a public products endpoint, which means a small script can pull your entire catalog without any API keys or manual copying. For each product it grabs the handle, title, product type, vendor, tags, URL, full description, price, availability, images, and variants.
In the video this pulls OLIPOP's 45 products in seconds, and it works the same on catalogs of hundreds or thousands of SKUs.
Why this matters: product facts are what separate targeted copy from filler. When the AI knows a product has 9 grams of fiber, 2 to 5 grams of sugar, and 60 milligrams of green tea caffeine, it writes with those specifics. When it doesn't, it writes adjectives.
Step 3: Package It Into a Copywriting Skill
A skill in Claude Code is a reusable instruction set that loads automatically when it's relevant. So the last piece of setup is turning a copywriting prompt into a skill that also knows to reference the voice profile and the product catalog every time it writes an email.
The copywriting instruction itself is classic direct response, applied to ecommerce email:
- Benefits over features. Lead with what the customer gets, not what the product is.
- Specific and concrete. Numbers and product facts, no filler words.
- Active voice, sentences that flow. Each line should pull the reader into the next (the "slippery slide").
- Scarcity and urgency only when they're real. Fake countdown timers train people to ignore you.
- Earn every sentence. If a line doesn't move the reader toward the click, delete it.
The skill also carries a default email structure: subject, preview text, header, body, product blocks, sign-off. That's adjustable to your layout, but having a structure means the output drops into your template instead of arriving as a wall of text.
One nice side effect: when Claude built the skill in the video, it also wrote itself a small helper script for searching the catalog and finding the right product. When triggered, it pins the brief, loads the voice profile, pulls real product copy, writes, and runs a final check.
Step 4: Generate Briefs From Your Klaviyo Data
Everything above answers "how do we write it." The step that ties it all together answers "what do we send."
We run a script with Klaviyo API access that pulls historic campaign performance: what you sent, what worked, and what you were sending this time last year. From that, Claude generates a month's campaign calendar as a CSV, with a full brief per email: topic, angle, audience, and offer. In the video I ask for roughly 14 sends for July, which is in line with what we see across accounts in our email volume benchmarks.
The sample calendar it produced: Fourth of July stock-up, shipping cutoff urgency, a UGC roundup, a summer refresher product spotlight, and a subscribe-and-save push. Solid ideas, each with a written brief attached.
This is the part most people skip, and it's why their AI copy feels random. A brief built from real campaign data tells the writer who the email is for and what the offer is before a single line gets written. If you plan campaigns manually today, our email marketing calendar guide covers the same planning logic without the automation.
What the Output Looks Like
Here's the draft the system produced from one brief: a citrus lineup email targeted at new subscribers with a 15% welcome offer.
Subject: Beat the 3pm slump, deliciously
Preview: Bold citrus, a green tea caffeine kick, and just 2-5g of sugar.
That afternoon dip hits, and suddenly the vending machine is calling your name. Reach for OLIPOP instead. The real bubbly soda taste you actually want, with 9g of fiber and just 2-5g of sugar doing quiet work in the background. It's the kind of pick-me-up that won't leave you crashing by 4pm.
Look at why this works:
- It leads with a problem, not a product. The 3pm slump is something the reader actually feels. That came from the copywriting skill, not luck.
- The product facts are real. 9g of fiber, 2-5g of sugar, 60mg of green tea caffeine on the product blocks. That came from the catalog.
- The offer matches the audience. The brief said new customers, so the copy closes on the 15% welcome code instead of a generic sale. That came from the data-driven brief.
Each layer of the setup shows up in the output. Remove any one of them and you can see exactly where the copy would get worse.
Where This Fits in a Real Email Program
This produces first drafts, not finished emails. The output still needs a polish pass from someone who knows the brand, and you should read every product claim before it ships. But the drafts start at "needs a light edit" instead of "needs a rewrite," and the briefs are grounded in what your list has actually responded to.
We use this kind of tooling across our client work, from AI-driven list operations to per-recipient personalized copy. Campaign drafting is the piece with the most obvious time savings: the setup takes an afternoon, and after that every campaign starts from a data-backed brief and a draft that sounds like the brand.
All the prompts and scripts from the video are linked in the video description. If you'd rather have this set up and run for you, reach out, or see what this looks like in practice in our Bussin Snacks case study.