help1
abandoned checkout recoveryshopifyshopify emailmarketing automations

The Bug in Abandoned Checkout Recovery That Was Not a Bug

Abandoned checkout recovery ran green for a year, sent 44 emails from 486 abandoners, and nothing in the admin flagged it. Here is what I found.

help1 Team
The Bug in Abandoned Checkout Recovery That Was Not a Bug

Go to Marketing > Automations in your Shopify admin. Open the workflow named "Abandoned checkout." Compare the last thirty days of send count against your abandoned checkout count under Orders > Abandoned checkouts for the same window. If the send number is a small fraction of the abandon number, your abandoned checkout recovery is running. It is just not running for most of the customers you assumed it was. I have audited fifteen stores for this in the last year. One had it set right.

What the number said

The audit that stuck with me was a store doing about $22K a month in home goods. The owner told me the recovery flow was running, had been for over a year, and produced "some sales but not many." When I opened Marketing > Automations, the workflow was green. Nothing showed as failing.

Then I compared two numbers. Abandoned checkout count for the previous thirty days: 486. Emails sent by the automation for the same window: 44. Nine percent of the customers Shopify itself labeled as abandoned checkouts got the recovery email.

That is not a small gap. Over four hundred sessions per month qualified for the flow and got silence.

First guess: the automation was off somewhere

I always start here because I have been burned by it. Merchants have flows that show "Active" but sit paused at the workflow level, or run only between specific dates, or filter to a customer segment that quietly drifted to empty. I once watched a Black Friday abandoned flow filter to a "VIP" segment nobody had populated in a year, and the merchant did not find out until January.

Not this store. The automation was on, the schedule was continuous, no segment filter was applied. Every step in the workflow showed a green run history for the past week. It was doing what it was configured to do. The definition of what it was configured to do was the problem.

I have been burned by Shopify Flow's marketing consent error too. The exact message reads "Flow action received with invalid properties. Customer does not accept marketing for customer id=[X]." When merchants build recovery in Flow instead of the native Automations template, that error fires on every non-subscriber, quietly. The workflow still shows green because Flow considers the step "attempted." I wrote a whole post on that failure mode (Shopify Flow silent failures: what I check) after the third store I saw it on.

I opened Flow in the admin. Nothing about abandoned recovery lived there. All the logic sat inside Marketing > Automations, using the native template. The run log was clean. No errors at any step.

So: the abandoned checkout recovery flow was running, no steps were failing, and no emails were going out. That is where I got stuck for about twenty minutes.

The setting I now check first

The clue was in the email step itself. Click into the email inside the abandoned checkout automation, and there is a "To:" field. On this store it read "Customers subscribed to email marketing." That is the default value Shopify sets the first time you configure the automation. It is also the wrong value for what the flow is architecturally allowed to do.

Here is the split, because it looks more obvious than it turned out to be:

  • Abandoned cart emails (fired when a customer adds to cart but does not reach the checkout page) are classified as marketing. The "To:" field is locked to subscribers, full stop.
  • Abandoned checkout emails (fired when a customer enters their email at the contact step and then leaves) are classified as transactional. The "To:" field can be edited. You can set it to "All customers." Most merchants never do.

A Shopify staff member (LucyT) confirmed this in a 2023 Community thread I keep bookmarked: for abandoned checkout, "emails to be sent to all customers because these are transactional emails, not marketing emails." Their own default field on the same feature says the opposite. Nothing in the admin prompts you to change it.

The fix, once you know it exists, is three clicks. Open the automation, click into the email step, hit the "Edit" button in the top right of the "To:" panel (the field looks locked until you do, and the lock icon is misleading), then change the recipient from "Customers subscribed to email marketing" to "All customers." Save.

On this store, the marketing opt-in rate at checkout was around 24%. Three out of four abandoners were locked out of recovery by that single field. A 9% send ratio, a 24% subscriber rate, and some noise from repeat customers who bought before the recovery could fire together account for the whole gap.

I have now audited fifteen stores for this specifically. One had "All customers" set. Fourteen were on the default. Every owner believed their abandoned checkout recovery was reaching everyone.

The bigger gap under the fix

Flipping the "To:" field made this store's recovery reach roughly the full pool of abandoned checkouts. It did not fix the pool itself.

Shopify only creates an abandoned checkout record after the customer types their email at the contact step and then defocuses that field. If a customer adds three items, taps "Check out," sees the shipping cost on the one-page checkout, and closes the tab before typing anything, that session is not an abandoned checkout in your admin. It is not anywhere you can act on. It shows up in aggregate cart analytics and nowhere else.

