Shopify AOV Case Study: 6 Leaks on a Store Doing 2 Orders a Day

Bar chart from a Shopify AOV case study: the cart add-on rail recommended products bought in 0 or 1 of the last 181 orders while PupFlask slings sold in 23 and 21 orders

TL;DR: Tuff Pupper sells dog harnesses on Shopify at 1 to 3 orders a day, with free shipping at $35. The 30-day AOV sat at $36.94, right on the line. Before any new bundle could help, I found six leaks: a discount code that broke free shipping, discounts on the wrong item, an add-on rail pushing products nobody buys, a lying “unlocks free shipping” label, a -$0.00 cart line, and a checkout metric inflated by bots.

I asked ChatGPT for Shopify AOV case studies I could trust. It came back with a table of eight brands, from a dog food store at +15% to a mix-and-match bundle at +61%, and then said most of them were “vendor- or merchant-reported.” It was right. The app that sold the bundle wrote the case study.

So here is one from the other side of the invoice. Logan Edwards runs Tuff Pupper, a rugged dog gear brand whose harnesses run $19 to $60. Most of its revenue comes through Amazon, so the Shopify store is small, and every number below comes from its own Shopify orders.

Download the Shopify AOV leak audit (PDF)

Why this matters for your store

  • If your AOV sits within $5 of your free shipping threshold, that threshold is doing more to your basket size than any bundle app.
  • A discount that knocks a cart under the line costs the shopper more in shipping than it saves them, and they notice at checkout.
  • At under 100 orders a month, a vendor’s “+30% AOV” cannot be replicated or disproved on your store, so you need a different scoreboard.

What did the store look like before any AOV work?

On June 16, 2026, I pulled the baseline from the Shopify orders API. The last 90 days showed a $40.32 AOV. The last 30 showed $36.94, which is $1.94 above the $35 free shipping line. Repeat buyers were 23% of 90-day orders.

That $36.94 was the first finding. A shopper buying one $21.96 harness is $13.04 short of free shipping, and most carts looked like they had been built to just clear the line and stop. Shopify’s own AOV guide calls free shipping “a commonplace but still highly effective way to nudge customers to spend more.” True, as long as nothing else on the store quietly moves the line.

The store already had a Build-the-Kit picker on every harness page (harness, harness plus leash, or the full kit) and 11 automatic Buy X Get Y discounts behind it. The bundle machinery existed. What it lacked was an audit of how the pieces interacted.

Leak 1: why did AOV drop in June?

June AOV fell to $36.42. Order count was up on May. The cause was a 20% discount code, TUFF20, that had been circulating.

Here is the arithmetic nobody had run. Free shipping at $35 is checked against the cart after discounts. A 20% code means the shopper needs a $43.75 cart before the code to still clear $35 after it. A $39.88 cart with TUFF20 lands at $31.90 and pays shipping. Shoppers would see free shipping in the cart drawer, enter the code at checkout, and watch shipping reappear. Baymard’s research puts “extra costs too high” at 40% of abandonment reasons, and a shipping fee that appears after the discount is exactly that.

I proposed two fixes to Logan: a short cart line saying “Free shipping on orders over $35 after any discount,” and an optional $44 minimum on the code so the code and free shipping work together.

Leak 2: which item should a bundle discount go on?

The spec for September called for six new Buy X Get Y bundles at 10% off. Before creating them, I enumerated every in-stock variant combination against the $35 line.

Discounting the harness broke free shipping on three combinations. The clearest: a $14.96 leash plus a $21.96 harness is $36.92. Take 10% off the harness and the cart drops to $34.72. The shopper saves $2.20 and pays $7.00 in shipping. Discounting the cheaper accessory never pushed a cart under the line, because the saving is smaller than the headroom.

The rule the store runs on now: the accessory is always the “get” item. It sounds like a small detail. It is the difference between a bundle that raises AOV and one that trains shoppers to abandon.

The same pass found that two of the six planned bundles were duplicates. A $3 “Walking Bundle” already paired each harness with the Avail leash, and $3 beats 10% of $14.96. One was a duplicate, two waited on Logan’s call about PupFlask pricing, and three went live.

