Pricing

Should you offer free shipping? The maths, not the opinion.

Shipping cost is the single largest reason people abandon a checkout, so the pressure to make it free is real. Whether you can afford to is a margin question with an actual answer. Here is the calculation, and how to set a threshold from your own orders rather than a round number.

What this article covers

  • Ignore the free shipping statistics. We went looking and they contradict each other badly. The arithmetic below is yours and cannot be wrong.
  • There are only three real options, and the choice between them is a margin decision, not a marketing one.
  • A threshold should come from your own order value distribution, not from a round number or somebody's blog post.
  • Free shipping is the wrong answer for some stores, and the maths will tell you if yours is one of them.

Why we are not quoting you a statistic

Search this topic and you will be told that some specific percentage of shoppers expect free shipping, and that thresholds lift average order value by some specific amount. We went and read those sources. They disagree with each other, most do not name a study, and several attribute contradictory numbers to the same institute.

One figure is solid, because it comes from a primary source that publishes its method: the Baymard Institute finds that extra costs including shipping account for 40% of checkout abandonments, the largest single reason by a wide margin.

That tells you shipping cost matters enormously. It does not tell you whether you should absorb it, and no industry average can, because the answer depends on your margin, your average order value and your postage bill. So the rest of this article is arithmetic rather than statistics.

The only three options

Every shipping policy is one of these, or a per-country mix of them.

Policy Works when The catch
Charge it, clearly and earlyMargins are thin, or postage varies a lot by weight or distanceYou must show the cost before checkout or you pay for it in abandonment
Free over a thresholdYou have margin headroom and a spread of order valuesA badly set threshold either costs margin or motivates nobody
Always free, priced inHigh margin, consistent basket size, light goodsYour prices now look higher than a competitor who charges separately

There is no fourth option. "Free shipping" that is not priced in is just a margin cut with better branding.

The thing worth internalising. Shoppers do not object to paying for delivery nearly as much as they object to discovering the cost late. A store that states 4.95 delivery on the product page will out-convert a store that reveals the same 4.95 at the payment step. If you take nothing else from this article, take that: option one done well beats option two done badly, and it costs you nothing.

The break-even calculation

Before choosing a threshold, work out whether you can afford one at all. You need three numbers, all of which you have.

  • Your average order value. From WooCommerce reports, over twelve months.
  • Your gross margin percentage. Revenue minus cost of goods, divided by revenue.
  • Your average shipping cost per order. What you actually pay the carrier, including packaging.

Now: the smallest order you can ship free without losing money is your shipping cost divided by your margin.

// Worked example
average shipping cost per order  = 5.00
gross margin                     = 40%  (0.40)

break-even order value = 5.00 / 0.40 = 12.50

// On a 12.50 order you make 5.00 gross, and hand all of it to the carrier.
// Anything below 12.50 shipped free is sold at a loss.

The floor, below which free shipping costs you money

That number is a floor, not a threshold. Setting your threshold at break-even means every qualifying order contributes nothing above its own postage. You want the threshold meaningfully above it, and how far above is the next question.

Use real postage, not the label price. Packaging, tape, printer labels, the surcharge on bulky items and the cost of the occasional lost parcel are all part of shipping cost. Stores routinely underestimate this by a third, which makes an unprofitable threshold look profitable on a spreadsheet.

Setting the threshold from your own orders

This is the part almost nobody does, and it is the difference between a threshold that lifts basket size and one that just gives away postage on orders that would have happened anyway.

Export twelve months of orders and sort them by value. You are looking for the shape of the distribution, not the average, because the average is dragged around by outliers.

  1. Find your median order value. Half your orders are below it.
  2. Set the threshold somewhere above the median but within reach of it. A common working range is 20% to 40% above median. The point is that a typical shopper is one small addition away, not two.
  3. Check the threshold clears your break-even comfortably. If 20% above median is below the floor you calculated, you cannot afford a threshold at all and should go back to option one or three.
  4. Look at how many orders already qualify. This is the number that decides whether it is worth doing.

