Contribution Margin: The Metric That Beats ROAS
What CM1, CM2 and CM3 actually look like for DTC ad buyers, with channel thresholds and the moves that protect margin.

Sections
Contribution margin is the dollar amount left from each unit sold after you subtract the variable costs that scaled with that sale. For ecommerce and DTC ad buyers, that number, not ROAS or blended return, decides whether you can keep buying media tomorrow. Most brands operating between $50k and $5M a month in spend get the math directionally wrong, then wonder why a 3.0 ROAS month produced a P&L that looked like 1.6. This piece walks the actual layers (CM1, CM2, CM3), the channel thresholds we see hold up across in-market campaigns, and the specific reads that decouple unit economics from vanity returns.
TL;DR: Contribution margin is revenue per unit minus variable costs per unit, and at the brand level it funds your next ad dollar, not your reported ROAS. Track three layers: CM1 (gross of paid media), CM2 (after media), CM3 (after fulfillment, returns, payment fees). DTC operators should target a positive CM2 on cold traffic and a CM3 above 25% blended before scaling spend. The fastest competitor gut-check lives in adlibrary's saved-ads timelines, where pricing, discount cadence and offer evolution surface unit economics you can reverse-engineer.
Step 0: Use adlibrary to gut-check competitor unit economics
Before you reopen your own P&L, look at what your three most relevant competitors are actually selling and how often the price changes. Margin is downstream of pricing power, and pricing power is visible in their ad library long before it shows up in any earnings call.
Three reads compress days of manual swipe-file work into about twenty minutes.
Saved ads tracking offer evolution. Pin the competitor's top 5 in-market ads to a saved set. The saved ads feature timestamps every change. You will see the exact week they moved from "free shipping over $50" to "20% off your first order". That is a margin signal, not a creative signal. Brands cut into unit economics with sitewide discounts when paid acquisition stops covering CAC. The ad-timeline-analysis view layers spend signals on top, so you see whether the discount worked or compressed margin further.
AI ad enrichment for price and discount extraction. Manually reading 200 ad creatives to pull price points is work nobody actually does. The enrichment layer extracts the offer line, the discount percentage, the bundle structure, and the CTA across thousands of ads. When a competitor runs "$29 + free shipping" alongside "$39 with 25% off", you can model their AOV and effective CM1 without owning their data.
Ad timeline analysis for promo cadence. Brands with healthy margin run promos quarterly. Brands cannibalizing CM3 run them every other week. The ad-timeline-analysis shows the cadence on a calendar. We tend to look across 60–90 days of in-market ads on adlibrary before any benchmark conversation, because the patterns argue with the spreadsheet often enough to matter. Use the unified ad search and platform filters to scope quickly.
That is the moat. Most operators benchmark against last quarter's own data. You should be benchmarking against what is actually working, today, in front of cold traffic.
CM1, CM2, CM3: the three layers that matter
Contribution margin is not one number. Treating it as one is the single most common mistake we see in DTC growth finance reviews. The ad buyer needs three views, in order, because each layer answers a different question.
CM1 (gross contribution). Revenue minus COGS and direct-to-product variable costs (inbound freight, duties, payment processor fees). This is the number your ops team uses. It tells you whether the product itself is profitable. CM1 below 60% on a DTC product is a structural problem no amount of clever buying fixes.
CM2 (after paid media). CM1 minus customer acquisition cost. The number the ad buyer lives in. CM2 negative on cold traffic is acceptable if your repeat rate funds it. CM2 negative on retargeting means you are buying customers you already had. The break-even ROAS calculator gets you to the threshold quickly.
CM3 (after operations). CM2 minus fulfillment, returns processing, and any post-purchase variable cost (shipping subsidy, free returns, CS touches per order). The number your CFO uses to decide whether to fund growth. CM3 is the only layer that survives contact with reality, because returns and shipping subsidies are where DTC margin quietly dies.
The lever is different at each layer. CM1 is moved by pricing, supplier negotiation, and product mix. CM2 is moved by creative quality, audience targeting, and offer construction. CM3 is moved by ops, returns policy, and fulfillment routing. If you only track blended margin, you cannot tell which lever to pull.
CM1 walkthrough on a real product
Take a $49 skincare SKU sold to cold Meta traffic. Numbers below are anonymized but pulled from a brand we worked with at $1.2M/mo blended spend.
| Line item | Per-unit | % of revenue |
|---|---|---|
| Gross revenue | $49.00 | 100% |
| Discount applied (avg) | -$4.90 | -10% |
| Net revenue | $44.10 | 90% |
| COGS | -$8.20 | -16.7% |
| Inbound freight + duties | -$1.10 | -2.2% |
| Payment processing (2.9% + $0.30) | -$1.58 | -3.2% |
| CM1 | $33.22 | 67.8% |
| Blended CAC (cold + retargeting) | -$22.00 | -44.9% |
| CM2 | $11.22 | 22.9% |
| Outbound shipping (subsidized) | -$5.50 | -11.2% |
| Returns reserve (8% return rate × full refund) | -$3.50 | -7.1% |
| CS + pick-pack labor | -$1.20 | -2.4% |
| CM3 | $1.02 | 2.1% |
Notice what the layers expose. CM1 of 67.8% looks healthy. CM2 of 22.9% looks acceptable. CM3 of 2.1% is the actual truth, and it tells you that scaling this brand on Meta will lose money the moment CAC creeps another $1.50, which it will once you push past learning phase volume. The ROAS calculator at 3.0 would have lit green here. The CM3 read says stop. Walk a similar diagnostic on your own SKU using the CPA calculator and the LTV calculator.
Why contribution margin beats ROAS for scaling decisions
ROAS measures advertising efficiency. Contribution margin measures whether the business survives the advertising. They are not the same metric. Treating ROAS as a proxy for profitability is how brands raise on a 4.0 reported number then file for restructuring eighteen months later.
Three structural problems with ROAS as a scaling input.
ROAS is gross of variable costs. A 3.0 ROAS on a 30% gross margin product is breakeven before you pay shipping. A 3.0 ROAS on a 75% gross margin product is a license to print money. Same number, opposite businesses.
ROAS uses platform-attributed revenue. Meta's reported revenue post-iOS 14 still over-attributes by 20–40% on most accounts we audit. Contribution math uses what hit the bank. The gap matters most when scaling, because reported ROAS stays stable while actual contribution silently compresses.
ROAS ignores repeat rate. A brand with 35% 90-day repeat can run negative CM2 on first purchase and still print cash. A brand with 8% repeat cannot. LTV and payback period live downstream of unit economics, not ROAS.
The right hierarchy: CM3 sets the ceiling, MER is the operational dial, ROAS is a diagnostic for individual ad sets. Shopify's DTC benchmark report shows top-quartile brands all track contribution-margin-on-spend rather than reported ROAS.
Channel-level CM thresholds we see hold up
Margin requirements vary by channel because audience temperature, conversion latency, and creative-cost-per-iteration vary. The thresholds below come from operator data across 40+ accounts at $50k–$2M monthly spend, normalized for product category. They are starting points, not laws.
| Channel | Audience | Min CM2 to scale | Min CM3 blended | Notes |
|---|---|---|---|---|
| Meta Advantage+ Shopping (cold) | New buyers | -10% (subsidized by repeat) | 18% | Tolerance for negative CM2 only if 90-day repeat above 25% |
| Meta retargeting | Site visitors, AOC | 35% | 28% | Below this, you are paying to convert traffic that would have converted organically |
| Google branded search | Brand-aware | 60% | 45% | Branded should always be your highest-margin channel. If not, the SEO foundation is broken |
| Google non-branded search | High-intent cold | 15% | 10% | High variance. Query mining matters more than bid strategy |
| Google Performance Max | Mixed intent | 5% | 8% | Treat as a black box. Cap spend until CM3 stabilizes for 14 days |
| TikTok Spark Ads | Cold, low intent | 0% | 5% | Long latency means platform ROAS undercounts. Use post-purchase survey to true up |
| TikTok Shop ads | Impulse cold | -5% | 12% | Free shipping is non-negotiable. CM3 protected by AOV bundling |
Two patterns worth flagging. First, retargeting CM2 thresholds are higher than cold. That is not a typo. Retargeting sees customers who would have converted at lower CAC, so the bar should be higher, not lower. Most brands have this exactly inverted in their budget allocation. Second, Performance Max requires a CM3 floor before scaling because the channel mix shifts unpredictably across branded, non-branded and shopping intent. Bain's DTC profitability research makes the same point in different language. Channels that blend intent require gating on after-the-fact margin, not in-flight ROAS. The Marketing Efficiency Ratio post breaks down how to translate these thresholds into a single blended dial.
How to actually calculate margin (without lying to yourself)
The formula is simple. The discipline of populating it correctly is where brands fail.
CM1 per unit = Net revenue per unit − (COGS + landing freight + duties + scaling payment fees)
CM2 per unit = CM1 − (paid media spend ÷ units acquired)
CM3 per unit = CM2 − (outbound shipping + returns reserve + post-purchase CS + pick-pack labor)
Six places we see brands quietly inflate the number.
- Using list price, not net of discount. Discount at 10% blended, your real revenue baseline is $44, not $49. Pull actual order-line discount from Shopify, not your promo schedule. HBR's pricing strategy work puts effective realized price 5–15% below list for most DTC categories.
- Forgetting payment processing. 2.9% + $0.30 is not optional. On a $49 AOV it is a real $1.50+ leak per order.
- Ignoring inbound freight and duties. This is COGS, not "ops cost." Brands with overseas suppliers routinely understate true product cost by 8–12%.
- Treating CAC as just Meta spend. True CAC includes Google, TikTok, influencer fees, plus agency or in-house buyer comp. McKinsey's CMO benchmark survey puts the gap between platform-reported and fully-loaded CAC at 35% on average.
- Reserving 0% for returns. If you sell apparel or beauty, returns are 8–25%. Reserve at the historical rate. The NRF annual returns report tracks the trend.
- Excluding shipping subsidy. "Free shipping" is not free. It is a $4–$8 per-order cost. Either price it in or count it in CM3.
The cleanest test: if your CFO's reported gross margin and your ad team's CM1 disagree by more than 3 points, one of you is using the wrong inputs. Reconcile before you run another budget meeting.
Where CAC, LTV and margin actually meet
Contribution margin is the bridge between unit economics and growth math. The relationship is mechanical, not metaphorical.
Allowable CAC = CM1 × (1 + expected repeat contribution within payback window)
If your CM1 is $33 and you expect $40 of additional contribution from the same customer in the next 12 months, your allowable CAC is $73, not $33. This is the math that lets brands rationally bid above first-purchase margin.
The operating constraint is payback period. Venture-funded DTC brands typically run 6–9 month payback. Bootstrapped brands need 0–3 month payback or they run out of cash before LTV materializes. Bain's research finds retention curves flatten by month 4 for the median DTC brand. The retention curve glossary entry walks the math.
Three reads to keep in front of you weekly:
- CM2 first-purchase: covering CAC on the first transaction, or borrowing from repeat?
- Payback period in months: how long until cumulative CM3 from a cohort exceeds acquisition cost?
- Repeat-rate stability: is your 90-day repeat moving up, flat, or down?
When all three are healthy, you can scale aggressively even at low first-purchase margin. When one is broken, you compress immediately.
What to do when margin compresses
Margin rarely collapses overnight. It compresses 50–150 bps per month for two or three quarters, then someone notices in a board meeting. By that point, the levers that would have worked at the start are no longer enough.
The diagnostic order, fastest-cheapest-first:
1. Audit your discount stack. Pull the last 90 days of Shopify orders and compute realized AOV vs list AOV. If the gap widened, your offers are eating margin. Look at promo cadence on adlibrary against your own. If you are running 25%+ off more often than your top three competitors, you have a creative problem masquerading as a pricing problem.
2. Reconcile platform CAC with bank CAC. Sum reported customers across Meta + Google + TikTok, then compare to actual new-customer count from Shopify. If the gap is more than 25%, you are over-attributing and CM2 is worse than the dashboard says. The post-iOS 14 attribution rebuild playbook walks the reconciliation.
3. Check creative refresh cadence. When ad fatigue sets in, CPM drifts up and conversion rate drifts down, both compress CM2. The creative testing bottleneck post lays out the test cadence. Pair it with the ad fatigue diagnosis workflow.
4. Review fulfillment cost per order. Pick-pack labor and last-mile shipping have both inflated 12–18% in 2025–2026. If you have not repriced or repackaged, CM3 is leaking right now without anyone touching the ad account.
5. Test price elasticity. The lever brands resist longest and should try first. Across DTC accounts, most brands could raise price 5–8% without measurable conversion impact, which flows directly to CM1.
Start with #1 and #2. They do 80% of the damage. Diagnose before you optimize.
Frequently asked questions
What is a good contribution margin for DTC ecommerce?
A healthy DTC brand targets CM1 of 60–75%, CM2 of 20–35%, and CM3 of 18–28% blended. Below 15% CM3 means you cannot self-fund growth past current spend levels. Apparel and beauty run higher CM1, food and beverage run lower.
How do I calculate contribution margin from Shopify and Meta data?
Pull Shopify gross revenue minus discounts, COGS, and payment fees for CM1. Add Meta + Google + TikTok ad spend divided by Shopify new customers for CAC, then subtract from CM1 for CM2. Subtract Shopify shipping costs, return refunds, and pick-pack from CM2 for CM3.
What CM do I need to scale Meta ads profitably?
Target CM2 of 0% or better on cold traffic if your 90-day repeat rate is above 25%, and 10–15% CM2 if repeat is below 20%. CM3 blended should hold above 18% before increasing daily spend by more than 20% week-over-week.
How does contribution margin relate to break-even ROAS?
Break-even ROAS = 1 ÷ contribution margin percentage. A brand with 40% CM1 needs 2.5x ROAS to break even on first purchase. The break-even ROAS calculator computes this directly.
Bottom line
Contribution margin is not a finance metric the ad team gets handed quarterly. It is the operating constraint that decides whether tomorrow's spend is rational. Track CM1, CM2 and CM3 separately, gate channel scaling on CM3 not ROAS, and use competitor offer evolution as the early-warning system for industry-wide margin compression. The brands that survive 2026 are the ones reading their P&L weekly, not their dashboard.
Further Reading
Related Articles