Leak 3: was the add-on rail recommending the right products?

The cart drawer had an add-on rail under the free shipping bar, recommending small items to close the gap. The lists had been set by hand. I counted what customers actually bought together across the last 181 orders, and the chart at the top shows the result.

The poop bag holder was in 4 of 7 rail lists and led the leash context. It appeared in 1 order out of 181. A bone toy sat in 4 lists with 1 order and only 5 units in stock. The comb that led the grooming list had 0 orders. Meanwhile the PupFlask bottle slings, in 23 and 21 orders, were barely shown.

The strongest real pairing was the Avail leash bought with a harness in 11 of 30 harness orders. It already led the harness context, so it stayed. The collar and grooming contexts had no real co-purchase signal at all (9 and 16 orders, zero consistent pairs), so I ranked those by overall units sold instead of inventing pairs from one or two orders.

This is the leak I see most on small stores. Recommendations get set once during a theme build and never checked against line-level order data. No app fixes that for you, and if you do want one, the Rebuy vs UpCart comparison covers what each costs in speed and subscription.

Leak 4: when is “unlocks free shipping” a lie?

After the re-rank, a fresh audit caught a bug I had widened myself. The rail tagged items “Unlocks free shipping” when their ticket price covered the gap. But the Avail leash is the discounted item in five $3 Walking Bundles.

Live test, Metro harness in X-Large: cart $21.96, gap $13.04. The rail labels the $14.96 leash as unlocking free shipping. Add it and the bundle discount applies, so the cart reads $33.92. The shopper is $1.08 short after being told they would qualify.

The fix compares the gap plus the largest automatic discount on the store ($5.00, the Complete Bundle) against the item price. If a bigger automatic discount is ever created, that constant has to change with it, so it lives as a named setting in the snippet.

Leak 5: why did every bundle show “-$0.00”?

A Buy X Get Y discount allocates nothing to the item the shopper buys, only to the item they get. The cart drawer printed a discount line under both, so every bundle showed a second line reading -$0.00. To a shopper that reads like a discount the store refused to give.

The drawer now skips zero-value discount lines and only renders the list when a real saving survives. On staging and then live, a Bath Bundle cart shows exactly one line: -$2.19.

Leak 6: was the checkout actually broken?

In August, Shopify analytics showed an 18.7% checkout completion rate over 60 days. Healthy stores sit far higher, and the obvious move was a cart recovery project. I nearly wrote one into the September plan.

Then I lined up the months. Completed orders were flat at 61 to 81 every month from March to August. Reached checkout fell from 1,521 in April to 392 in August on flat sessions. A real checkout fault moves completed orders. This one only moved the denominator, which means bots had been inflating “reached checkout.” Search traffic alone completed at 59.7%, and converted at 1.13%, against a blended 0.84%.

That read saved the client a month of work on a problem that did not exist. It is also why I will not quote a blended conversion rate for this store.

How do you measure AOV honestly at 60 orders a month?

ChatGPT’s advice here was sound: skip the 50/50 A/B test and run a controlled before and after. A standard sample size calculator shows why. At 60 orders a month, a split test on a modest AOV change runs for many months, and one $120 multi-dog order moves the monthly AOV by more than a dollar.

What I track instead, with the September 1 baseline:

Metric Baseline Why it survives low volume
Single-item order share 48.6% A count, not an average, so one big order cannot swing it
AOV $42.46 Reported, never claimed as a lift inside 30 days
Kit adoption Line-item property on every kit add Counts exactly which orders used the picker
Organic sessions 1,778 a month Separates traffic growth from basket growth

One more check most case studies skip. Tuff Pupper’s Shopify sales were already climbing from February to April, before I started in May. April was the best month and it predates the engagement. So any “since I started” chart would take credit for a trend that was already there. I report the September read against the September baseline and nothing earlier, and I will add that read to this post when the month closes.

What did not need a discount at all?

