Free tool · no signup · no upload

Free shipping over $___ — what has to be true?

Drop in your orders export. For each candidate minimum this shows the shipping revenue you would give up — measured from what you actually collected — and the break-even it would have to clear. It does not tell you the number to pick, because the thing that decides it is not in your file.

Your file never leaves this page — everything runs in your browser
On a phone, start here

Try the sample now, or open this page on a computer with your CSV export.

Drop your orders CSV here or click to choose a file — it is read in this tab and goes nowhere
In Shopify: Orders → Export → All orders → CSV
It needs an order value and a shipping charged column. Without the shipping column there is nothing here to measure, and this page will say so rather than guess.

Don't have a CSV to hand right now? See it run on sample data first →

Refuses

It will not name a number, and here is where it stops entirely

No shipping column, no report. The cost side is measured from carriage you actually collected. It is never estimated, and neither is the near-miss band.

If your file was produced under a free-shipping rule you already run, every row is refused — not only the rows above your line, because the orders that would have landed just under it are sitting above it instead.

What comes back is a break-even, not a forecast. The channel these lines actually work through — carts that get abandoned less often — is not in an orders export at all, so nothing here is a verdict on the threshold itself.

The 256-shop sweep behind those rules →

Match your columns

Auto-detected from your header row. Change anything that looks wrong.

This page can usually tell from the file — a rule leaves a mark, because orders over the line stop paying carriage. But it can only see rules that leave that mark, and it can mistake a shop that ships some product lines free for one running a threshold. Your answer wins over anything it works out for itself, and if the two disagree you will be shown both. Leave it blank to let the file speak for itself.

The first five orders, as this page read them

Check one against your own export before going further. If a column landed in the wrong place, this is where it is cheapest to notice.

OrderOrder valueShippingDiscountLine itemsDate

Your file was produced under a free-shipping rule you already have

You and this page read your file differently

Every candidate threshold, and what it would have to clear

Threshold Orders already over it Shipping given up / 30 days Near-miss orders Typical top-up Break-even top-up rate or extra orders

No recommended row, and nothing here is highlighted. The rows are in threshold order, not preference order. What decides which line is right for you is whether your customers top up rather than abandon, and an orders export contains only the carts that converted — so that evidence is not in this file and this page will not pretend it is.

This table scrolls sideways; the first column stays put. When you are back at a laptop with your own export, this page is where it goes — or use the link at the top to send it to yourself.

The two hurdle columns are alternatives, not a total: some of the gap can be closed by near-miss orders topping up and the rest by extra orders, in any mix. A top-up alone result is a finding about that one channel and says nothing about whether the threshold is a good idea — the channel this page cannot see, extra orders from a better checkout, is the one that usually carries a free-shipping line. Whether either happens is a judgement about your customers, and this file contains no evidence about it.

The one that costs money

You have just priced the money you give away on purpose. The same export prices what you tie up in stock.

This page is about carriage you choose to absorb. Reorder Copilot takes the same orders export, plus your stock levels and supplier lead time, and returns how much to order this week — and refuses the SKUs it cannot size rather than guessing at them.

  • Order quantities sized with proper safety stock for your service level
  • Safety stock scales with the square root of lead time, so a long lead does not tie up cash in proportion to it
  • Refuses to size an order for discontinued or seasonal SKUs — the mistake that fills a warehouse with dead stock
  • Same rules as this page: one file, no server, works offline forever
See Reorder Copilot — $49 once One payment, no subscription · 30-day refund, no questions
Exactly how this is calculated (and what it refuses to do)

The arithmetic

For a candidate threshold T, with your margin m:

cost = total shipping you charged on orders already at or above T
gain = for each near-miss order, (T − order value) × m, minus the shipping it was paying

break-even top-up rate p* = cost ÷ gain
break-even extra orders = cost ÷ (average order value × m)
  1. The cost side is measured, not modelled. It is the shipping revenue sitting in your own export, on the orders that would now get carriage for nothing. There is no assumption in it at all.
  2. The uncertainty is pushed into one number you can judge. A sentence of the form "at least this share of your near-miss orders would have to top up" is a claim about your customers that you are better placed to assess than any calculator. "This will raise revenue by $1,240" is a claim nobody can assess, which is why it is not printed anywhere on this page.
  3. Two readings are given, not one. The cautious one assumes a near-miss order adds the smallest amount that crosses the line. The other assumes it adds one item, priced at the median line item in your own file — because nobody adds $4.12 of something, they add a thing. The truth is between them, so the break-even is printed as a range and the cautious end is named.
  4. The size of a typical added item is measured from your file, not chosen by us. It is the median of every line item price in the export. Earlier this was a percentage we picked, and a sweep of 256 shops showed that our choice, not the merchant's shop, was deciding whether any threshold had a break-even rate at all. Anything measurable must not sit in this page as a default.
  5. Orders that top up are assumed to be a random slice of the near-miss band. If in practice only the ones closest to the line top up, it is worse than shown — those are the orders that add the least.
  6. A break-even extra order is valued at your average order value × margin, with no shipping revenue, on the basis that an order attracted by free shipping qualifies for it. That is the smaller of the plausible values, so the order count it produces is the harder one to clear.
  7. Both hurdles use the same measured cost, so they are two readings of one number, not two separate bills.

