HomePlaybooksE-commerce

E-commerce

Checkout Recovery Desk

Draft abandoned-checkout recovery emails from the cart they left and an offer policy you wrote. No invented discount, timer, or stock count. A human sends.

Difficulty
Intermediate
Time to implement
About half a day to install, then about 20 minutes on a send day
Monetization potential
High
Last updated

Goal

Draft the next checkout-recovery emails from carts that were actually abandoned and from an offer policy you wrote down. The draft may name the items in that cart. It may not invent a discount, a deadline, or a stock level. A person reads every draft and is the one who sends.

Tools required

Direct is the vendor's public site. Affiliate appears only when ShipPlays is enrolled in that program.

  • Shopify

    Direct

    The abandoned-checkout list: item titles and the time they left. Copy those fields. The first version does not get a token that can email customers.

  • Klaviyo

    Direct

    Where you schedule the message after you approve it. Shopify Email is the same job if that is what you already use. The flow stays off until a human turns on that draft.

  • The offer policy and the queue: checkout id, items, whether a code you already created is allowed, and status (needs edit, approved, sent).

  • Claude

    Direct

    Drafts from one cart, or from one cart shape you have already approved. It does not see card data, and it does not get the key that sends mail.

Step-by-step setup

  1. Write the offer policy before you export a cart

    One short block. What you may offer: nothing, or a code that already exists, or a threshold you already advertise, such as free shipping over an amount that is already on the site. What you may not offer: a new percent off, a timer, a stock count, a delivery date, or a line about other shoppers. If the policy is blank, the draft will invent a promotion. That is the failure.

  2. Export only checkouts you are allowed to email

    From Shopify, copy checkout id, item titles, quantities, and when they left. Add a consent note in your own words: why this person may be emailed, or not allowed. Leave out payment data, full addresses, and card hints. Skip anyone who already bought, already unsubscribed, or never opted in. This desk does not buy a list.

  3. Separate a template from a one-off

    A template covers a cart shape you see often, such as one product with no code allowed. A one-off is a large cart you will edit by hand. Day one is one template and a handful of one-offs. A unique novel for every checkout is how a fake timer slips through.

  4. Draft from the cart and the policy

    Run the recovery prompt once per cart or once per template. It returns a subject, a preview, a short body, the policy line it used, and the claims it refused. The body may name items from that cart. It may not name a discount that the policy does not contain.

  5. Run the policy checker before anyone approves

    The checker quotes discounts, timers, items that were not in the cart, and prices you did not paste. Send is no when any of those appear. An empty problem list still has to name the item titles it matched. A cheerful draft with a hidden 'only 2 left' is a failed check.

  6. You approve the draft, then you turn the send on

    Paste the approved draft into Klaviyo or Shopify Email and turn that message on yourself. The agent never receives the API key that can send. Log the checkout id as sent or killed. A killed line goes into the weekly note so the next draft does not try it again.

  7. Once a week, tighten the policy from what you refused

    Run the kill-list prompt on drafts you did not send and on the note you wrote when you killed them. Add bans. Do not add a new promotion because a subject line felt clever. If you have not measured a result in the store, the note does not get to claim one.

Exact prompts

Recovery draft

Once per cart, or once per cart shape you are turning into a template. Paste the policy every time.

Write one checkout-recovery email. A human will edit it and send it. You do not send.

Offer policy (the only offers you may mention):
{OFFER_POLICY}

Cart (id, items, quantities, checkout time). Use only what is written here:
{CART}

Consent note (why this person may be emailed, or "not allowed"):
{CONSENT}

If the consent note says not allowed, return only: Do not email. Reason: consent. Stop.

