Contribution ROAS: The Margin-Aware Metric That Closes The Gap

Metricuno
August 18, 2026
4 min read
Contribution ROAS: The Margin-Aware Metric That Closes The Gap — Contribution ROAS swaps revenue for contribution margin in the ROAS numerator. Formula, channel benchmarks, and when cROAS beats ROAS for paid-media decisions.
Quick answer

Contribution ROAS (cROAS) divides contribution margin by ad spend — the single metric swap that keeps paid-media dashboards honest through promo seasons and discount codes.

Definition
Paid media / unit economics

Contribution ROAS (cROAS)

Contribution ROAS is contribution margin divided by ad spend — the margin-aware version of ROAS that reflects what actually funds acquisition.

Contribution ROAS (cROAS) replaces gross revenue in the ROAS numerator with contribution margin: the dollars left after COGS, payment fees, shipping, returns, and discount codes. A €1 ad spend that drives €4 of revenue on a discounted, high-return SKU can produce a healthy 4.0 ROAS while contributing only €0.60 of margin — a 0.6 cROAS that loses money on every click.

The metric matters because ROAS and profitability diverge exactly when stakes are highest: promo weeks, bundle offers, and free-shipping thresholds. cROAS closes that gap so buying decisions, bid caps, and weekly trading reviews reflect economics finance will actually sign off on.

Also known as
Margin ROAS
Profit ROAS
Contribution-margin ROAS

Standard ROAS treats every euro of revenue as equal. It isn't. A €80 order on a full-price item and a €80 order on a 30%-off bundle with free shipping and a €12 return probability produce wildly different contribution — but identical ROAS. Media buyers optimising toward the same ROAS target end up scaling the worst orders.

cROAS fixes the numerator. Instead of asking "how much revenue did this spend produce?", it asks "how much money did we keep after variable costs, before we paid the ad platform?". That framing is closer to how a CFO thinks about paid media, and it survives the promotional calendar without a spreadsheet of asterisks.

Formula

cROAS = (Revenue - COGS - Discounts - Payment Fees - Shipping - Returns Reserve) / Ad Spend

Variables

Revenue

Gross revenue attributed

Net of taxes; the same revenue figure feeding your ROAS numerator today.

COGS

Cost of goods sold

Landed unit cost of the products sold, including inbound freight and duties.

Discounts

Promo & code discounts

Sitewide promos, code redemptions, and automatic bundle discounts applied to the order.

Payment Fees

Processor fees

Shopify Payments / Stripe / PayPal fees — typically 1.4-2.9% + fixed component.

Shipping

Net shipping cost

Carrier cost minus shipping revenue collected. Free shipping = full carrier cost.

Returns Reserve

Expected returns cost

Category-level return rate × (refunded revenue + reverse logistics + restocking loss).

Ad Spend

Media investment

Platform spend for the same window and attribution scope as revenue.

Worked example

An apparel Shopify store runs a 20%-off sitewide promo on Meta prospecting. In one week: €40,000 attributed revenue, €14,000 Meta spend.

Revenue: €40,000

COGS (28% of gross list): €14,000

Promo discount (20% off): €10,000

Payment fees (1.9%): €760

Net shipping cost: €2,400

Returns reserve (18% apparel): €3,200

Ad spend: €14,000

ROAS = 40,000 / 14,000 = 2.86. cROAS = (40,000 − 14,000 − 10,000 − 760 − 2,400 − 3,200) / 14,000 = 9,640 / 14,000 = 0.69

The dashboard shows a 2.86 ROAS — comfortably above the 2.0 target. cROAS reveals the campaign returned €0.69 of margin per €1 of spend: the promo week lost money on paid social, and scaling it would compound the loss.

The break-even threshold for cROAS is 1.0 by definition — every euro above 1.0 is margin the business keeps before fixed costs. That makes cROAS uniquely usable as a bid-strategy floor and as the single number finance and media can align on, which is why it usually outperforms MER for weekly decisioning even though MER is easier to compute.