The one-page checkout redesign made this worse in a way I did not appreciate until I read a developer's April 2024 community thread on the email-capture mechanism. Shopify's checkout captures the email on a blur event, meaning the customer has to click or tap outside the email field after typing. On the old three-step checkout, clicking "Continue to shipping" was a natural blur. On one-page, a customer who types their email and then scrolls up to re-read the total, sees a high shipping estimate, and closes the tab may never trigger the blur. Their email was typed. It was never captured.

That gap is not something you fix inside Shopify's admin. If you want to reach those customers, you need a third-party tool (Klaviyo, Omnisend) that fires on partial checkout data. That path has its own consent questions, especially for EU customers, and if you want a second pair of eyes on where the platform recovery ends and the compliance question begins, that is exactly what help1's expert chat is set up for. I do not think most solo merchants should touch this layer until the native "To:" field is fixed and running clean for a month first.

The Klaviyo mistake merchants make right after

The moment a merchant hears "Klaviyo can reach non-subscribers," their instinct is to install it and turn it on. That instinct is dangerous if Shopify's native abandoned checkout automation is still active.

Klaviyo's own community manager confirmed the problem in 2022 and it has not changed since: "you will need to turn the Shopify email off, otherwise, your customers will receive duplicate emails." I have watched a merchant, in a genuine attempt to improve recovery, flip on Klaviyo's abandoned checkout flow while leaving Shopify's native one running. Every subscriber received two emails within an hour. Some received three, because Klaviyo's second flow email fired before Shopify's timer expired. Unsubscribes spiked, the sender reputation dropped, the campaign dashboard looked exactly like a merchant who had just bought a bad list.

The order is: open Marketing > Automations in Shopify, toggle the abandoned checkout automation off, and only then flip on Klaviyo's equivalent. Do not do both in one sitting because you will lose track of which one you touched first. Turn Shopify off, wait a day, then turn Klaviyo on and watch the first flow run before you walk away from your desk.

The other Klaviyo trap I have seen twice this year is smart sending. It is on by default with a 16-hour window. If a customer abandons on their laptop at breakfast and again on their phone at lunch, Klaviyo will not send the second recovery. Shopify's dashboard shows two abandoned checkouts. Klaviyo's dashboard shows one send. That is not a broken integration; it is Klaviyo choosing to protect the customer from a duplicate. Whether that choice fits your store depends on your unsubscribe risk against your recovery lift, and I do not have a general answer.

What I do differently now

Before I look at any automation setting on any store, I compare two numbers: the abandoned checkout count and the recovery send count for the same thirty-day window. If the send number is under 80% of the abandon number and there is no explicit subscriber-only intent, the "To:" field is almost certainly the reason. I check that field before I look at Flow, before I look at Klaviyo, before I look at deliverability, before I look at anything else.

Two other habits worth stealing:

  1. Never assume the abandoned checkout recovery is running. Shopify does not surface send-count failures. There is no notification, no email to the merchant, no red badge. The 2022-2023 platform migration that moved abandoned checkout settings from Settings > Checkout to Marketing > Automations silently deactivated the flow on stores that had it configured under the old path. Merchants found out weeks or months later by reading community threads about it. If you built your setup before 2023 and have not opened Marketing > Automations since, that is your homework this week.
  2. Accept that a broken window is a permanent loss. Shopify removed the manual "Send a cart recovery email" button when Marketing Automations launched, and there is no native path to resend to sessions that missed the automation. If your recovery ran silently broken for six weeks, those six weeks of abandoners cannot be reached through Shopify. You can export the CSV from Orders > Abandoned checkouts and send a one-time win-back through Klaviyo or Shopify Email as a regular campaign. Dress it as a campaign, because that is what it is at that point. My rule of thumb: if the missed window is longer than two weeks, treat those customers as a marketing list.

If you want a second opinion on your abandoned checkout recovery configuration before you touch anything, the first 15 minutes with a help1 expert are free and this exact check runs about a five-minute conversation. It is one of the diagnostics that comes into our chat queue most often, precisely because Shopify shows the flow as green when it is quietly reaching one abandoner in four.

What I keep saying

I keep telling merchants to stop treating "Active" on a Shopify marketing automation as evidence that the feature is doing what they assumed. Abandoned checkout recovery is the clearest example: the default is quiet, confident, and wrong. Every store I have seen this on ran that way for months before anyone thought to check the send count. Do not be the merchant who catches it in year two.

Still stuck? Talk to an expert.

Our vetted Shopify experts can fix this issue for you in a live session. $39 per session. Your first 15 minutes are free.