ROAS in 2026: The Number Every Operator Argues About
ROAS = revenue ÷ ad spend, but the number on your dashboard is modeled, not deterministic. Benchmarks by category, breakeven formula, attribution honesty.

Marketing Efficiency Ratio (MER) in 2026: The DTC Metric That Doesn't Lie
Marketing efficiency ratio explained for DTC: formula, benchmarks, MER vs ROAS, and why MER replaced ROAS as the post-iOS14 planning metric.

How to Calculate ROAS: Formula, Break-Even Math, and Industry Benchmarks
Learn the exact ROAS formula, how to calculate break-even ROAS by margin, ROAS vs ROI vs MER, blended ROAS post-iOS, and benchmarks by industry vertical.

What Does ROAS Stand For? A Practitioner's Read (Beyond the Acronym)
ROAS = Return on Ad Spend = revenue ÷ ad spend. Learn the five ways ROAS misleads, how to set target ROAS from your margin, and what actually moves the number.

Data-Driven DTC Growth: Analyzing 2026’s Fastest Scaling Brands
Data-driven DTC growth strategies from 2026's fastest-scaling brands. Creative testing, channel mix, unit economics, and retention playbooks that actually work.

DTC Ad Intelligence: Creative Frameworks That Drive Revenue in 2026
Three proven DTC creative frameworks for 2026 — Hook→Promise→Proof, Problem→Pivot→Payoff, Identity→Tribe→Status — built from live ad intelligence data, not guesswork.

Facebook ads for ecommerce stores: the stack that scales past €10k/mo
Scale your ecommerce store past €10k/mo with the Facebook ads stack that actually works: catalog feed, CAPI, Advantage+ Shopping, creative velocity, and MER as your north star.

Historical Ad Data Analysis: Turn Past Campaigns Into Future ROAS
Historical ad data analysis turns 24 months of paid spend into a creative ledger, cohort verdicts, and a no-fly list for next quarter's plan.