Contribution Margin Measurement

Metricuno
May 23, 2026
5 min read
Contribution Margin Measurement — How to measure contribution margin for an online store — what counts as variable, how to allocate fees per order, and whether to include ad spend.
Quick answer

A working methodology for computing contribution margin on a real Shopify or WooCommerce store — variable cost classification, per-order allocation, and where marketing fits.

Definition
Unit Economics

Contribution Margin Measurement

The methodology for computing contribution margin per order or SKU — defining variable costs, allocating fees, and deciding whether marketing belongs at the unit level.

Contribution margin measurement is the set of accounting choices that turn revenue and costs into a usable per-order or per-SKU profitability number. The formula itself is simple — revenue minus variable costs — but the answer changes dramatically depending on what you classify as variable, how you allocate payment fees and shipping per order, and whether you push attributed marketing spend down to the unit level.

For an online store, this methodology underpins every downstream decision: pricing, free-shipping thresholds, promo depth, paid-channel bid caps, and which SKUs to keep in the assortment. Getting the framework right once means every dashboard, calculator, and finance review afterwards is talking about the same number.

Also known as
CM calculation methodology
unit economics framework
per-order profitability measurement

Most stores compute contribution margin three different ways across finance, marketing, and operations — and then wonder why the numbers never reconcile. The fix isn't a better spreadsheet. It's agreeing on a single methodology, writing it down, and applying it everywhere.

This page walks through the four decisions that define your methodology: which costs count as variable, how to allocate per-order fees, whether to include marketing spend, and how often to recompute. Each decision has a defensible default for a Shopify or WooCommerce store doing €1M-€15M in annual revenue.

Decision 1: What counts as a variable cost

A variable cost moves with each unit sold. The clean cases are obvious — landed product cost (COGS), payment processing fees, outbound shipping, pick-and-pack labour if it's outsourced to a 3PL on a per-order rate, and any per-order packaging (mailer, tissue, insert card).

The messy cases are returns, customer service, and subscription-billing fees. Returns are variable but lumpy — a beauty SKU at 4% return rate and an apparel SKU at 28% behave nothing alike. The standard move is to apply a SKU-level or category-level return rate to net revenue and to net out restocking cost, rather than treating returns as a fixed overhead. See Variable Cost Components for the full inclusion list.

Decision 2: Allocating per-order fees

Payment fees and shipping are charged per order, not per unit — which matters the moment a basket contains two items. Allocate them in one of two ways: pro-rata by line revenue (weighted to the higher-priced item) or evenly across units. Pro-rata is the cleaner default because it matches how the fee scales with order value.

Shipping is trickier when you offer a free-shipping threshold. The cost is still real — it just shifted from the customer to your P&L. Always book actual carrier cost into the order's variable costs, even when shipping revenue is zero. Otherwise your free-shipping promo looks artificially profitable in the dashboard.

The free-shipping trap

If you book €0 shipping cost on free-shipping orders because the customer didn't pay it, you'll systematically overstate contribution margin by €4-€8 per order. On a 5,000-order month that's €25,000 of phantom margin. Always allocate actual carrier cost, regardless of what the customer was charged.

Decision 3: Does marketing belong at the unit level?

This is the methodology debate that derails most CM projects. Pure cost accounting says no — marketing is a customer-acquisition cost, not a per-unit production cost, so it sits below the contribution line. Operators running paid-heavy stores often want it included, because a 35% gross CM with a 40% blended marketing cost is not a profitable business and the dashboard should say so.

The pragmatic answer is to track both. Report CM1 (revenue minus COGS, fees, shipping, returns) as your core unit economics number, then CM2 (CM1 minus attributed marketing) as the channel-aware view. The Contribution Margin Calculator lets you toggle marketing on and off so finance and growth teams stop arguing about which number is right — they're both right, for different decisions.

Chart

Same SKU, four CM definitions: €60 apparel order

0€10€20€30€40€Gross margin onlyCM1 (gross − fees/ship/returns)CM2 (CM1 − blended marketing)CM2 (CM1 − channel-attributed)Contribution marginMethodology
Frequently asked

Contribution margin measurement: common questions

Gross margin only subtracts COGS from revenue. Contribution margin subtracts all variable costs — COGS plus payment fees, shipping, returns, and per-order packaging. On a typical Shopify order, gross margin is 8-15 percentage points higher than CM1, so confusing the two will flatter your unit economics.

Yes. Stripe, Shopify Payments, and PayPal all charge per-transaction, so the fee scales directly with each order. Use the actual blended rate (typically 1.8%-2.9% plus a fixed component) rather than a rounded estimate, because the fixed-fee portion materially hurts low-AOV stores.

Apply a SKU-level or category-level return rate to net out the lost revenue, and add reverse-logistics cost (return shipping, restocking labour, write-offs on non-resellable items) to variable costs. A 25% apparel return rate can take a 40% gross CM down to 18% CM1 — ignoring it is the single biggest measurement error in DTC.

Track two layers. CM1 excludes marketing — it's your unit economics floor. CM2 subtracts attributed or blended marketing spend and tells you whether the business is actually paying for itself. Use CM1 for pricing decisions and CM2 for channel and promo decisions.

Book the full carrier cost once per order, then allocate pro-rata by line revenue when reporting SKU-level CM. This avoids inflating margin on the cheapest item in a basket while crediting the most expensive one with all the shipping burden.

No. Storage is a fixed cost — you pay it whether you sell 100 units or 10,000 — so it sits below the contribution line in operating overhead. Only the per-order pick-pack-and-ship component is variable and belongs in CM.

Refresh COGS and shipping rates monthly, payment-fee blended rates quarterly, and return rates by season for fashion or by quarter for evergreen categories. A CM number based on last year's freight rates is currently wrong by 10-20 percentage points for most stores.

CM1 of 35-50% is the target range for most online retail. Apparel and beauty sit higher (45-60%) thanks to product markups, while electronics and supplements tend lower (25-40%). After marketing (CM2), 15-25% is healthy and anything under 10% means the business can't sustain its overhead.

Roll up order-level variable costs by SKU using the allocation rules above (pro-rata for shared fees), then divide by units sold. The Contribution Margin Calculator does this automatically if you feed it order-line data from Shopify or WooCommerce.

Yes — subtract discounts from gross revenue before computing CM. A 20% discount code applied to a 40% CM1 product cuts the unit margin roughly in half, so treating discounts as a marketing expense instead of a revenue reduction systematically overstates product profitability.

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.