Key takeaways
- A Shopify free shipping threshold is the cart value a shopper has to reach to get free delivery. Set it right and it lifts average order value; set it wrong and it eats your margin.
- The defensible method is math, not a round number. Start from your current AOV, set the threshold a reachable stretch above it (a common starting point is 15-30% higher), then confirm your margin can absorb the shipping cost at that order value.
- A shopper only bumps their order up if the message is visible. A free shipping bar with “You’re £X away” and a small cross-sell to help them get there do most of the work.
- Judge the change on AOV, conversion rate, and margin together. A higher AOV that tanks conversion or margin is a loss.
- Fudge builds the progress bar and cart messaging as native theme code, so there is no widget or monthly app fee.
Free shipping is the offer shoppers expect, and the cost of shipping is one of the most cited reasons carts get abandoned at checkout.1 A Shopify free shipping threshold turns that expectation into a lever: instead of giving shipping away on every order, you give it away once the cart crosses a value you choose.
The hard part is choosing that value. Set it too low and you subsidise orders that would have happened anyway. Set it too high and shoppers ignore it. This guide shows how to set the number from your own data, with a worked break-even example, and how to build the messaging that makes it work.
Why you can trust us
We have worked in the Shopify space for over four years and helped hundreds of stores tune their cart and checkout experience. We build Fudge, an AI storefront editor with a 5.0 rating on the Shopify App Store, so we work on the same theme layer the free shipping bar lives on and see which thresholds actually move revenue.
Why free shipping thresholds work
Two things happen when you put a threshold in front of a shopper.
First, it removes the single biggest objection at checkout. Unexpected shipping cost is a leading cause of abandonment, so a clear path to free delivery reassures the shopper before they hit the payment step.
Second, it reframes the decision. A shopper sitting at £45 with a £50 threshold is no longer deciding whether to spend more. They are deciding whether to “waste” the £5 of value already in reach. That is a much easier yes, and it is why a well-placed threshold nudges average order value up.
The catch is that free shipping is not free to you. Every order below the old paid-shipping line now costs you the delivery. The threshold only wins if the extra order value it creates covers that cost. That is a margin question, and it is where most stores guess instead of calculate.
How to set your Shopify free shipping threshold
The wrong way is to copy a competitor or pick a round number that feels nice. The right way has three steps: read your AOV, set a reachable stretch above it, then check the margin math.
Start from your AOV and its distribution
Open your Shopify analytics and find your average order value. Then look past the average to the shape of your orders.
Two stores with the same £48 AOV can need very different thresholds. One might have most orders clustered tightly around £45 to £55. The other might have a long tail of £20 orders balanced by a few £150 ones. The tight cluster responds well to a threshold just above the cluster. The spread-out store needs a threshold that a typical small order can plausibly reach.
Look at your order value distribution, not just the mean. The question you are answering is: what number is a believable stretch for a shopper who is already most of the way there?
Set a reachable stretch above AOV
A common starting point is to set the threshold 15% to 30% above your current AOV. Treat that as a heuristic to test, not a law.
The logic is that the threshold has to be higher than what people already spend, or it does nothing. But if it sits far above the typical order, shoppers write it off as unachievable and it stops influencing behaviour. A reachable stretch is close enough that adding one more item gets them there.
If your AOV is £48, that range points to a threshold somewhere between roughly £55 and £62. Which end you pick depends on the next step.
Check the margin math
Before you commit to a number, confirm your contribution margin can absorb the shipping cost at that order value.
The rule of thumb: at the threshold, the extra margin earned when a shopper bumps their order up should at least cover the shipping you are now giving away.
Say a shopper who would have stopped at your AOV adds items to reach the threshold. The gap they close is the incremental spend. Multiply that gap by your contribution margin to get the extra profit, then compare it to your shipping cost.
| Input | Example value |
|---|---|
| Current AOV | £48 |
| Contribution margin | 55% |
| Average shipping cost you absorb | £6 |
| Proposed threshold (25% above AOV) | £60 |
| Gap a typical shopper must close | £12 |
| Extra contribution on that £12 | £6.60 |
| Net after covering £6 shipping | +£0.60 |
The break-even is easy to state. To cover £6 of shipping at a 55% margin, a shopper needs to add at least £6 / 0.55 = £10.90 of product. Since the gap to a £60 threshold is £12, the typical shopper who bumps up leaves you slightly ahead on that order, plus a higher AOV to compound.
A worked example
Follow the £48-AOV store through the full decision.
At a £60 threshold, a shopper sitting at £48 sees “You’re £12 away from free shipping.” They add a £12 accessory. Your contribution on that add is 55% of £12, which is £6.60. You forgo the £6 shipping charge. Net, you are £0.60 up on that order and the order itself is 25% larger.
Now the honest part. Shoppers who were already going to spend £70 now get free shipping you used to charge for. On those orders you simply lose the £6, with no bump to offset it. Whether the threshold wins overall depends on how many shoppers you pull up versus how many were already above the line.
That is why the number is a starting point to test, not a fact to trust. If most of your orders already clear £60, a £60 threshold mostly gives away shipping for nothing. In that case, raise it. If almost nobody reaches £60, lower it or the message becomes noise.
Implementing the threshold on your store
A threshold only changes behaviour if shoppers can see how close they are. That means live messaging in the cart and drawer, plus an easy way to close the gap.
Add a free shipping progress bar
The core piece is a free shipping bar that updates as the cart changes: “You’re £X away from free shipping” while below the line, and a confirmation once the cart qualifies.
In Liquid, the cart total is exposed in cents on cart.total_price, so the remaining amount is a subtraction and a money filter:
{% assign threshold = 6000 %}{% comment %} £60.00 in cents {% endcomment %}
{% assign remaining = threshold | minus: cart.total_price %}
{% if remaining > 0 %}
You're {{ remaining | money }} away from free shipping
{% else %}
Your order qualifies for free shipping
{% endif %}
Pair the text with a visual bar that fills as the cart approaches the threshold, and show it in the cart drawer so it updates the moment a shopper adds an item. For a full build, see how to add a dynamic free shipping bar in Shopify.
Pair it with cross-sells
Telling a shopper they are £12 away is only half the job. The other half is handing them something to add.
A cross-sell in the cart that suggests a relevant, appropriately priced item closes the gap for the shopper instead of making them go hunting. The best add-on for this is a complementary product priced close to the remaining amount, so one tap gets them over the line.
See how to add cross-sells in the Shopify cart for the mechanics. The threshold and the cross-sell reinforce each other: the bar creates the goal, the cross-sell provides the path.
Set the shipping rate itself
The messaging is only the front end. You still have to configure the actual free rate in Settings > Shipping and delivery, adding a free shipping rate that applies to orders over your threshold in each relevant shipping zone. The on-page bar and the checkout rate must use the same number, or shoppers who “qualify” still get charged and abandon.
Testing: measure AOV, conversion, and margin together
The mistake here is watching a single metric. Average order value is the obvious one, and a threshold almost always raises it. That number alone can hide a loss.
Track three things together:
- Average order value. Did it rise, and by enough to matter?
- Conversion rate. A threshold that feels out of reach can depress conversion. A higher AOV that comes with fewer completed orders can be a net loss.
- Contribution margin per order. Free shipping is a real cost. Confirm the margin after shipping still holds at the new threshold.
Run it as a real test where you can. Compare a period at one threshold against a period at another, or test thresholds against each other, and let the combined effect on revenue and margin decide. For the wider framework around cart and checkout experiments, see our Shopify CRO guide.
A higher threshold usually lifts AOV but risks conversion. A lower one converts more but gives away more shipping. The best number is the one that maximises profit across all three metrics, and you only find it by measuring.
Multi-currency and regional considerations
If you sell across regions, one threshold rarely fits all of them.
Shipping costs, typical order values, and currency values differ by market. A £60 threshold that works in your home country may convert to an awkward or unreachable figure elsewhere, and your delivery cost to a distant region can be far higher than the margin a threshold-sized order provides.
At a high level: set thresholds per market rather than converting one number across all of them, and check the margin math separately for each shipping zone. Shopify Markets lets you configure shipping rates by region, so the free rate and the on-page message can both reflect local reality. A threshold that is profitable at home can be a loss-maker on cross-border orders if you apply it blindly.
Where Fudge fits
Fudge is an AI storefront editor that writes native theme code. You describe the free shipping bar you want, and it writes the Liquid, CSS, and JavaScript straight into your theme.
Because the output is native, there is no third-party widget loading on every page and no monthly bar fee. The progress bar, the cart messaging, and the cross-sell that helps shoppers reach the threshold read like your storefront, not a bolted-on app.
And because it is theme code, it survives uninstall. Cancel Fudge and the bar stays exactly where it is. You can build the same way anything else you make with the Shopify store editor lives on.
Set the threshold with the math above, then have Fudge build the messaging that makes shoppers act on it.
FAQ
There is no universal number. Set it from your own average order value: a common starting point is 15-30% above your current AOV, high enough to nudge spending but close enough to be reachable. Then confirm your contribution margin covers the shipping cost at that order value, and test it.
Above. If the threshold sits at or below your average order value, most shoppers already qualify and you give away shipping without changing behaviour. Setting it a reachable stretch above AOV is what encourages shoppers to add an item to close the gap.
Check the break-even. Divide your shipping cost by your contribution margin to find how much extra product a shopper must add to cover the free delivery. If that amount is smaller than the gap between AOV and your threshold, shoppers who bump up leave you ahead. Then watch margin per order over time, not just AOV.
It usually does, provided shoppers can see how close they are. A progress bar showing You're £X away plus a relevant cross-sell to close the gap is what turns the threshold into higher AOV. Without visible messaging, the threshold has little effect.
No. A free shipping bar is a small amount of theme code that reads cart.total_price, subtracts it from your threshold, and shows the remaining amount in the cart and drawer. Apps are quicker to install but add a monthly fee and extra JavaScript. You can build it natively, or have Fudge write it into your theme.
Usually not. Shipping costs, order values, and currencies differ by market, so a threshold that is profitable at home can lose money on cross-border orders. Set thresholds per market with Shopify Markets and run the margin math separately for each shipping zone.
Footnotes
-
Baymard Institute, “Cart Abandonment Rate Statistics” - extra costs such as shipping are consistently among the most cited reasons shoppers abandon checkout. https://baymard.com/lists/cart-abandonment-rate ↩