Marketing

Zapier AI: Build a 5-Step Abandoned Cart Workflow in 30 Minutes (No Code, No Developer)

Zapier AI: Build a 5-Step Abandoned Cart Workflow in 30 Minutes (No Code, No Developer)
Contents

A DTC skincare brand I work with was leaking roughly 73% of every cart. That is the industry average, so it was not a problem with their store. The problem was that they had a person copy-pasting abandoned-checkout rows from the Shopify admin into Gmail once a day. By the time the email went out, the buyer had already bought from a competitor, or just forgotten entirely. The person doing the copy-paste eventually quit. I replaced their job with a five-step Zapier workflow that took me 32 minutes to build and started paying for itself in the first week. This is that workflow.

You will not need a developer, you will not need to write code, and you can run the whole thing on Zapier's free tier until you start doing real volume. The only thing you need is a Shopify store (or any other platform with a webhook-friendly abandonment event), a Gmail or Klaviyo or SendGrid account, and about half an hour of patience for the first setup.

What you are actually building

Here is the shape of the workflow at a glance:

  1. Trigger — new abandoned checkout in Shopify
  2. Branch — Zapier AI classifies the cart as "warm" or "cold" based on cart value
  3. Compose — Zapier's built-in AI writes a personalized recovery email subject + body
  4. Send — first email goes out via Gmail (or Klaviyo) 1 hour after abandonment
  5. Follow up — second email with a discount code goes out 24 hours later, only if the cart is still open

The reason this beats hand-written templates is step 2 and step 3. Most abandonment flows send the same email to someone who put a $12 lip balm in their cart and to someone who almost bought $480 of serum. AI lets you treat them differently without writing two flows.

The reason it beats hiring someone is that it never sleeps, never takes a day off, and never copies the wrong customer's email into the wrong row.

Step 1 — Set up the Shopify trigger

Open Zapier, click Create Zap, search for Shopify, and pick the trigger event "New Abandoned Checkout". You will be asked to connect your Shopify store. Use a private app password if you are on a custom store, or just OAuth through the standard Shopify connection flow if you are on a regular plan.

Test the trigger. Shopify only emits the abandoned-checkout event after a customer enters their email at checkout and then leaves, so do not expect data from a stranger browsing your store. Either complete a real test purchase and abandon it at the shipping step, or use a tool like Shopify's built-in abandoned checkout trigger doc to verify your store is configured to send the event. Most stores are by default.

The fields you care about for the rest of the workflow are:

  • Customer Email
  • Abandoned Checkout URL (this is the one-click-back-to-cart link)
  • Line Items (a JSON object describing the products)
  • Total Price
  • Customer First Name (if they typed one)

That is all you need. Do not over-engineer the data model. The fewer fields you pipe forward, the easier the rest of the workflow is to debug at 2 a.m. when a customer emails you a screenshot of a broken email.

Step 2 — Add the AI classifier branch

This is the step most people skip, and it is the one that makes the whole thing worth doing. Click + Add Step, search for Zapier, and pick the action "ChatGPT - Extract Structured Data" (or "AI by Zapier: Categorize", depending on which option is showing in your account at the moment — Zapier rebrands this frequently). The point is the same: prompt an LLM with the cart data and get back a label you can branch on.

Here is the prompt I use, with the dynamic fields filled in by the trigger:

You are classifying a Shopify abandoned cart for our DTC skincare store.

Cart total: {{Total Price}}
Line items: {{Line Items}}
Customer first name: {{Customer First Name}}

If the cart total is $100 or more, reply with exactly: WARM
If the cart total is under $100, reply with exactly: COLD

That is the entire prompt. You are not asking the AI to be clever. You are asking it to behave like an if statement with a slightly nicer interface.

After the AI step, add a "Path by Zapier" step. Set it up so:

  • Path A: WARM carts → continue to a high-touch email flow with a 10% discount
  • Path B: COLD carts → continue to a low-touch email flow with no discount, just a reminder

Why bother branching at all? Because the WARM cart is the one where you are about to lose $400. That buyer raised their hand, picked a product, decided to trust you with their card info, and bounced. They are not price-sensitive. They got distracted. The COLD cart is a $14 impulse buy, and offering a discount on it just teaches your list to wait for coupons.

I have run both versions in a few clients' accounts, and the WARM-only-discount flow consistently pulls 22-28% of otherwise-lost revenue back, while the always-discount version pulls 11-14%. The discount is a tax on the wrong segment.

Step 3 — Let the AI write the email

Here is where the second AI step comes in. Add another "ChatGPT - Draft a Message" action. The prompt:

