Glossary

Glossary

Contribution margin

By Founder of UpsellShark and a working Shopify merchantUpdated

Definition

Contribution margin is what a sale leaves after the costs that move with it: the product, the payment fee, the shipping you absorb, the packaging, the discount and the ad spend that bought the order. Fixed costs such as rent, salaries and software stay out, because they do not change when one more order arrives. What is left is what that order contributes toward those fixed costs, and then toward profit. On a Shopify store it decides what you can pay for a click, whether a discount code still works, and whether a free shipping threshold pays for itself.

Contribution margin vs gross margin vs net profit

Gross margin subtracts the product cost and stops there. Contribution margin carries on through everything else the order caused. Net profit carries on further still and takes out the costs that were happening anyway, which is why it only means anything measured across a period.

Gross margin cannot tell you whether one order was worth having, because the costs most likely to sink a Shopify order live underneath it. Net profit can, but only after the month closes. Contribution margin is per order, and available immediately.

The costs sitting between gross margin and contribution margin:

  • The payment fee, a percentage plus a fixed amount per transaction, so it takes a bigger share of small orders.
  • Shipping you absorbed: the gap between what the customer paid at checkout and what the carrier charged you.
  • The discount, including order-level codes, which Shopify allocates down onto the individual lines.
  • Packaging, pick and pack, and anything else spent once per parcel. Shopify has no field for these.
  • The ad spend behind the order, usually the largest of the five and the one Shopify is least likely to know.

Where does Shopify keep the costs contribution margin needs?

Most of them are somewhere in Shopify. The two that are not are the packaging you pay for once per parcel and the ad spend that bought the order, and the second of those is usually the largest number in the whole calculation.

Product cost is the easy one. It sits in the Cost per item box on each variant, on the product page in your admin, and it only helps on the sales where somebody actually filled it in. Getting a true figure into that box is its own job, which cost of goods sold works through end to end.

The real payment fee is not printed on the order. It is in Finances, then Payouts, where each payout opens into the orders inside it with the fee taken off each one. That figure is worth looking at rather than assuming the rate you signed up on, because currency conversion and cross-border selling sit on top of the headline percentage, and on a store selling into several countries the gap is wide enough to matter on every order.

Shipping has two halves and Shopify holds both. What the customer paid at checkout is on the order. What the carrier charged you is on your label bill if you buy postage through Shopify, and on the carrier invoice if you do not. Subtract one from the other and you have the shipping you absorbed, rather than a guess. Shopify does publish profit reports of its own, with one caveat printed in its own help pages: they are worked out before returns are settled, and they leave out marketing and packaging entirely.

Ad spend is the hole. Nothing in Shopify knows what you spent on Google or Meta, so unless something pushes those numbers into the store, the cost that decides whether an order was worth having is the one cost your store has no record of. That is the gap profit apps exist to fill, and it is worth checking which channels a given one pulls in by itself and which ones you will be typing in every month.

How much can you pay to win an order?

Your contribution margin before ad spend, and no more than that on the order in front of you. Work out what the sale leaves after product cost, the payment fee, the shipping gap, and that product's share of returns and disputed payments. That figure is the ceiling on what the click or the affiliate commission behind it can cost.

As a ratio that ceiling is break-even ROAS: order revenue divided by contribution before ads. It moves per product, because contribution moves per product. A hero product with room in it carries a campaign at a return that would sink the same campaign selling accessories, and one account-wide ROAS target hides that completely. Easy Profit Calculator stores a break-even ROAS on every order line, rolls it up per product, and puts a "Below break-even" filter on the products report.

There is one fair argument for going above the ceiling: if the customer comes back, the second order carries no acquisition cost, which is what customer lifetime value is for. It is also the most abused number in ecommerce, because a repeat rate you have not measured is a hope. Overpay on the first order only when you can point at your own cohort data.

A $60 order broken into $22 of product cost, a $2 payment fee, $7 of shipping, $14 of ad spend and $15 contributed, with a bracket over the last two marking $29 as the whole amount available to pay for the ad
Spend the full $29 and the order contributes nothing at all, so the ceiling is a stop line rather than a budget to aim at.

How much of your contribution does a discount code take?

A larger share than it takes of the price, and the multiple is one divided by your contribution margin. If an order normally contributes a third of its value, a 10% off code removes roughly 30% of what it contributes. Nothing moves to compensate: the product still cost what it cost, the carrier still charged what it charged, and the processing fee barely shifts.

What gets missed is what a code does to the ad ceiling. Contribution before ads is what an order can pay for traffic, so a discount taking 30% of contribution takes 30% off the most you could afford to win it. Run a promotion and a paid campaign together at the same bids, and every acquired order arrives against a lower ceiling than the bids were set to. That is the ordinary way a profitable campaign turns unprofitable during a sale, with nothing changing inside the campaign.

A code applied to the whole order still reaches the individual products. Shopify spreads it down onto each line rather than leaving it floating above the order, so a 15%-off-everything code turns up inside one product's contribution, and your sales reports can separate discounted orders from full-price ones. How discounts affect your Shopify profit runs the same arithmetic across a whole month.

Does a free shipping threshold pay for itself?

Only when what a shopper adds to reach it contributes more than the shipping you take on. That is the whole test, and it is a contribution test rather than a revenue one. A threshold that lifts average order value by shifting more of your thinnest-margin products has made you poorer at higher revenue.

