Most articles on this topic hand you a formula and a list of adjectives ("high variable costs, poor retention"). That's not enough to act on. This guide walks the actual arithmetic of a per-order contribution margin so you can see exactly which line is dragging yours down.
What contribution margin actually measures
Contribution margin is revenue minus variable costs — the costs that only exist because you made the sale. Written as a ratio:
Contribution margin % = (Revenue − variable costs) ÷ Revenue
The important word is variable. Your Shopify plan, your design software, and your salary don't change whether you sell one shirt or a thousand — those are fixed and sit below this line. What belongs above the line is product cost, payment processing, shipping you eat, refunds, and paid acquisition.
That last one is why contribution margin is stricter — and more honest — than gross margin. Gross margin stops after product cost. Contribution margin keeps going and subtracts the ad spend it took to win the order, which is usually the difference between a store that looks healthy and one that actually is.
Shopify's own primer notes that a real-world contribution margin is usually well below 50%, so a modest number isn't automatically a crisis — but a falling or single-digit one is a signal to trace the cost stack.
The worked example that explains everything
Say you run a print-on-demand t-shirt store. Here is one order, top to bottom.
- Sale price: $32
- Product cost (blank garment + printing, from your supplier): $12
- Payment processing (about 2.9% + 30¢ per online card transaction on lower-tier Shopify plans — verify your plan's rate): 2.9% × $32 + $0.30 = $1.23
- Paid acquisition: you spent $3,000 on ads and got 300 orders, so $3,000 ÷ 300 = $10 per order
Contribution per order = $32 − $12 − $1.23 − $10 = $8.77. Contribution margin = $8.77 ÷ $32 = 27.4%.
Now watch what happens when you stop the calculation early, the way a gross-margin view does: $32 − $12 − $1.23 = $18.77, or 58.7%. Your product looks like a 59% winner. But once the ad cost that produced the sale is counted, more than half of it disappears. Your contribution margin is low because customer acquisition cost is quietly the largest variable cost in the order — close to matching the shirt itself.
This is the profit angle the ranking pages skip. The 300 orders above produce $8.77 × 300 = $2,631 of contribution, and that is the pool your fixed costs (Shopify plan, apps, tools, your pay) get paid from. Squeeze the per-order number and the whole business gets thin fast.
The reasons your contribution margin is low
Every low margin traces back to one of these variable costs being oversized relative to price. Work them in order of size.
1. Customer acquisition cost (CAC) is too high
For most ad-driven stores this is the biggest lever, as the example showed. If it costs $10 to sell a $32 shirt, your ads are doing most of the eating. Because paid spend scales with orders, it belongs inside contribution margin — burying it below the line, or in product cost, is how a store convinces itself it's profitable when it isn't. Rising costs per click, weak targeting, or a low repeat-purchase rate (so each customer only ever covers one order of CAC) all show up here first.
2. Product cost (COGS) is high relative to price
If your supplier charge is a big share of the sale, contribution is thin before ads even enter. For POD sellers this means the blank plus printing plus the supplier's shipping. The two moves are lowering the input (a cheaper blank, a supplier tier discount, fewer print locations) or raising price — and most sellers under-test price. Our deep dive on why COGS gets too high breaks down the specific culprits.
3. Heavy discounting
A discount comes straight off the top of the sale, so it hits contribution margin dollar-for-dollar. In the example, a 10%-off code turns the $32 order into $28.80 — that's $3.20 gone, and it comes entirely out of your $8.77 of contribution, not out of costs. A code that feels like "just 10% off" can be a third of your per-order profit. Discounting for volume only works if the extra units carry their own variable costs, which they rarely do once fulfillment is counted.
4. Returns and refunds
Refunds are contra-revenue — they reduce your top line — and here's the gotcha: the original payment processing fee is generally not returned to you on a refund. So a refunded $32 order still costs you the ~$1.23 fee even though you kept none of the sale. High return rates quietly bleed contribution across the whole cohort.
5. Payment and dispute fees
The processing fee is small per order but relentless, and disputes are worse. A chargeback on Shopify Payments carries a $15 fee in the US (refunded if you win) on top of the reversed sale. A couple of disputes can erase the contribution from a dozen good orders.
6. You're underpricing
The Shopify contribution-margin guide notes that the closer the ratio is to 100%, the better — and price is the one lever that moves the numerator without touching a single cost. Many sellers set price by copying competitors instead of by working up from their true per-order cost. If you've never calculated the number above, there's a real chance your price is simply too low.
Contribution margin vs gross margin vs operating margin
These three are not the same, and mixing them up hides the leak.
- Gross margin = net sales − product cost. It measures product economics only.
- Contribution margin = revenue − all variable costs, including ads, fees, and shipping. It measures whether each order pays for itself.
- Operating margin = what's left after fixed overhead too. That's the whole-business number.
You can have a strong gross margin and a weak contribution margin at the same time — that's the 58.7% versus 27.4% gap from the example, and it's the single most common reason sellers are confused about why they aren't making money. If you want the full stack, our ecommerce P&L guide lays out every line in order, and the companion pieces on why operating margin runs low and what a high operating margin is telling you connect this per-order view to the bottom line.
How to raise a low contribution margin
Attack the biggest per-order cost first — usually CAC or product cost — not the smallest.
- Rank your variable costs per order, largest to smallest. Fix the top one before touching the rest.
- Test a price increase on your best sellers; a few dollars flows straight to contribution.
- Audit discounts by cart profitability, not by revenue — kill the codes that turn contribution negative.
- Push repeat purchases so each customer amortizes their CAC over more than one order.
- Trim product cost with supplier tiers or fewer print locations.
The hard part isn't the list — it's getting a true per-order number, because the costs live in different places. Your sale sits in Shopify, your ad spend sits in Meta and Google, your product cost sits with Printify or Printful, and your fees sit in Stripe. Until those are joined, "contribution margin per order" is a guess.
Where PodVector fits
PodVector connects Shopify, Meta Ads, Google Ads, Printify, and Printful and computes the true per-order profit that this whole article is built around — product cost, fees, shipping, and ad spend, joined to each order. Victor, its AI operator, reads that live data, tells you which variable cost is dragging your contribution margin down, and can act on Shopify-side changes with your approval. Victor reads your ad data to explain the CAC problem — he does not touch your ad account. If you'd rather work down-funnel from clean books, see how a Shopify accounting integration keeps the source numbers reconciled.
FAQs
What is a good contribution margin for an ecommerce store?
There's no universal target, and it varies by category and how you fund acquisition. Shopify's guide points out that a real contribution margin is usually below 50%, so the right benchmark is your own trend — is it stable or falling? — and whether the total contribution pool covers your fixed overhead with room to spare.
Does contribution margin include ad spend?
Yes, if the ad spend scales with orders (which paid acquisition does). That's the key difference from gross margin, which stops after product cost. Leaving CAC out is the most common reason a store thinks its margin is healthy when its contribution margin is actually thin.
Why is my contribution margin low but my gross margin high?
Because gross margin only subtracts product cost, while contribution margin also subtracts ads, fees, shipping, and discounts. A 59% gross margin can become a 27% contribution margin once acquisition cost is counted, as the worked example shows. The gap between the two is your variable selling cost, and a wide gap points straight at CAC or discounting.
Can a low contribution margin still be profitable?
Sometimes — if your fixed costs are very low and your order volume is high, a thin per-order contribution can still add up. But it leaves no cushion: a small rise in ad costs or returns can flip the whole business negative. A low margin isn't automatically fatal, but it's fragile, and it's worth widening.
Is contribution margin the same as per-order profit?
Nearly. Contribution margin is per-order profit before fixed overhead — the money each order contributes toward paying your rent, subscriptions, and salary. Once those fixed costs are covered, additional contribution becomes actual profit, which is why the per-order number is the one to protect.