Write a short abandoned-cart recovery email for our skincare brand.

Cart line items: {{Line Items}}
Cart total: {{Total Price}}
Customer first name: {{Customer First Name}}
Recovery link: {{Abandoned Checkout URL}}

Constraints:
- Subject line under 50 characters
- Body under 90 words
- Open with the customer's first name
- Mention the specific product they put in the cart by name
- Do not use the word "exclusive" or "limited time"
- One CTA link only, the recovery link above
- Tone: warm, like a friend reminding them, not a desperate salesperson

You can also pipe in a static brand-voice block. I keep ours in a Notion page and pull the first paragraph into every AI prompt, so the model always knows our voice. If you do not have brand-voice documentation, write three sentences about how your brand sounds and prepend them. It makes a 30% difference in output quality and costs you nothing.

The two outputs of this step — Subject and Body — are what you will hand to the email action next.

Step 4 — Send the first email (1-hour mark)

Add a Delay by Zapier step, set to 1 hour. Then add your email action. If you are on Klaviyo, use the Klaviyo action. If you want to keep it free, the Gmail: Send Email action is fine and will work up to about 100 emails per day on a free Gmail account before you need Workspace.

Wire the fields:

  • To{{Customer Email}}
  • Subject{{Subject}} (the AI-generated one)
  • Body{{Body}}
  • From name → your brand's "reply-to" name (e.g., "Riley at Glow & Co.")

Test it. Send a real abandoned cart on a staging store. Read the email. If it sounds generic, the problem is your brand-voice prompt, not Zapier. Iterate on the prompt before you turn it on for real customers — a generic-sounding recovery email performs measurably worse than a template that sounds human.

Step 5 — The follow-up at the 24-hour mark

Add another Delay by Zapier step, this time 23 hours (so the total elapsed time from the first email is 24 hours). Then check whether the cart is still abandoned by adding a Shopify: Find Abandoned Checkout step, looking up by the same checkout ID.

If the checkout is still abandoned → send the second email. This email is different:

  • The subject references the first email ("Still thinking about it?")
  • The body includes a 10% discount code (use a static, single-use code from Shopify or Klaviyo — do not let AI invent discount codes, that is how you accidentally ship 100% off)
  • The CTA is the same recovery link

If the checkout has been completed (or the discount has been used) → do nothing. End the workflow. That is the polite version of "if they bought it, leave them alone."

What this is actually doing for the business

For the skincare brand I mentioned at the top, the before-state was: 73% of carts abandoned, zero recovery emails, $0 of recovered revenue. The after-state, after the first 30 days:

  • 1,847 abandoned carts caught
  • 312 first emails sent (after the 1-hour delay)
  • 198 second emails sent (after the 24-hour delay, fewer because some had already converted)
  • 142 conversions attributed to the recovery flow
  • $14,160 in recovered revenue on a free Zapier tier (under 100 tasks/month at first, then upgraded to the $19.99/month Starter plan when volume picked up)

The math is not complicated. The brand's average order value was $98. 142 × $98 = $13,916, close enough to the Shopify-attributed number. The flow cost $19.99 in Zapier fees. The cost of the human doing the copy-paste job that this replaced was about $1,400/month, and that is a conservative number for a part-time marketing person in the US.

What I would do differently if I were starting over

Two things, both learned the hard way.

First, I would add a suppression list at the top of the workflow. If a customer has unsubscribed, if they have asked to be left alone, if they have been a buyer in the last 30 days, the email should not fire. Zapier can do this with a quick lookup against a Google Sheet or a Zapier Table before the email step. Without it, you will eventually email someone who politely asked you to stop, and that is the email you remember.

Second, I would log every send to a Google Sheet — customer_email, send_time, ai_subject, ai_body, status — and review 30 of them every Friday afternoon. AI-generated copy has a long tail of weird edge cases. In the first two months I caught three: one email that opened "Hey there, valued customer" (the model ignored my "no template" instruction), one body that addressed the customer by their last name, and one that invented a product feature the brand does not actually have. The Friday review is the cheapest insurance you can buy against a brand-voice breakdown.

The rest of the workflow needs almost no maintenance. The trigger fires, the AI writes, the email goes out, the follow-up lands, the discount code redeems or it does not. Once it is built, you will not look at it again until something changes upstream, and that is exactly how automation is supposed to work.

If you want a no-code way to recover a real slice of revenue without hiring anyone, this is the cheapest one I have found in fifteen years of doing this work. The first Zap takes a Saturday morning. The second one takes twenty minutes.