About this template
A 10% code in email one is how the discount becomes the price
Cart recovery "works" — the recovery rate looks great. What actually happened: you discounted the people who were going to buy anyway, and taught everyone else that abandoning the cart is how you get 10% off.
So this writes no discount in email one. Ever. That's the rule that protects the margin, and it's in a file you can read.
Three emails, each with a job
- +1 hour — the reminder. No discount, no urgency. Most abandons are a phone call or a dead battery, not a price objection. Restore the cart and get out of the way.
- +24 hours — the objection. Still no discount. It answers the specific reason your category gets abandoned — shipping cost, sizing doubt, returns worry, payment trust — and it asks you which one rather than assuming price.
- +72 hours — last call. Scarcity only if true. A discount here at the earliest, and only if you opted in.
Ask for a discount in email one and it pushes back once with the reason, then records that you overrode it.
It won't invent urgency
"Only 3 left!" on an unlimited-stock item is a lie that costs you the customer you just recovered. Stock levels, delivery dates and return windows come from your export or from you — never from the model.
Written to the cart, not to a segment
An email naming the actual item beats "you left something behind". It uses what the export gives — item, variant, price, cart value, repeat-buyer status — and anything absent stays absent.
High cart value gets the objection email, not a bigger discount. Low cart value may not deserve three emails at all, and the segment note says so.
Compliance is in the rules, not assumed
Unsubscribe in all three emails. Postal address for CAN-SPAM, or
[MISSING: postal address] if you haven't supplied one. No misleading subject
lines — fake Re: threading is the fastest route to a spam folder.
Subject lines are for testing
Three variants per email, and it never names a winner. There's no data to pick one and the rules forbid pretending otherwise.
What you supply
Your own Claude Code login, plus an abandoned-checkout export (Shopify: Orders →
Abandoned checkouts) in ~/cart/exports/.
No ESP key. The export is the input, which is also why nothing can send.
Where this stops
It writes copy to paste into Klaviyo, Shopify Email, or whatever you use. It does not send, connect to an ESP, or schedule anything.
It won't quote a recovery-rate benchmark — it has neither your data nor a citable source. And it's for cart abandoners, who consented; a purchased list is a different thing and out of scope.
Verified on build: the skill, the working tree, the NEVER_SEND guard, the
no-discount-in-email-one rule, the three-email structure and the compliance rules
are present on a fresh fork. Running it on your own carts is yours to do.