Introduction
For Shopify stores, the best way to approach abandoned cart recovery is to treat it as three separate layers that work side by side: email, SMS, and retargeting ads.
Each layer reaches shoppers the other two miss, so running all three together brings in real extra revenue. The catch is that it brings in less than the total on your three dashboards, because each platform counts the same sale as its own win.
There are a lot of shoppers to win back. The Baymard Institute puts the average cart abandonment rate at 70.22%, based on 50 studies. In simple terms, most people who add something to a cart in your store never pay for it.
Our team at Olifant Digital manages $100M+ in annual client revenue across 50+ brands, and our senior specialists use the same recovery setup on every Shopify account we manage.
The rule is simple: give each layer its own budget and its own report, then compare all of them to the orders Shopify actually recorded.
How much extra revenue should you expect from stacking recovery channels?
Stacking channels brings in more revenue than any one channel on its own, but less than your three dashboards add up to.
When Klaviyo says it recovered X, your SMS tool says Y and Meta says Z, add those numbers together and compare the total with the orders Shopify recorded from those same shoppers.
Here is a simple example. A shopper leaves a $60 order in their cart, gets your email, reads your text, scrolls past your Meta ad and then buys.
Shopify records one $60 order. All three platforms can claim they recovered $60, so on paper you recovered $180, while the real number is $60.
This is why we measure the whole stack with a single number: Shopify orders from shoppers who abandoned a cart. Purchase is the only conversion we use for email, SMS and retargeting, so every channel is judged on the same metric.
How to measure abandoned cart email lift
Every platform shows you the revenue it claims it drove. What you really want to know is how much revenue you would lose if the flow stopped running tomorrow. That is the real lift. Four steps get you there:
- Pull your ledger. Export the Shopify orders from shoppers who abandoned a cart. Shopify counts each order only once, so this is the number every other report is compared to.
- Add up the claims. Add what each platform claims for the same period. The gap between that total and the Shopify figure is your double counting.
- Hold out a group. Pick a random group of abandoners who get no recovery messages at all, and compare their purchase rate with the group that does get your messages. The difference between the two groups is the real lift. This is the step most brands skip, and it is the most useful one.
- Use one attribution window. Apply the same window to every channel, for example 7 days. If one tool counts sales over 30 days and another only over 5, the first one will look stronger for no real reason.
Run this check every week while you are still building the stack. Once the numbers settle, once a month is enough.
Why email and SMS attribution overlaps
Email and SMS tools can credit a sale to a message the shopper only opened. The shopper never clicked or visited the store, but the revenue still shows up in the report. Klaviyo says it counts conversions from opens and clicks, including emails that were opened automatically by Apple Mail Privacy Protection.
So some of the “opens” in your report were never a person reading anything.
Here is the simple example we use with clients.
A shopper opens your email and does not click anything. Four days later they buy, and Klaviyo counts that sale as its own. Meta showed the same shopper your catalog ads, and your SMS tool texted them in the same week.
Inside Klaviyo, each order has only one winner. It credits the last message the shopper interacted with inside the attribution window, so email and SMS never both get credit for the same order there.
The double counting happens between platforms. Meta, Google and any separate SMS tool each keep their own reporting, and Google Ads uses a 30-day click window by default. Each of them can book the same order as if it were the only reason the shopper came back.
| Channel | Who claims the order | What to check |
|---|---|---|
| Klaviyo, inside the email window | Window length, and whether opens earn credit | |
| SMS | Klaviyo or a separate SMS tool | Window length, and whether a second tool also reports |
| Retargeting ads | Meta or Google, in their own reports | The attribution setting in each ad account |
| Shopify | The order itself, counted once | The total every claim has to fit inside |
The most important row is Shopify at the bottom, because that is the total every other claim has to fit inside. If your email, SMS and ad claims combined are higher than your Shopify orders, the difference is double counting.
Klaviyo vs. SMS attribution: what to check in your settings
First, write down the attribution windows you currently use.
For new accounts, Klaviyo defaults to 5 days for email clicks, 5 days for email opens, 5 days for text message clicks, 1 day for text message opens and 12 hours for text message deliveries. You can see what your account uses under Settings, then Attribution.
Then check whether opens get credit at all. Revenue from opens is the least reliable line in the whole report, and it is the first line we discount when we audit an account.
Next, list every other tool that reports the same order. Each one books the sale on its own, and Klaviyo cannot see those claims.
Finally, reconcile these numbers with Shopify every week before they go into the monthly review where you look at profit and set budgets.
Browse abandonment vs. cart abandonment: where the revenue comes from
Most stores focus on the cart flow: the emails sent when someone adds a product to the cart and leaves without paying. A browse abandonment flow targets people who viewed a product but never added it to the cart.
There are more of those people, so the browse flow can bring in more revenue than the cart flow.
We saw this on a Shopify brand we work with. We tested a tool that identifies shoppers the store could not email before, and it ran its own browse and cart flows inside Klaviyo.
Over 30 days, Klaviyo attributed about 70% of the revenue from those extra flows to browse abandonment and 30% to cart abandonment. That is Klaviyo-reported revenue, not a holdout test, but it came from shoppers no other flow on the account could reach.
So build both flows and keep them apart. Set the browse flow to trigger on product views. Klaviyo can only track identifiable browsers, so every new subscriber you add makes this flow bigger over time.
Keep browse, cart and checkout as separate flows. Separate flows give you separate revenue lines, so you can see what each one actually does.
Once they are running, reconcile each flow to Shopify orders with the steps above, then put your copy and design time into the flow that brings in real orders.
Why retargeting needs its own budget
If retargeting sits inside a general campaign, you cannot see how much it spends or how much it brings back. Its sales get mixed with new customer sales, its spend disappears into the overall campaign, and there is no way to tell what a recovered order actually costs.
That is why Flaske, a reusable bottle brand we work with, runs its Google remarketing as separate campaigns at about €30 a day each. Remarketing spend and return now show up on their own line in every report.
A separate campaign also shows you where your offer should really live. For another brand, only 25 to 30% of shoppers were opening the cart abandonment emails, so most people who abandoned never saw the offer.
For them, we planned a remarketing campaign with a 10% discount that Shopify applies automatically. The offer reaches shoppers in the ad itself, with no code to copy and type in at checkout.
It is still a plan, so there are no results to share yet. If you want to try something similar, check the Shopify discount gap we cover below before you launch anything.
How to set a retargeting budget for cart abandoners
Create one campaign that targets only your add-to-cart and checkout-started audiences and excludes everyone else. This gives you a clean spend line and a clean sales line.
Start with a small fixed daily budget, like the €30 a day Flaske uses, before you think about scaling. Optimize for purchases, the same outcome you already use to judge email and SMS.
First start on a small fixed daily budget, like the $35 Flaske uses, before you consider scaling. Set it to optimize for purchase, the same outcome you already use to judge email and SMS.
Exclude recent buyers from the audience. Showing ads to someone who already bought costs money and does not recover a single order.
Every week, check cost per order and return on ad spend (ROAS) against Shopify orders, and only raise the budget when Shopify orders go up together with the spend.
The Shopify discount gap that lets recovery discounts stack
A Shopify discount can require a minimum purchase amount or a minimum number of items. What Shopify does not offer is a matching maximum, and that is where recovery discounts cause problems.
A brand we work with sells two-packs and family bundles at a lower price per item. Its abandoned checkout flow offered a 10% discount, and that email only went to shoppers with one item in their cart.
The problem: once a shopper had the code, nothing stopped them from adding more items, so the 10% could land on top of the bundle price. Shopify's default settings have no way to switch the discount off above a certain quantity.
Every stacked order like that cuts into your margin, and it happens with a shopper who was already close to buying. Because the discount logic sits in checkout, we review it as part of conversion rate optimization for Shopify stores.
How to close the gap
First, exclude bundle products from recovery discounts. A bundle already has its own discount, so it does not need a second one. Limit the discount to specific products or collections so only those products count toward the minimum.
Under Maximum discount uses, set how many times the discount can be used, for example once per customer, so the recovery code does not get passed around.
Also check the Combinations setting on each discount. Shopify discounts do not combine automatically, so make sure combinations are off for any discount your bundle pricing depends on.
Before you go live, test a real cart: add a bundle and a few extras, apply the recovery discount and check the total. Then run the same test on any discount link you use in an ad.
Where does Amazon fit when you run Shopify recovery?
If you also sell on Amazon, some shoppers who abandon a Shopify cart will finish their purchase on Amazon instead.
When you compare platform claims with Shopify orders, remember that some of the “missing” buyers may have bought from you on Amazon. Start by defining each channel’s role, as we explain in our guide on how Amazon and DTC compare for established brands.
To see how the two stores compete for the same shopper, read our guide to channel conflict between Amazon and Shopify.
From our accounts
| Situation | Type | What we saw | What to do |
|---|---|---|---|
| Shopify brand, extra Klaviyo flows over 30 days | Client result (Klaviyo-reported) | About 70% of the revenue from browse abandonment, 30% from cart | Build a browse flow and report it apart from cart |
| Flaske | Client account | Google remarketing runs as separate campaigns at about €30 a day each | Give retargeting its own budget and report |
| Brand with a 25 to 30% open rate on cart emails | Client plan | Planned: remarketing ad with a 10% discount applied automatically | Put the offer where the shopper sees it, test for stacking first |
| Brand with bundle pricing | Client account | 10% recovery code could stack on bundle prices | Exclude bundles and test carts before launch |
| Klaviyo open-based credit | Our method | A sale four days after an unclicked open still counts | Check your windows and discount open-based revenue |
Frequently asked questions about abandoned cart recovery for Shopify
How do I measure the lift from abandoned cart emails?
Split your abandoners into two random groups. One group gets your abandoned cart emails as normal, the other gets no recovery emails at all. After a few weeks, check in Shopify how many people in each group went on to buy.
The extra purchases in the email group are the sales your emails actually drove. That difference is your lift.
Does Klaviyo double count email and SMS revenue?
Not inside Klaviyo itself. Each order is credited to the last email or text the shopper interacted with, so it is only counted once there. Double counting starts when you add other tools, such as Meta, Google or a separate SMS app, because each of them can claim the same order in its own reporting.
Can I set a maximum cart quantity on a Shopify discount?
Not directly. Shopify's default discount settings have no maximum. You can limit the discount to specific products, exclude your bundles, cap the number of uses and test a stacked cart before the discount goes live.
How much should I spend retargeting cart abandoners?
Start small, around $30 to $35 a day, with the campaign optimized for purchases. Raise it later only if Shopify orders go up together with the spend.
Should I send a discount in my first abandoned cart email?
We usually save it for a later email. The first email should simply remind shoppers that the product is still in their cart, and a lot of them will come back and buy at full price. Once your bundles are excluded, you can offer a discount in a follow-up email to shoppers who still have not ordered.
Your Shopify cart recovery checklist
If you take one thing from this article, give retargeting its own campaign with a fixed daily budget. Here is the full checklist:
- Give retargeting its own campaign and a fixed daily budget.
- Measure email, SMS and retargeting against one metric: Shopify purchases.
- Check how many days each tool keeps counting a sale after someone only opens a message, and do not lean on open-based revenue.
- Run browse and cart flows separately, with separate reports.
- Before any recovery discount goes live, put a bundle in a test cart, apply the code and check that the discount does not land on top of the bundle price.
If you run email, SMS and retargeting at the same time and cannot tell which one actually drives sales, our email and SMS marketing team can help. We give each channel its own budget and a report that shows exactly how many orders it produces. Get your free marketing plan and we will show you where your recovery setup is losing sales.
.webp)
Alex is the founder and CEO of Olifant Digital, where his team manages over $100M in annual client revenue across 50+ e-commerce brands. He sets the agency's strategy and methodology, audits client accounts, and reviews the team's work to make sure every brand is on track to hit its growth and profitability goals. He also leads team training, so the performance data and lessons from across all accounts shape how every account manager runs their clients.


