How to use Contribution Margin Foundations

Metricuno
June 28, 2026
7 min read
Quick answer

A practical guide to contribution margin for online retail: which costs belong in the line, how to compute true profit per order, and how to make it the shared denominator your channel, product, and cohort P&Ls all roll up to.

Definition
Profitability

Contribution Margin Foundations

Contribution margin is the revenue left from an order after every variable cost of fulfilling it — the per-order profit before fixed overhead.

Contribution margin is the unit-economics layer underneath every profitability cut in an online retail business. For a single order it equals net revenue minus the variable costs directly caused by that order: COGS, pick-and-pack, shipping, payment fees, returns reserve, and the marketing cost attributed to acquiring the customer.

Get the definition right once and it becomes the shared denominator the CFO signs off on. Channel P&Ls, product P&Ls, and cohort LTV models all roll up consistently — because every analyst is subtracting the same costs from the same revenue line.

Also known as
CM
unit contribution
variable margin
true profit per order

Most Shopify and WooCommerce stores in the €1M–€15M band track gross margin out of habit — revenue minus COGS, full stop. That number flatters the business. It hides the 8–14 percentage points of margin that disappear between the warehouse door and the customer's hand: shipping, returns, payment processing, picking labour, and the discount codes the email team handed out last Tuesday.

Contribution margin closes that gap. Done well, it answers a single operational question — would we still take this order if we had no fixed costs? — and gives you a clean per-order number you can slice by channel, SKU, or acquisition cohort without the categories double-counting or arguing.