The way Shopify builds it is blunter than most merchants expect. A free shipping threshold is a condition sitting on a shipping rate, under Settings, then Shipping and delivery, and that condition can look at exactly two things: what the basket costs, or what it weighs. In the admin it appears as the "Offer free shipping" option with a minimum amount, or as a rate with a Minimum and a Maximum price. Either way it reads the basket total, so $75 of your best product and $75 of accessories bought on a code qualify in exactly the same way.

Three ways it goes wrong, none visible in a revenue report:

  • Orders already above the line ship free with nothing added to earn it, so you buy shipping for people who never asked.
  • A shopper $6 short adds the cheapest item that closes the gap, which is almost never a high-contribution product.
  • Your carrier bill moves with weight and distance while the threshold is one number, so identical $75 orders cost you very different amounts.

What free shipping threshold should you set?

The shape of your order values around the line decides it. If a large share of orders already sits above the threshold, most of the free shipping goes to people who would have paid it. If almost nothing sits just below, there is nobody left to nudge upward.

A histogram of order subtotals against your free shipping line answers both questions at a glance, and it is the first thing to check before moving the number. Then compare candidate thresholds against each other rather than arguing about the one you have: expected order value at each, shipping profit and loss at each, net profit at each. Easy Profit Calculator's free shipping optimizer models that table from your own orders, margins and carrier costs, then marks the threshold expected to earn the most.

Why does growth make a negative contribution margin worse?

Because volume multiplies the wrong number. Fixed costs get cheaper per order as you grow, so a store losing money on overheads alone can genuinely grow out of it. Contribution does not work that way. An order contributing minus $3 becomes minus $300 across another hundred orders, and no amount of scale reverses the sign.

What makes it dangerous is that contribution per order tends to fall exactly when volume rises. The cheapest demand gets bought first, so ad cost per order climbs as you push spend into a wider audience. Discounting usually climbs with it to hold conversion. And the mix drifts toward whatever the ads sell well, which is rarely what you earn most on. Three pressures, all pointing the same way, arriving in the month that looks like your best.

The signal is contribution per order falling month over month while order count rises. Revenue will not show it and gross margin will not show it, because neither moves when the cost of buying an order goes up.

What is a good contribution margin?

No percentage is worth quoting without your fixed costs beside it. Contribution margin has two jobs, and a good one does both. The first is per order and immediate: is it still positive after the ad spend that won the order? If not, that order made things worse, and doing more of them makes things worse faster. Discounted orders that also ship free are the usual offenders.

The second job only makes sense over a period. Does total contribution across every order cover your fixed costs with something left? Divide your monthly fixed costs by your average contribution per order and you get the number of orders you need each month before anything is profit. Most merchants find that count higher than they guessed, and it beats any margin percentage because it is built from their own figures. Whether your store is profitable walks the same sum across a full month of real orders.

One thing trips people up. On a single order, contribution margin and profit are the same number, because there is no sensible way to hand one order a slice of the rent. The gap between contribution and net margin only appears across a period, which is why a per-order view and a monthly profit and loss are two different screens.

Example

A $70 order: $26 of product cost, a $2.35 processing fee, $9 of carrier cost against nothing charged for shipping because the order cleared the free shipping line, and $1 of packaging. Contribution before ads is $31.65, the most that order could ever pay for the click that won it. Spend $22 and it contributes $9.65 toward the month. Add a 15% code and $10.50 comes straight out of the $31.65, dropping the ad ceiling to about $21, under the $22 you were already paying.

Commonly confused with

Gross margin
Gross margin subtracts the product cost and stops. Contribution margin carries on through the payment fee, the shipping you absorbed, the packaging, the discount and the ad spend.
Net profit
Net profit also takes out the costs that were happening anyway, such as rent and salaries, which is why it only means anything measured across a period.
Break-even point
Contribution margin is per order. Your break-even point is how many of those orders it takes to cover a month of fixed costs, which is the monthly bill divided by the average contribution.

FAQ

Common questions

What is the contribution margin formula?
Sale revenue minus every cost that scales with the sale: product cost, payment fee, the shipping you absorb, packaging, the discount and the ad spend behind the order. Fixed costs such as rent, salaries and software stay out, because they do not change when one more order comes in.
Does Shopify show contribution margin?
No. Shopify reports gross profit and gross margin from the Cost per item box, and its profit reports cover shipping and duties but are worked out before returns are settled. It holds no ad spend at all unless an app puts it there, and ad spend is usually the largest cost on the order that moves with the sale.
How do I calculate contribution margin per order on Shopify?
Start from the order revenue after discount, then subtract the recorded product cost, the fee Shopify actually took on that order from your payout, the carrier cost minus whatever the customer paid for shipping, your per-parcel packaging cost, and the ad spend behind the order. Take the tax out first if your prices include VAT.
Can contribution margin be negative?
Yes, and it is common on discounted orders that also ship free. Once it is negative, every extra sale enlarges the loss, so pausing that campaign or promotion is worth more than any efficiency you could find elsewhere.

See what an order can afford before you spend it

Easy Profit Calculator works out every variable cost on every order as it arrives, labels each one exact or estimated, and shows a break-even ROAS per product. Google Ads spend syncs live and other ad spend is entered manually. Free for up to 100 orders a month.

See Easy Profit Calculator