The test that kills most thresholds. If 70% of your orders already exceed the threshold you were about to set, you are not motivating anyone. You are handing free postage to people who were going to buy anyway, and paying for it out of margin. Set it too high instead and nobody reaches it, so it motivates nobody and just reads as an expensive store. The threshold has to sit in the uncomfortable middle where a real number of orders are genuinely close to it.

Worked through: if your median order is 38 and your break-even floor is 12.50, a threshold around 45 to 50 is in the sensible band. If your median order is 38 and your floor is 60, you have a shipping cost problem rather than a policy question, and no threshold will fix it.

Tell them how close they are

A threshold that nobody is reminded of is a threshold that does nothing. The mechanic that makes this work is not the offer, it is the progress message.

"Spend 7 more for free delivery" converts differently from a silent policy in your footer, because it converts a cost into a goal, and it arrives at the moment the shopper can act on it. Where it needs to appear:

  • In the cart or side cart, updating as items are added. This is the highest value placement by a distance.
  • On the product page, as a plain statement of the policy.
  • At the top of checkout, only if the shopper still qualifies to change it. Telling someone at the payment step that they narrowly missed free delivery is an invitation to leave and rebuild their basket, which some of them will not come back from.

When free shipping is the wrong answer

Said plainly, because the internet is unanimous on this subject and it should not be.

  • Heavy or bulky goods. If shipping is a large and variable fraction of order value, absorbing it either destroys your margin or forces prices up so far you lose the comparison. Charge it, calculated, and show it early.
  • Thin margins. If your gross margin is under about 25%, the break-even arithmetic above will usually rule out a workable threshold. Compete on something else.
  • Wide geographic spread. A flat free shipping policy across very different postage zones means your domestic customers subsidise your distant ones. Per-zone thresholds are the honest version.
  • Low order values. If your typical order is under twice your postage cost, free shipping is a permanent loss no threshold can rescue. Look at bundling or minimum order values instead.
  • When your gate 3 leak is not about shipping at all. Measure before you medicate. The method is in your traffic is fine, here is where the money leaks.

Setting it up in WooCommerce

Mechanically straightforward, and there are two settings people miss.

  1. Go to WooCommerce, Settings, Shipping and open the shipping zone you want to change.
  2. Add a Free shipping method to the zone, and set it to require a minimum order amount.
  3. Decide whether coupons count toward the minimum. WooCommerce lets you apply the minimum before or after discounts, and the wrong choice here lets a coupon unlock free shipping you did not intend to give.
  4. Under Shipping options, turn on the shipping calculator on the cart page. Without it, a shopper cannot find out what delivery costs until checkout, which is the exact surprise you are trying to avoid.

The setting that quietly costs money. If a zone offers both Free shipping and a paid method, WooCommerce shows both and some shoppers will pick the paid one, but many stores would rather hide the paid option once free is available. Decide which you want deliberately rather than discovering it in a month of orders.

How to tell whether it worked

Free shipping is unusually easy to declare a success, because the number everyone watches goes up. Average order value nearly always rises after a threshold is introduced. That is not evidence of anything on its own, because the threshold mechanically excludes small orders from qualifying.

The three numbers that actually decide it:

  • Gross profit per order, not revenue per order. Revenue up and profit down is the normal failure mode here, and only one of those appears on a dashboard by default.
  • Total order count. If a threshold suppressed small orders more than it grew large ones, you have fewer customers and a prettier average. Judge it against your own baseline rather than a published benchmark, for the reasons in what is a good conversion rate for a WooCommerce store?
  • Gate 3 conversion, cart to checkout started. That is where a shipping cost objection actually shows up.

And before you read anything into a fortnight of movement, check you have enough orders for the movement to mean something. Most stores changing shipping policy do not, and the arithmetic is in how many orders before your numbers mean anything.

Show the shopper how close they are

OptiCheckout's cart and side cart can carry a free shipping progress message that updates as items are added, which is the placement that makes a threshold do any work at all.