Key takeaways
- Free shipping is not a law of ecommerce. It is a discount on fulfilment. If your average parcel costs more than the lift in AOV, you are buying orders with shipping.
- Heavy, low-price, or made-to-order goods often should not run a threshold at all. Show a delivery estimate and a paid rate instead.
- A threshold set below the cost of the average parcel is a leak, not a goal.
- Alternatives that often win: flat rate, free on this collection, or a progress bar aimed at a gift rather than postage.
- Do not advertise a threshold you do not honour. That is a policy problem, not a cart-app problem.
Skip store-wide free shipping on Shopify when the average parcel costs more than you gain from a larger basket. Free shipping is a discount on fulfilment, not a law of ecommerce. A threshold that sits under the real cost of the box is a recurring discount you forgot to name.
The internet treats free shipping as mandatory. Your P&L does not.
Free shipping is a discount on fulfilment
A threshold says: if the shopper adds enough, you will eat postage. That can pay for itself when the extra merchandise margin covers the label. It does not pay when the extra item is a cheap add-on, a return waiting to happen, or nothing at all — they were already going to buy, and you gifted the label.
Use a threshold calculator against your own parcel cost and AOV, not against a competitor's homepage slogan.
When a threshold is the wrong product
Skip store-wide free shipping, or set it very high, when:
- Average parcel cost is a large share of AOV (heavy goods, bulky packaging, cold chain).
- You drop-ship internationally and postage is a surprise until checkout.
- Orders are frequently a single low-price item that will never reach a sane threshold.
- You already lose money on the first unit and make it up on repeat — then you are stacking two discounts.
In those stores a progress bar toward "free" trains people to add junk they will return, which is worse than paid shipping.
Furniture, food, and international drop-ship are the usual examples. The expectation of free postage is weaker than the cost. Many shoppers still prefer free shipping, especially in the US. Preference is not the same as profitable for you.
How to tell if your threshold is a leak
Write down:
- Average label cost for the orders that currently qualify as "free."
- The extra merchandise those orders contain versus orders just under the line.
- Margin on that extra merchandise after returns.
If (2) does not cover (1), the bar is a leak. A threshold set below the cost of the average parcel is not a goal.
Worked example: say your average parcel costs $8 to ship and your threshold is $40. A $42 order of one item was going to convert anyway. You just spent $8 to look generous. If shoppers typically add a $12 accessory at 40% margin to cross the line, the extra $4.80 does not cover the label. Raise the threshold, or stop calling it free.
What to run instead
Honest paid rates plus a delivery date. "Arrives Thursday · $6.50" converts better than a fake free that appears as $8.00 at checkout.
Collection-level free shipping. The light, high-margin line can carry a bar. The heavy line cannot. Two policies beat one lie. A store-wide bar that excludes half the SKUs in the small print is how you earn a ticket at checkout.
A gift goal, not a postage goal. If you want the psychology of a threshold without giving away fulfilment, unlock a sample, wrap, or accessory. You still get the "I'm $9 away" behaviour. You do not pretend the carrier is free. Gift wrap as a cart goal is one version of this.
If you still want a bar, the progress bar guide applies — just point it at a gift, not at postage.
If you already promised it
Do not rip the bar out this afternoon. Raise the threshold toward a number that clears parcel cost plus a margin of safety, grandfather the old number in ads until they expire, and move the bar copy to remaining amount so the new number still feels like a task.
Do not advertise a threshold you do not honour. That is a policy problem, not a cart-app problem.
Collection-level and product-level exceptions
You can — and should — offer free shipping only on some products if the rest of the catalogue cannot absorb postage. Put those SKUs in a collection, state the promise on that collection and those PDPs, and keep paid rates on the heavy line.
Pickup, local delivery, and made-to-order are also exceptions. A bar toward "free shipping" on a made-to-order piece that ships in a crate is the wrong product. Show a delivery estimate and a paid rate.
What to put in the cart instead
A delivery estimate, a clear paid rate, and if you still want a goal, a free gift or a quantity break that does not pretend postage is free. Shoppers can do maths. They cannot do a surprise $8 at checkout after a header that said free.
Free shipping is a campaign you can choose. It is not a feature of Shopify.
If you run Markets, do this maths per market. A threshold that works on a domestic letter-box SKU will not work on a cross-border crate. Publish the rule that market can keep, and keep paid rates honest everywhere else.
Frequently asked questions
Doesn't everyone expect free shipping?
Many shoppers prefer it, especially in the US. That is not the same as "it is profitable for you". If your category is furniture, food, or international drop-ship, the expectation is weaker than the cost.
Can I offer free shipping only on some products?
Yes, and you should if the rest of the catalogue cannot absorb postage. A collection-level promise is more honest than a store-wide bar that excludes half the SKUs in the small print.
What do I put in the cart instead of a shipping bar?
A delivery estimate, a clear paid rate, and if you still want a goal, a free gift or a quantity break that does not pretend postage is free.
Is "free shipping" in ads a problem if I do not offer it on the store?
Yes. Do not advertise a threshold you do not honour. That is a policy problem, not a cart-app problem.
How do I know my threshold is too low?
If the threshold sits under the real cost of the average parcel, you are discounting fulfilment on orders that were going to convert anyway. Raise it until it clears parcel cost plus a margin of safety, or stop calling postage free.
What if I already promised free shipping in live ads?
Do not rip the bar out this afternoon. Raise the threshold toward a number that clears cost, grandfather the old number in ads until they expire, and keep remaining-amount copy so the new number still feels like a task.



