
You set your shipping rates once. Probably in month one, probably copied off a competitor, probably a flat number that looked normal then. Your catalog, your carrier invoice and your average order have all changed since. That number has not.
It is now the most expensive line in your checkout. Baymard Institute puts the average documented online shopping cart abandonment rate at 70.22%, calculated across 50 separate studies. In its research into why people abandon during checkout, extra costs, meaning shipping, tax and fees, sit at the top of the list. Ahead of trust. Ahead of a slow site. The order breaks on a number that appears after the buyer already decided to buy.
That is a pricing problem dressed as an operations problem, and it gets more expensive in late November, when every click that reaches that checkout costs more. Shipping pricing is four decisions. Most stores made one on purpose and inherited the other three.
Find out what shipping costs you right now
Before you change a rate, get three numbers for the last 90 days.
- Shipping charged to customers. Total shipping revenue, divided by order count.
- Shipping paid to carriers. Carrier invoices for the same period, plus boxes, filler and labels, divided by the same count.
- The gap. Subtract. That is what every order quietly takes out of your margin, or hands back to it.
Take the second number from your carrier invoices, not the rate table in your admin. The rate table says what you meant to charge. The invoice says what happened, including every surcharge, dimensional weight adjustment and residential delivery fee nobody modelled.
If you cannot state those three numbers, you do not have a shipping strategy. You have a shipping setting.
Decide when the buyer learns the number
This decision moves abandonment, and it is separate from how much you charge.
Shopify’s documentation on shipping rates puts the options plainly: you can charge flat rates that you set, offer free shipping, or use carrier-calculated rates where shipping carriers such as UPS or FedEx determine the shipping cost based on the order details. Its own summary of the tradeoff: flat rates for predictable pricing, carrier-calculated rates for real-time accuracy.
Read that as a visibility decision. A flat rate is a number you can state on the product page, in the cart drawer and in the announcement bar, before anyone types an address. A carrier-calculated rate does not exist until the address does, so the buyer meets it at the last step, at the worst possible moment.
Accuracy that arrives too late is not accuracy. It is a surprise.
My rule: if your catalog is roughly uniform in size and weight, go flat and publish that number everywhere people look before checkout. If it spans a candle and a coffee table, you need calculated rates for the heavy end, and a warning before anyone gets there.
Pick the mechanism, not just the price
Three ways to charge, and they solve different problems.
- Flat. One rate per zone. Easiest to communicate, easiest to get wrong on your heaviest items.
- Order amount-based. Shopify also calls these price-based rates: different shipping prices based on the total value of the order. This is the mechanism behind a free shipping threshold.
- Weight-based. Different prices based on the combined weight of items shipping from the same location with the same shipping option. Both conditions have to hold. Split one order across two locations and the tier you expected is not the one that applies.
Every tier takes a minimum and a maximum. Leaving the maximum empty means no upper limit: what you want on your top tier, and a common cause of quiet breakage when you forget it.
If a few oversized items keep wrecking a flat rate that works for everything else, that is what shipping profiles are for. They let you set different shipping rules for specific products and locations, so the coffee table carries its own rate and the candles stop paying for it.
Set the free shipping line from your own average order
Shopify’s example minimum for free shipping is $50 USD. That is a help article showing you where to type a number, not a benchmark. Copying it is how stores give away delivery on orders that were never profitable.
The threshold has one job: move the order that would otherwise have been smaller. So it sits above your current average order value, close enough that one more item gets the buyer there.
Here is the shape of it, with made-up numbers, because yours are the only ones that matter. Average order value $74, average item $28, and $11.40 per order to send it. A threshold at $80 asks a typical buyer to add nothing, so it changes no behaviour and still costs you the $11.40. A threshold at $140 asks for two more items and gets ignored. A threshold around $95 asks for exactly one, and the margin on that item has to cover the $11.40 you stop charging. The free shipping threshold calculator does that arithmetic with your real numbers.
The trap that makes free shipping fail silently
Free shipping with no conditions applies to every order that the rate covers. Free shipping set up alongside order amount-based or weight-based rates applies only when an order falls within a tier that covers its total or its weight. So if your top tier stops at $200 and someone orders $240, that order sits outside every tier, and gets the wrong rate or none at all.
Test it instead of trusting it. Put three orders through: one just under the threshold, one just over, one large enough to clear your highest tier. If shipping cost was what killed your checkout, the rest of that work is in how to reduce cart abandonment without discounts.
Do this in September, not November
Black Friday 2026 is November 27. Cyber Monday is November 30.
A shipping threshold is one of the few changes you cannot read quickly. You need weeks of clean orders before you know whether average order value actually moved or you just charged less for the same basket. Change it on November 20 and every signal is contaminated by the promotion next to it.
October goes to campaign production. November should be frozen, because anything you change during peak is something you debug during peak. That leaves right now, which is why this belongs in the same window as the Q4 prep checklist I run.
What I would do this week
Pull 90 days of shipping revenue and 90 days of carrier invoices, and work out the gap per order. Decide flat or calculated on how uniform your catalog really is, then publish the flat number where people look before checkout. Rebuild your tiers with an empty maximum on the top one, set the threshold from your own average order value, and push three test orders through it. One afternoon, and it prices every order you take for the rest of the year.
If you would rather have someone find every fixable problem in the store at once, that is a Growth Audit. $497, 72 hours, and what is broken gets found, named and ranked by what it is costing you. The fee credits toward any Sprint within 30 days, and Sprints start at $3,500 and run 14 days. Booked in September, that is finished with weeks to spare before November 27.
Frequently asked questions
How much should I charge for shipping?
Start from your own numbers instead of a competitor rate. Take 90 days of shipping revenue divided by order count, then 90 days of carrier invoices plus packaging divided by the same count. The gap between them is what each order takes out of your margin. Then decide deliberately how much of that gap you absorb as a cost of sale and how much you pass on. A copied rate is priced for a different store, with different packaging, zones and carrier contract.
What should my free shipping threshold be?
Above your current average order value, and close enough that adding one item gets a buyer there. Shopify uses $50 USD as an example minimum in its documentation, but that is a placeholder in a help article, not a benchmark. If your average order is $74 and your average item is $28, a threshold near $95 asks for one more item. A threshold at $140 asks for two and gets ignored.
Why does my free shipping not apply to some orders?
Usually because free shipping was set up alongside conditional rates. Free shipping with no conditions applies to every order that the rate covers. Free shipping combined with order amount-based or weight-based rates applies only when an order falls within a tier that covers its total or its weight. An order above your highest tier maximum sits outside every tier you defined, so it gets the wrong rate or none. Leave the maximum field empty on the top tier.
Ready to fix what's broken?
Stop guessing and get a real diagnosis. Book a Growth Audit or jump straight into a Sprint.
Find this useful? Make Ecomm Decoded a preferred Google source → so it shows up first when Google answers your ecommerce questions.