The PupFlask insulated bottle already attaches well: 68% of 27 oz bottle orders and 65% of 40 oz orders include something else. The bottle and matching sling bundle ($25.96 plus $11.96, so $37.92) clears $35 on its own, and Logan chose to run it with no discount. The free shipping line does the work.

The real targets are the products that sell alone. The feeding mat and the Super Big Slurp bowl sold solo 100% of the time over 60 days, and the Tracker harness 50%. Those are first in line for product page pair rails. Putting a discount on something that already attaches just gives away margin.

What should you ask before hiring someone to raise your AOV?

Ask how they will measure it at your volume. If the answer is “we’ll A/B test it” and you do 2 orders a day, they have not done the math. Ask what number would make them call it a failure, and get it before work starts. My hiring questions post has an answer key for the technical side.

Then ask for the leak audit first. Every fix above was cheap: a cart line, a re-ranked list, a changed constant, a hidden -$0.00 row. None needed an app. If you do want a native kit picker, the build is written up in how to build a Shopify bundle without an app, and the gap-closing bar is in the free shipping progress bar guide.

How to verify your own AOV leaks in 5 minutes

  1. Open Shopify analytics, set 30 days, and subtract your free shipping threshold from your AOV. Under $5 means the threshold is your main lever.
  2. Put your cheapest harness-and-accessory pair in the cart, apply your most used discount code, and check whether free shipping survives at checkout.
  3. Export the last 180 orders and count how often each add-on rail product appears. Anything with 0 or 1 orders comes out of the rail.

If you would rather hand that to someone, send your store URL through the contact form and I will reply with the first three leaks I would fix. The high-ticket CRO case study shows the same method on a $450 AOV store.

The takeaway

  • Check where AOV sits against your free shipping line before buying a bundle app.
  • Put bundle discounts on the cheaper accessory so no cart drops back under the threshold.
  • Rank add-on recommendations by real co-purchase counts, and cut anything with 0 or 1 orders.
  • Test every “unlocks free shipping” label against the discounted total, not the ticket price.
  • Measure single-item order share and kit adoption at low volume, and never claim a lift on a trend that started before the work.

I am Kaspian Fuad, a Shopify developer and CRO consultant. I publish the baseline, the dates and the caveats for every engagement I can talk about, including the ones where the answer is “not enough orders yet.” If your AOV is parked on your free shipping line, book a call and bring your last 30 days of orders.

Frequently Asked Questions

How much can bundles raise AOV on a small Shopify store?

Vendor case studies usually report 6% to 30% AOV lifts, but most come from the app that sold the bundle. On Tuff Pupper, a dog gear store at 1 to 3 orders a day, the first gains came from fixing leaks (a discount code breaking free shipping and an add-on rail pushing products nobody bought) before any lift percentage could be measured honestly.

Can a Shopify discount break the free shipping threshold?

Yes. A price-based free shipping rate is checked against the discounted cart total, so a discount can push an order back under the line. On Tuff Pupper, 10% off a $21.96 harness turned a $36.92 cart into $34.72, saving the shopper $2.20 and costing them $7.00 in shipping. Put the discount on the cheaper accessory instead.

What should a Shopify cart add-on rail recommend?

Products that customers already buy together, ranked by order count. On Tuff Pupper, a count across the last 181 orders showed the rail leading with a poop bag holder bought in 1 order and a comb bought in 0, while PupFlask slings sold in 23 and 21 orders. Re-rank by real co-purchases before testing anything else.

How do you measure AOV honestly at 1 to 3 orders a day?

Track single-item order share and bundle adoption rate over at least 30 days instead of claiming an AOV percentage. At 60 orders a month, one large order moves AOV by a dollar or more. Tuff Pupper’s September baseline was a 48.6% single-item share and a $42.46 AOV, measured before the changes shipped.

What should a real Shopify AOV case study include?

The starting AOV, the free shipping threshold, the exact dates compared, the order count in each window, and whether the trend was already rising before the work started. A case study reporting only ‘+27% AOV’ with no order count cannot tell you if it rests on 30 orders or 30,000.

Part of the CRO guide.

Book Strategy Call