Otherwise return:
- Subject: under 50 characters. Name the item when one item is obvious. No "last chance", no countdown, and no "we saved your cart" unless the policy says the cart is actually held.
- Preview: one line. No new offer.
- Body: three short paragraphs at most. The first names the items in the checkout, using the titles I pasted. The second is the next step, return to checkout, with no reason to hurry. The third is the offer only when the policy allows one for this cart, and it names the code or the threshold exactly as the policy writes it. When the policy allows no offer, the third paragraph is how to reply with a question.
- Offer used: quote the policy line, or "none".
- Refused: discounts, timers, stock counts, reviews, or delivery dates you could have invented. Name each one you did not say.
- Missing: any fact you needed (a size, a price, a code) and did not have. Leave it missing.

Do not mention other customers, a bestseller rank, or people looking at the item. Do not include a price unless that price is in the cart. If payment, address, or card details appear, write [redacted] and continue without them.

Policy checker

On each draft, before you move it to approved.

Compare this draft to the offer policy and the cart. Do not rewrite the email for style. Quote problems.

Offer policy:
{OFFER_POLICY}

Cart:
{CART}

Draft:
{DRAFT}

Return these sections, in this order:
- Discount or code: quote any percent, amount, code, or free-shipping line. Say whether that exact offer is in the policy. If the draft offers nothing, write none.
- Timer or scarcity: quote any deadline, "only", "left", "hurry", "last chance", or stock count. If none, write none.
- Items: quote any product the draft names that is not in the cart. If every named item is in the cart, list the item titles you matched.
- Price or delivery: quote any price, shipping time, or delivery promise that is not in the cart or the policy. If none, write none.
- Consent: quote any reason for emailing that I did not write in the policy or the cart. If none, write none.
- Send: yes or no. No if any section found an invented offer, timer, item, price, or consent reason.

A clean pass still lists the item titles you matched and the policy line you compared.

Weekly kill list

Once a week, on drafts you refused and the note you wrote at the time.

Read the drafts I refused to send. Tighten the rules. Do not invent a promotion, and do not invent a result.

Current offer policy:
{OFFER_POLICY}

Refused drafts (what the draft said, and the note I wrote when I killed it):
{REFUSED}

Return:
- Add to the policy: bans, or allowed offers I already used and wrote down. Each line must be supported by a refused draft or by the current policy. Do not propose a new discount, a new code, or a new deadline.
- Delete from future drafts: phrases quoted from the refused mail.
- Templates to keep: cart shapes I approved more than once. If I did not mark any draft approved, write "none yet".
- Do not conclude: a recovery rate, a revenue number, or a claim that a subject line works. If my notes contain no measured result from the store, write "no measured result in these notes".

The policy may get stricter or stay the same. It does not grow a new offer in this pass.

Expected results

  • A queue of drafts tied to real checkout ids, each marked needs edit, approved, or sent.
  • Subjects and bodies that name item titles from that cart.
  • An offer line that matches a code or threshold you already wrote down, or no offer at all.
  • A refused-claims note on each draft, and a weekly list of lines the next draft is not allowed to say.

Guardrails

  • A human sends. The agent does not get the API key, and the flow stays off until you turn that draft on.
  • No invented discount, timer, stock count, bestseller rank, or line about other shoppers.
  • No payment data, full street address, or card hint in the prompt. Checkout id and item titles are enough.
  • Only people you already have permission to email. This playbook does not buy, scrape, or rent a list.
  • No recovery rate, open rate, or revenue claim in the copy or in the weekly note unless that figure is an export you pasted from the store.

Common mistakes

Turning on a flow before the offer policy exists.

Write the allowed offer and the bans first. An empty policy is how a timer appears.

Asking the model to make the email more urgent.

Urgency is a policy decision. If the policy has no deadline, the draft does not get one.

Pasting every abandoned checkout, including buyers and people you cannot email.

The consent note is an input. 'Not allowed' ends the prompt before a subject line exists.

Next system to try

E-commerceCatalog Copy from Specs and ReviewsRewrite product descriptions and collection copy from your specs and review phrases, and list every claim the draft was not allowed to make. You paste what you accept.

Also nearby