Free-Shipping Thresholds: Setting One That Doesn't Cost You Money
Most free-shipping thresholds are round numbers someone liked — $50, $75, $99 — chosen because a competitor used one. But the threshold is not a marketing decision with a margin side effect. It is a margin calculation: the order value at which your gross profit is large enough to swallow a shipping label and still leave something behind. Two formulas set it, and the same two tell you when a supplier price file has quietly invalidated it.
The inputs you need first
Four numbers, all of them already on bills you receive:
- Blended label cost (L) — one quarter of carrier spend divided by shipments. Split parcel from oversize if you ship both; averaging those two is the single most common way a threshold goes wrong.
- Packaging and pick-pack (p) — materials per shipment plus a sane rate on the minutes.
- Payment cost — your processor's percentage
rand fixed feef. - Blended product margin (m) — gross margin across the goods people actually put in baskets, not your catalog average and definitely not your best line.
The worked examples below use L = $6.80, p = $0.85, r = 2.9%, f = $0.30 and m = 35%. Substitute yours; the shape of the answer won't change.
Formula one: where the order stops losing money
An order of value V brings in V × m of gross profit and gives back the label, the packing and the payment cost. Set the difference to zero:
break-even V = (L + p + f) ÷ (m − r)
With our numbers: (6.80 + 0.85 + 0.30) ÷ (0.35 − 0.029) = 7.95 ÷ 0.321 = $24.77. Below that, a free-shipped order costs you money outright. Above it, the order contributes — but at $25 it contributes approximately nothing, which is why break-even is a floor to know rather than a threshold to publish.
Formula two: where the order is actually worth having
Decide what an order must contribute after shipping — call it c, expressed as a share of order value, and remember this has to cover advertising, overhead and the returns allowance that hasn't appeared yet. Then:
threshold V = (L + p + f) ÷ (m − r − c)
Asking for 10%: 7.95 ÷ (0.35 − 0.029 − 0.10) = 7.95 ÷ 0.221 = $35.97. Round up and publish $39. That single subtraction in the denominator is what separates a threshold that survives contact with an ad budget from one that merely avoids an immediate loss.
| Blended margin | Label $5.50 | Label $6.80 | Label $9.00 | Label $12.00 |
|---|---|---|---|---|
| 25% | $54.96 | $65.70 | $83.88 | $108.68 |
| 30% | $38.89 | $46.49 | $59.36 | $76.90 |
| 35% | $30.09 | $35.97 | $45.93 | $59.50 |
| 40% | $24.54 | $29.34 | $37.45 | $48.52 |
| 45% | $20.72 | $24.54 | $31.62 | $40.97 |
Thresholds that leave a 10% contribution after label, packing and 2.9% + 30¢ payment costs.
Read across the 25% row and the discomfort is obvious: a distributor working on wholesale-typical margins needs a threshold north of $65 to give away a normal parcel, and past $100 for anything heavy. Read down any column and you get the other half of the lesson — a 10% relative change in your blended margin moves the threshold about twice as far as a 10% change in the carrier's rate. Which means the number is hostage to the cost field, not to the shipping contract.
What a cost increase does to a published threshold
Suppose a broad supplier increase takes just over 6% off the goods side of the catalog — enough to move a 35% blended margin to 31%. The threshold you published hasn't changed. The threshold you need has:
7.95 ÷ (0.31 − 0.029 − 0.10) = 7.95 ÷ 0.181 = $43.92
From $35.97 to $43.92 — a 22% move in the threshold from a 6% move in cost. This is the same amplification that makes cost creep dangerous everywhere else: the margin sits in a denominator, and small changes to a small denominator are large changes to the result. Every order between $36 and $44 that previously contributed 10% now contributes less, some of them nothing, and the storefront reports nothing unusual because revenue looks fine.
The baskets that clear the threshold and still earn nothing
A threshold set on blended margin assumes baskets behave like the blend. Two kinds routinely don't.
The thin basket
Accessories, consumables and commodity lines often run well below the catalog blend. A $45 order at a 22% blended margin clears a $39 threshold comfortably and delivers: $9.90 of gross profit, less $1.61 of payment cost, less the $6.80 label, less $0.85 of packing — 64 cents. That's a contribution margin of 1.4% on an order that looked like a good day.
The heavy basket
A blended $6.80 label is an average over parcels that cost $4 and parcels that cost $22. Put one oversize item in that same $45 order at your normal 35% margin and the arithmetic is $15.75 − $1.61 − $22.00 − $0.85 = −$8.71. The threshold did its job perfectly; the input it was built on was a fiction for this order. Anything bulky, heavy or awkward needs either its own higher threshold, exclusion from free shipping, or a surcharge — the same logic that makes a single margin floor a bad fit for a mixed catalog, discussed in choosing a margin floor.
The uncomfortable comparison with charging for shipping
Thresholds are usually justified by basket-building: the customer at $32 adds an item to reach $39. Worth pricing that out honestly against the alternative, which is charging near-cost shipping and letting the order stand.
| Scenario | Order value | Gross profit | Fees | Shipping net | Contribution |
|---|---|---|---|---|---|
| $32 order, customer pays $7.95 shipping | $32.00 | $11.20 | −$1.46 | +$1.15 | $10.04 |
| $32 order, customer pays $4.95 shipping | $32.00 | $11.20 | −$1.37 | −$1.85 | $7.13 |
| Adds $9 item to hit free shipping | $41.00 | $14.35 | −$1.49 | −$6.80 | $5.21 |
Packaging of $0.85 is subtracted in every row. Fees are 2.9% of the amount charged plus 30¢.
The upsell every threshold is designed to produce leaves you with half the contribution of the same customer paying full-rate shipping — because the $9 they added carried $3.15 of profit while the label you absorbed cost $6.80. On these inputs, moving from paid shipping to a threshold requires roughly 1.9× the orders to stand still.
Three ways to fund it, priced
- Raise the threshold. Cheapest lever and the least popular internally. On the same inputs, an order sitting exactly at a $39 threshold contributes 11.7%; at a $49 threshold it contributes 15.9%.
- Raise retail across the board. To fund a $6.80 label out of a price uplift on a $40 order you need about 17.5% — the uplift has to survive the payment percentage too. On an $80 order the same label needs only 8.8%. Funding free shipping through price is therefore regressive to order size: your small orders can't carry it and your large ones didn't need it.
- Shrink the label. Letter-mail and flat-rate formats for small items, regional carriers, better dimensional packing. This is the only lever that improves the equation instead of moving who pays, and it is the one most often left untouched because it's operational rather than a setting.
A review cadence
The threshold has three inputs that move on their own schedules, so give it a standing check rather than a launch date:
- After every meaningful supplier price file. Recompute the blended margin on your actual basket mix, not the catalog. If it moved more than a point or two, re-run the formula before deciding it's fine.
- After a carrier rate change or fuel-surcharge move. New L, new threshold, five minutes of work.
- Quarterly regardless. Mix drifts even when nothing is announced — a bestseller with a thin margin can shift the blend on its own, and so can a change in what your customers put in baskets.
Publish the threshold as a round number above the calculated one, keep the calculation in a file next to the number, and note the date and the margin it assumed. A year from now, that note is the difference between "we should probably raise it" and knowing by how much.
The threshold is only as good as the margin behind it
Every formula on this page starts with your blended margin, which starts with current supplier costs. Load your latest price list and your Shopify product export into the free Supplier Price Margin Checker to see where margins stand today — matched by SKU, entirely in your browser.
Open the free checker ↗