What counts as a variable cost (and what doesn't)

A variable cost is one that exists because the order exists. Ship a unit, pay the carrier. Take a card payment, pay Stripe. Issue a refund, eat the return shipping and restocking labour. Those belong above the contribution line.

Fixed costs sit below it: your warehouse lease, the e-commerce manager's salary, the Shopify Plus subscription, the brand campaign on YouTube. None of them flex with one more or one fewer order this week. Mixing fixed costs into the per-order calculation is the single most common error — it makes high-AOV orders look artificially profitable and low-AOV orders look unviable when in reality both contribute the same fixed-cost coverage.

The grey zone is semi-variable costs — your 3PL might charge a fixed monthly fee plus a per-pick rate, or your CS team scales in steps of one headcount per ~2,000 monthly orders. The clean approach: only the per-unit portion enters contribution margin; the step-fixed portion is allocated separately. We unpack the mechanics in Overhead Allocation for DTC.

The discount question

Promotional discounts (codes, sitewide sales, free shipping thresholds) reduce net revenue, not COGS. Subtract them at the top of the formula, not the bottom. Brands that bury discounts inside 'marketing spend' end up double-counting them when they later attribute the same code to a paid channel.

The formula and a worked order

The clean per-order formula is: net revenue minus COGS minus fulfilment minus payment fees minus returns reserve minus attributed acquisition cost. Net revenue is gross revenue after discounts, refunds, and chargebacks. Acquisition cost is only included for the order that acquired the customer — repeat orders carry zero CAC in the contribution line, which is exactly what makes cohort LTV models work.

Worked example. An apparel store sells a €90 jacket. After a 10% promo code, net revenue is €81. COGS is €22. Pick-pack and shipping run €7. Stripe takes €2.50. A 12% return rate implies a €4 reserve per order. Paid acquisition cost on this customer's first order was €18. Contribution margin: €81 − €22 − €7 − €2.50 − €4 − €18 = €27.50, or 34% of net revenue.

Chart

Where the €90 jacket's revenue actually goes

0€5€10€15€20€25€30€DiscountCOGSFulfilmentPayment feesReturns reserveAcquisitionContributionEuros per orderCost line

Stare at that breakdown long enough and the operational priorities reorder themselves. The Contribution Margin Calculator lets you plug in your own line items and see which lever — AOV uplift, return-rate reduction, or paid CAC — would move the needle most for your store.

Rolling it up: channels, products, cohorts

Once every order carries a contribution margin, the three downstream P&Ls fall out cleanly. Channel Profitability Analysis sums CM by acquisition source — and exposes the Meta campaigns that win on ROAS but lose on CM once free-shipping cost is honest. Product Profitability Analysis sums CM by SKU, surfacing the hero product that's quietly subsidising three loss-leaders. Customer Segment Profitability rolls CM by cohort and tells you which acquisition month is actually paying back.

The non-negotiable is that all three views use the same per-order definition. If channel P&L includes returns reserve but product P&L doesn't, the totals won't reconcile and finance loses trust in the whole stack. This is also why ROI vs ROAS matters — ROAS uses gross revenue, ROI uses contribution margin, and the gap between them is exactly the variable-cost layer this page is about.

Benchmark

Typical contribution margin ranges by DTC vertical (per first-time order, after CAC)

VerticalGross marginCM% (first order)CM% (repeat order)
Apparel & footwear60–70%10–20%35–50%
Beauty & skincare70–80%15–25%45–60%
Consumer electronics30–40%−5% to +8%15–25%
Home & furniture45–55%0–10%20–35%
Food & beverage (subscription)50–60%−10% to +5%25–40%
Supplements70–80%10–20%45–55%

Two things to notice. First, first-order CM is often razor-thin or negative — that's normal in DTC and is why cohort thinking exists. Second, the gross-margin column tells you almost nothing about which businesses are durable; electronics at 35% gross can still be a better business than apparel at 65% if returns and acquisition costs behave.

Common mistakes that quietly break the model

The first failure mode is averaging. Brands compute one blended CM% and apply it everywhere — but CM per order varies wildly with discount depth, ship-to country, and product mix. Always compute at the order level and aggregate up; never aggregate first and divide. The second is stale COGS. If you re-price a SKU but the analytics layer still reads last quarter's landed cost, your product P&L is fiction.

The third is CAC attribution. Last-click attribution shoves all acquisition cost onto one channel; data-driven attribution spreads it across the customer journey. Pick a method and document it — then run a Profit Leak Audit quarterly to catch the orders where attributed CAC exceeds order CM by more than the cohort can recover.

The CFO test

Your contribution margin definition is ready for board-deck use when (a) channel CM totals reconcile with product CM totals to within 1%, (b) repeat-order CM excludes CAC, and (c) discounts hit net revenue, not marketing spend. If any of those three fail, the rollups will argue and the conversation in the meeting will be about reconciliation instead of decisions.

Frequently asked

Frequently asked questions

Gross margin subtracts only COGS from revenue. Contribution margin also subtracts every other variable cost an order causes — fulfilment, shipping, payment fees, returns, and attributed acquisition. For a typical DTC apparel order the gap between the two is 25–35 percentage points.

Include only the variable, order-attributable portion — i.e. paid acquisition cost on the order that acquired the customer. Brand campaigns, agency retainers, and the CRM team's salary are fixed costs and sit below the contribution line. Repeat orders carry zero CAC in the calculation.

Use a returns reserve, not actuals per order. Calculate your trailing 90-day return rate by SKU or category, multiply by the cost of a return (reverse shipping + restocking labour + write-off rate for damaged items), and subtract that expected cost from every order in that segment.

ROAS is revenue divided by ad spend — it ignores every cost between revenue and profit. Contribution margin tells you whether that revenue is actually worth winning. A 3.0 ROAS campaign can still be loss-making at the CM line if the products it pushes have thin gross margin or high return rates. See our ROI vs ROAS guide for the full reconciliation.

No — use one formula, applied consistently. What varies by channel is the inputs: Amazon orders carry referral fees instead of Stripe fees, wholesale orders carry zero CAC, and subscription orders carry amortised acquisition cost across the expected term. The line items change; the structure doesn't.

Order-level CM should be computed on every order in near-real-time. The inputs — landed COGS, shipping rates, return reserves, CAC by channel — should be refreshed monthly at minimum, and immediately whenever a supplier price, carrier contract, or promo structure changes materially.

Repeat-order CM of 35–50% is the durable zone for most DTC verticals; below 25% leaves no room to absorb fixed costs. First-order CM is often near zero or negative — that's fine if your cohort LTV justifies the payback period. The number to track over time is blended CM trend, not a single snapshot.

Subtract actual shipping cost from net revenue regardless of whether the customer paid for it. If your average order at the threshold ships for €6 and you charged the customer nothing, that €6 still lands in the fulfilment line — and you'll discover whether the threshold is actually expanding margin or eroding it.

No — they answer different questions. Contribution margin tells you whether your unit economics work. EBITDA tells you whether the whole business is profitable after fixed costs. CM × order volume minus total fixed costs equals operating profit, so CM is the input EBITDA depends on, not a substitute.

Start with a single per-order formula in a spreadsheet using last quarter's averages for each cost line, then move it into a profitability tool once the definition is stable. Don't wait for perfect data — a 90%-accurate CM number, applied consistently, beats a perfect gross-margin number that hides 30 points of variable cost.

See Metricuno on your data

Bring your stack — Google Analytics, Stripe, a CRM, anything — and we'll walk through the metric tree that turns your funnel into one number.