Revenue is the number every founder can quote from memory. It's on the Shopify home screen, it's what investors ask about first, and it's the metric that feels like progress. It's also the number that tells you the least about whether your business is actually working. I've reviewed the books of dozens of ecommerce brands, and the pattern repeats: revenue climbs, the founder celebrates, and the bank balance quietly moves the other way. The metric that would have explained the gap — contribution margin — was never on the dashboard.
This guide walks through what contribution margin is, how it differs from the margins you already track, and how to calculate it per order and per SKU so you can run the brand on profit instead of top line.
Why revenue is a vanity metric
Revenue only tells you how much money came in the door. It says nothing about how much it cost to earn that money — the product, the shipping, the processing fees, the discounts, and the ad spend that drove the sale. Two brands with identical revenue can have wildly different economics: one keeps forty cents of every incremental dollar, the other loses money on each order and papers over it with the cash from the last inventory cycle. From the outside, both look like they're growing. Only one of them is building anything.
Contribution margin fixes this because it isolates the money an order actually contributes after everything that varies with that order is paid for. It is the single most useful operating metric a DTC brand can adopt.
Gross vs. contribution vs. net margin
These three margins measure different things, and conflating them is where most profit confusion begins.
- Gross margin is revenue minus cost of goods sold (COGS). It's the product-level economics: what's left after you pay for the physical thing you sold.
- Contribution margin is revenue minus all variable costs — COGS plus shipping, fulfillment, payment processing, and the ad spend attributable to the sale. It's the order-level economics: what an order contributes toward covering your fixed costs.
- Net margin is what's left after fixed operating expenses too — salaries, software, rent, agency retainers. It's the whole-business economics.
Shopify shows you revenue and, if you've loaded unit costs, gross margin. It does not show contribution or net margin, because the variable costs beyond COGS live in your ad platforms, your 3PL invoices, and your processor statements. That's the gap this article closes.
The contribution margin tiers: CM1, CM2, CM3
The cleanest way to work with contribution margin is in tiers. Each tier strips out one more layer of variable cost, so you can see exactly where the money goes.
- CM1 = Revenue − COGS. This is close to gross margin: the product profit before you've shipped or marketed anything.
- CM2 = CM1 − shipping, fulfillment, and payment processing. Now you've accounted for the cost of physically getting the order to the customer and collecting the money. Free-shipping thresholds and 3PL pick-and-pack fees show up here.
- CM3 = CM2 − advertising spend. This is the number that matters most for a paid-acquisition brand. CM3 tells you whether the order made money after you paid to acquire the customer who placed it.
Below CM3 sits a fourth layer — subtract fixed operating expenses and you arrive at net profit. But CM3 is the operating dial, because it's the last tier you can influence order-by-order.
A worked example: the $80 order
Consider an $80 average-order-value sale. Your Shopify dashboard, with unit costs loaded, might show a healthy-looking gross margin. Here's what actually happens as you walk down the tiers:
| Line | Amount |
|---|---|
| Revenue | $80.00 |
| Less COGS | −$24.00 |
| CM1 | $56.00 |
| Less shipping & fulfillment | −$12.00 |
| Less payment processing | −$2.60 |
| CM2 | $41.40 |
| Less allocated ad spend | −$32.00 |
| CM3 | $9.40 |
Shopify would have told you this order carried a 70% gross margin. That's true and useless. The order actually contributed $9.40 — under 12% of revenue — before a single fixed cost. Add a return, a discount code, or a rising customer-acquisition cost, and CM3 goes negative. The dashboard would still be flashing green.
Per-SKU and per-channel views
Blended contribution margin hides as much as it reveals. Your best SKU might be subsidizing three that lose money on every order, and your brand-average CM3 looks fine right up until the loser SKUs scale. The fix is to calculate contribution margin per SKU, so you can see which products earn their shelf space and which are quietly draining cash.
Channel matters just as much. Shopify DTC and Amazon behave differently: Amazon's referral fees, FBA fulfillment costs, and return handling change the math entirely, and blending them with DTC produces a number that describes neither. A proper model separates channels and shows contribution margin for each. If ad efficiency is where your margin is leaking, the companion read is my breakdown of MER vs. ROAS, which explains why platform-reported returns overstate true profit.
Negative-CM red flags
Once you're looking at contribution margin per order, the failure modes announce themselves. Watch for three:
- Over-discounting. A standing 20% code doesn't reduce revenue by 20% — it can erase most of CM3, because the discount comes straight off the thinnest tier.
- High returns. A returned order costs you the original fulfillment, the return shipping, and often the unit itself. In apparel-like categories this can turn a profitable SKU negative.
- Inefficient paid acquisition. When customer-acquisition cost creeps up, CM3 is the first casualty. If you're scaling spend on a screenshot of platform ROAS, you may be buying revenue that loses money.
Fixed costs and the path to net margin
CM3 is the operating dial, but it isn't the finish line. Below contribution margin sit your fixed operating expenses — salaries, software subscriptions, office and warehouse base costs, agency retainers, and the founder's own compensation once the business can support it. These don't move order by order, which is precisely why they belong below CM3: you can't manage them at the order level, but you do have to cover them out of the pooled contribution every order generates.
This is why the relationship between CM3 and volume matters so much. If each order contributes $9.40, you need to know how many orders it takes to cover the fixed base before the first dollar of net profit appears. That breakeven volume is one of the most clarifying numbers a founder can carry in their head. It reframes growth: you're not chasing revenue, you're chasing enough positive-CM3 orders to clear the fixed nut and then compound beyond it. When contribution per order is thin, small changes in fixed costs or volume swing you from profit to loss, which is exactly the situation contribution-margin discipline is designed to catch early.
How to operationalize it monthly
You don't need enterprise software to start. Most brands progress through three stages. First, a spreadsheet: pull revenue, COGS, fulfillment, processing, and ad spend into one place and compute CM1–CM3 monthly. Second, a profit-analytics tool that connects Shopify, your ad platforms, and your processor to automate the pull. Third, a CFO cadence, where contribution margin by SKU and channel is reviewed every month alongside cash, and marketing budgets are set from unit economics rather than last week's ROAS.
Contribution margin isn't an accounting exercise — it's the operating system for a product brand that wants to keep the profit it earns. If you want that system built and run properly, that's exactly the work a fractional CFO for ecommerce brands does.