Benchmark

Typical cROAS ranges by channel and stage — DTC apparel & beauty, full-price weeks

Channel / stageReported ROAScROAS (margin-adjusted)Break-even cROAS
Meta prospecting (cold)1.8 – 2.40.55 – 0.901.00
Meta retargeting5.0 – 8.01.60 – 2.801.00
Google Brand search8.0 – 15.02.80 – 5.201.00
Google Shopping (non-brand)2.5 – 3.50.75 – 1.301.00
TikTok prospecting1.4 – 2.00.40 – 0.751.00
Blended paid (MER-equivalent)3.0 – 4.01.00 – 1.501.00

Getting to a reliable cROAS number is mostly a data-plumbing problem, not a math problem. Most brands compute it weekly from GA4 attribution plus Shopify order exports, layer in a category-level returns reserve, and reconcile monthly against the P&L. The child guides on switching your weekly trading report to cROAS, building a daily cROAS dashboard from GA4 and Shopify, auditing what belongs in the numerator, and the first-order-vs-blended cut for subscription brands walk through each step. If you sell heavily on promo, the piece on why sitewide 20% promos crater cROAS is the fastest way to see the metric earn its keep.

Frequently asked

Contribution ROAS FAQ

ROAS uses gross revenue in the numerator; cROAS uses contribution margin — revenue minus COGS, discounts, payment fees, net shipping, and a returns reserve. ROAS tells you how much top-line the ad produced. cROAS tells you how much money you kept before overhead.

Practically yes — "profit ROAS" and "margin ROAS" are the terms media buyers use for the same idea. Strictly, contribution ROAS stops at contribution margin (variable costs only) and doesn't subtract fixed costs like salaries or software, so it isn't full profit ROAS.

Break-even is 1.0 by construction. Most DTC brands set a blended cROAS floor of 1.2-1.5 to cover fixed overhead and leave a margin. Channel-level targets vary: cold prospecting often runs 0.7-1.0, retargeting 1.8-3.0, brand search 3.0+.

MER (Marketing Efficiency Ratio) divides total revenue by total marketing spend across all channels — it's blended and revenue-based. cROAS uses contribution margin and can be computed per campaign. MER is easier; cROAS is more decision-useful, especially during promotions.

Not directly — the platforms only ingest revenue events. What you can do is feed adjusted revenue (revenue × contribution margin rate) via a custom conversion value, which effectively makes Target ROAS bid on margin. Otherwise, use cROAS to set the floor and let ROAS run above it.

No. A weekly cROAS is achievable from a GA4 export, a Shopify orders CSV, and a spreadsheet with margin rates by collection. A warehouse helps once you want it daily, per-campaign, and reconciled to the P&L — but it isn't the starting point.

Use a returns reserve, not actual returns, so the metric works in the same window as the ad spend. Apply a category rate (apparel 15-25%, beauty 3-8%, electronics 8-12%) to attributed revenue, and subtract the refunded revenue plus reverse-logistics cost.

Yes, but you need to pick first-order cROAS or blended cROAS deliberately. First-order cROAS almost always looks bad on subscription because the LTV is downstream; blended cROAS across the cohort's expected revenue is the honest number for scaling decisions.

A 20% off code shaves 20% off contribution margin but only fractionally moves ROAS (because higher AOV and conversion partially offset the discount in the numerator). cROAS puts the discount squarely into the numerator via lower margin — which is why it's the more useful metric during Black Friday and Cyber Monday.

Yes, that's one of its main uses — but keep the attribution model constant. Comparing Meta cROAS (last-click) to Google cROAS (data-driven) muddles the comparison. Freeze the attribution scope, then compare channel-level cROAS to reallocate budget.

Track CAC, channels, and funnel conversion in one place

Metricuno connects ad spend, funnel events, and revenue so you can see CAC by channel, cohort, and campaign — without stitching together five tools.