Why this does not just tell you a number

The usual advice is to set the threshold 15–30% above your average order value. That is wrong twice over, and both failures are the reason this page is shaped the way it is.

  • Your past distribution cannot predict your future distribution. Changing the threshold changes the shape of the orders — that is what a threshold is for. Using the old histogram to forecast revenue under a new rule assumes the thing you are changing stays still. That is an invented elasticity, and no amount of arithmetic on this file can produce one.
  • A threshold you already have contaminates the evidence for the next one. If you run "free over $50" today, the orders just above $50 are your policy's own footprint. Reading them as customer demand for a $50 line, and concluding $50 is about right, is circular. This page checks for that and stops rather than answering.

How the circularity check works, and what it is not

A free-shipping rule leaves an exact fingerprint that has nothing to do with guesswork: orders above the line stop paying carriage. So the check looks for the order value that best splits your file into "almost always paid shipping" below and "almost never paid shipping" above. If it finds one, this page will not rank thresholds, because every figure it could produce would be a reading of your current policy.

The obvious alternative — looking for a spike in the order-value histogram just above a round number — was built, measured against a store with a known $50 rule and a store with none, and thrown away. It ranked $85 as the strongest "threshold" in both files and never found the real $50 one. Order values pile up at sums of your own product prices, so a catalogue with an $89 item and a $56 item makes lumps that look exactly like a threshold. A detector that fires on a shop with no rule at all is worse than no detector: it would grey out a real answer.

The top-up channel is weaker than the advice assumes — and that is not a verdict on thresholds

A near-miss order only earns its keep if the margin on what it adds beats the carriage it was already paying you: top-up × margin > carriage charged. That is a low bar for a shop with fat margins and cheap postage and an impossible one for a shop with the reverse, and the exact figure for your shop is printed next to the sliders above rather than approximated here.

How often it bites was measured rather than asserted, by sweeping order value, carriage, margin and band width — 256 combinations. Some threshold has a positive top-up gain in 75% of them, and the stronger claim that top-ups alone could cover the entire cost holds in 57%. So this is a real effect and not a universal one; a shop with a small average order, thin margins and expensive postage sits on the wrong side of it, and that is the shop that sees top-up alone: never on every row.

None of that says a threshold is a bad idea for such a shop. It says the basket-size story is not what would pay for it, and the other story — a checkout people abandon less often — is the one this page is structurally blind to, because an orders export contains only the carts that converted.

What this does not know

  • It cannot see the conversion effect, which is the main reason thresholds work. Free shipping over a line mostly earns its keep by reducing abandonment at the checkout, and your orders export contains only the carts that converted. The extra-orders column is the size of that effect you would need — never a claim that you will get it.
  • It does not know what shipping costs you. The cost side is the shipping revenue you gave up, which is exactly right for the profit arithmetic, but it means this page cannot tell you whether your carriage was priced above or below what the carrier charged.
  • Returns are not modelled, and topped-up orders can return differently. An item added to clear a threshold is a less considered purchase than the rest of the basket. If those come back at a higher rate, the gain column is overstated and nothing in your export can say by how much.
  • Cannibalisation is not modelled. Some of a top-up is a purchase the customer would have made later anyway, moved forward rather than created.
  • Orders below the near-miss band are assumed unchanged. In reality a threshold pulls some of them up too, which helps, and puts some off entirely, which does not.
  • Per-line discounts are not read, only an order-level discount column. If your discounting is per line item, the before-discount and after-discount readings will be closer together than they should be.
  • Mixed currencies are refused, not warned about. If a currency column can be mapped and it holds more than one value, this page stops and names them. Converting them would need the exchange rate on the day of each order, which is not in your file. Where no currency column exists this cannot be checked, and then it really is a limitation: an export with mixed currencies would produce meaningless figures and nothing here could tell.

Treat this as a way of finding out what you would be betting, not as a recommendation. Nothing on this page knows your customers.

More on why it is built this way: every free-shipping threshold calculator invents one number, and ours did too — the sweep behind the measured band, and the algebraic correction that turned out to make the prediction worse.

Next question

This page is about money you would give away on purpose. The same export also holds the money that left without anyone deciding — the days a SKU went quiet because it had run out.

Stockout Cost — same file →