Every week somebody asks the Shopify Community how to calculate a free shipping threshold, and every week the answer is a number a little above the average order and a link to the settings. This week's board had it three ways: how to calculate the cost of free shipping, how to track what each channel's shipping really costs, and how to see Amazon's fulfilment fees inside Shopify. The question behind all three is the same. Free shipping over an amount is a price cut paid to some customers to make other customers spend more, and whether it pays depends on four numbers most stores have never put in one place.
This article puts them in one place. First the arithmetic: what an order costs to ship, what a bigger order earns, where the orders already sit, and the threshold that comes out of those. Then the setup, because Shopify offers two different mechanisms that look the same at checkout and behave differently, and the one most stores pick has a trap that a discount code springs.
The first is the shipping cost per order, which is not the rate on the label. It is the label plus the box, the filler, the tape and the minute somebody spends packing, divided across the orders you ship, and it is different for a one item order and a three item order because the second box costs more than the first. If you fulfil some orders through
Amazon's multi channel fulfilment or a 3PL, their fee is that number for those orders, and the thread asking how to fetch the MCF fee into Shopify is asking for exactly this figure.
The second is gross margin on the goods: the selling price less the landed cost of the product, as a percentage. Not the net margin after advertising and the platform's fees, because the question is what an extra item in the basket earns before you spend anything to get it there.
The third is the distribution of order values, not only the average. The average order value tells you where the middle is; the spread tells you how many orders sit just below a candidate threshold, which is the group a threshold moves, and how many sit above it already, which is the group it gives free shipping to for nothing.
The fourth is the uplift: how far a customer below the threshold will stretch to reach it. It is the number you do not know until you test, and the reason to set a threshold as an experiment with a date rather than a policy.
Take a store whose orders average $52, whose all in shipping cost is $8 an order, and whose gross margin is 55%. Those are examples, not a benchmark; put your own in their place. Free shipping on everything would cost $8 on every order and earn nothing back, which is why almost nobody does it below a high price point.
Now set a threshold at $65. Three groups of customers appear. The ones already above $65 get free shipping and change nothing: they cost $8 each, the price of the policy. The ones near the line, say between $50 and $65, are the ones the bar at the cart is aimed at: a customer who adds a $15 item to reach the threshold earns the store $8.25 of margin at 55% and costs it $8 of shipping, which is close to a wash on that order and a gain if the item they added would not otherwise have sold. The ones well below the line are unmoved and pay for shipping as before.
That is the whole calculation, and it has a shape. The threshold pays when the margin on the average uplift, across the customers who stretch, is greater than the shipping given away to the customers who were already above it. Push the threshold up and fewer customers get free shipping for nothing but fewer stretch to reach it; pull it down and more stretch but more get it free. A threshold a little above the average order, the rule the Community repeats, is where those two curves usually cross for a store whose orders cluster around the average, which is most stores, and it is a starting point, not an answer.
Two refinements change the number more than the rule does. Margin is not flat: if the items customers add to reach the threshold are the small high margin ones, the uplift earns more than 55%, and a bar that suggests those items earns more still. And shipping cost is not flat either: a threshold that tips orders into a second box, or from a letter rate into a parcel rate, raises the cost of the policy on precisely the orders it created.
A free shipping threshold is a price decision wearing a shipping label. A store that sets one and leaves its prices alone has cut its price on every order above the line by the shipping cost, and a store that quietly raises prices to pay for it has done something the customer can see on the product page. Neither is wrong; both should be decided rather than drifted into, in the same way
a repricing rule is decided rather than left to a tool.
It also meets the price on the marketplaces. A brand selling the same product on its own store and on Amazon, where Prime shipping is free to the buyer and paid for in the fee, is comparing a $65 threshold on Shopify against no threshold at all next door. The customer who buys from the store rather than the marketplace is paying you more margin per order, and the threshold is one of the few levers that makes the store the better place to buy in bulk.
Shopify's help describes two mechanisms. The first is a conditional shipping rate: in the shipping zone, add a rate with the price at zero, click "Add conditions," choose whether the condition is based on order weight or order price, and enter the minimum and, if you want one, the maximum. A free rate with a minimum of $65 appears at checkout only when the order qualifies, beside whatever paid rates apply below it. This is the mechanism most stores use, and it lives in the shipping settings rather than the discounts.
The second is a free shipping discount, either a code the customer enters or an automatic discount that applies itself. Shopify's discount page gives it a "Minimum purchase amount" or a "Minimum quantity of items," an eligibility of all countries, specific customers, customer segments or markets, the classes of other discount it may combine with, and a box to "Exclude shipping rates over a certain amount," which Shopify notes "applies to shipping rates only, and is unrelated to order amounts." That last option is the one that keeps a free shipping offer from paying for an express rate: exclude rates over $15 and the customer gets the standard rate free while express stays paid.
The trap is in how the two meet a discount code. A merchant on the Community offered free shipping over $149.99 as a conditional rate, and found that a customer applying a 15% newsletter code fell under the threshold and lost the free shipping, because, as the merchant reported and an app developer confirmed, the price condition was evaluated on the order after the code came off. That behaviour is reported here as the merchant's experience rather than as Shopify's documented rule, and the way to know how your store behaves is to place a test order with your own code applied. If the threshold moves under a code, either set it as a discount instead, which can be told which other discounts it combines with, or set the threshold knowing that the code and the free shipping are two cuts a customer can stack.
A price condition has a maximum as well as a minimum, and a weight condition exists for a reason. A store that sells one heavy product among many light ones will give away a $30 parcel to a $65 order if the threshold ignores weight. Shopify's rates are one condition each, price or weight, not both at once, so the honest options are a price threshold with a weight ceiling set as a separate rate for the heavy items in their own shipping profile, or a threshold high enough that the heavy order carries it. The Community thread asking for free shipping over a price with a maximum weight is asking for a combination a single rate does not offer.
Zones are the other half. A threshold set once for every zone gives away an international parcel at the same line as a domestic one, and the international parcel costs three times as much. Set the threshold by zone, or by market through the discount's eligibility, and let the far away customer's threshold be the one their shipping cost justifies.
And the cart itself matters: a bar that says how far a customer is from free shipping is the thing that makes the threshold move anybody, and it has to be on a page that loads.
A slow cart loses the customer before the bar can ask for the second item.
Set the threshold for a month with the numbers written down first: the average order value, the share of orders above the line, the shipping cost per order, and the margin. At the end of the month, three things tell you whether it paid. The average order value should have moved up, and the share of orders sitting just above the threshold should have grown, which is the stretch. The shipping cost per order should have risen by roughly the share of orders now qualifying multiplied by the cost, which is the price. And the gross margin per order, after shipping, should be higher than the month before, which is the verdict.
If the verdict is no, the fix is usually one of two: the threshold is too close to the average, so customers who would have spent that anyway are getting the shipping free, or the items the bar suggests are the wrong ones and the stretch is buying low margin filler. Both are a change to a number, not a change of mind about the policy. If you would rather somebody ran that arithmetic across the store and the marketplaces together,
our unit economics work does, and
our Shopify management sets the rates and the discounts so the two do not fight.