If you've ever scaled a campaign because ROAS looked great and watched net profit stay flat, or drop, you were optimizing the wrong number. ROAS and contribution margin answer genuinely different questions, and confusing the two is one of the most expensive habits a growing D2C brand can develop, because it doesn't just cause bad decisions occasionally, it systematically biases every scaling decision in the same wrong direction.
What ROAS actually measures
Revenue divided by ad spend. That's the entire calculation. It says nothing about product cost, fulfillment cost, payment processing fees, or returns. A brand can hit 6x ROAS and still lose money on every unit sold if the product margin is thin enough, or if returns are high enough, or if the ad spend required to hit that ROAS was still larger, in absolute terms, than the actual margin available per order.
ROAS is a ratio. Ratios are useful for comparing efficiency between campaigns, but they say nothing about the absolute rupee amount left over after every real cost is accounted for.
What contribution margin measures
Contribution margin per order is revenue minus COGS, minus shipping, minus payment gateway fees, minus the ad spend allocated to that order. Whatever's left after contribution margin has covered your fixed costs (team salaries, tools, rent, software subscriptions, agency fees) is your actual profit. Contribution margin is the number that determines whether scaling ad spend makes the business more profitable or simply larger while staying equally, or less, profitable.
A full worked comparison
Say a product sells for ₹1,000. COGS is ₹400, shipping is ₹100, payment gateway fees are around ₹30, and you spent ₹250 in ad cost to acquire that specific sale.
ROAS on that order: ₹1,000 / ₹250 = 4x. Looks strong on any dashboard.
Contribution margin: ₹1,000 − ₹400 − ₹100 − ₹30 − ₹250 = ₹220. Positive, and genuinely profitable, but nowhere near what a "4x ROAS" intuitively feels like it should deliver to someone reading the number without context.
Now imagine COGS was ₹600 instead of ₹400, a lower-margin category, or a heavily discounted bundle offer. Contribution margin drops to ₹20. Still technically profitable on paper, but a single return, a minor customer service refund, or a slightly higher-than-usual payment gateway fee on that transaction wipes out the entire margin. Meanwhile ROAS still proudly reports the same 4x, completely unaware that the underlying economics just became fragile.
Push the example one step further: if the ad spend required to generate that sale had crept up to ₹280 instead of ₹250 (perfectly plausible as auction costs rise with scale), ROAS drops slightly to 3.57x, still looks like a fine number to most people, but contribution margin at the ₹600 COGS level would now be negative ₹10. The business loses money on that order while the ROAS dashboard shows a number most marketers would be happy to report to a client or a boss.
Why blended targets across categories are dangerous
A supplements or personal care brand with 65-70% gross margin can comfortably absorb a lower ROAS and still be highly profitable, because the margin cushion per order is large. A fashion or footwear brand at 40-45% gross margin, especially once you factor in real category return rates, needs a meaningfully higher ROAS to hit the same contribution margin per order.
Using one blanket "we need 3x ROAS across everything" target, regardless of margin structure, is how agencies and in-house teams systematically over-scale low-margin product lines (because they're hitting the target ROAS while quietly losing money) and under-scale high-margin lines (because the team is anchored to a ROAS number that's easily beaten, leaving real profit on the table by not scaling harder).
Building your own contribution margin model
Start with SKU-level, not category-level, cost inputs. Pull actual COGS per product, actual average shipping cost (your real carrier cost, not what you charge the customer), your actual payment gateway percentage, and your trailing 90-day return rate broken out by product, not blended across your whole catalog.
Calculate a minimum viable ROAS for each product or product group: the ROAS at which contribution margin hits zero, given that product's specific cost structure. Anything below that number is destroying value per order, no matter how it looks in a blended account-level report. Anything comfortably above it is a genuine candidate for more ad spend.
Set your actual scaling decisions based on this SKU-level minimum viable ROAS, not a single number borrowed from an industry benchmark or a competitor's reported target.
Common mistakes brands make with this metric
Calculating contribution margin once and never revisiting it. Shipping rates change, supplier COGS changes, payment gateway terms get renegotiated, and return rates drift as your customer mix shifts. Treat this as a living number, reviewed at least quarterly.
Blending contribution margin across the whole account instead of by product. A high-margin bestseller can mask a low-margin product line quietly losing money on every sale, if you're only looking at one blended number for the whole ad account.
Ignoring the fixed cost layer entirely. Contribution margin covers variable costs and ad spend, but the business still needs enough total contribution margin, across all orders, to cover fixed costs like salaries and rent before anything becomes real profit. A positive contribution margin per order doesn't automatically mean the business is profitable overall if volume is too low to cover fixed costs.
Treating this as a one-time audit instead of an ongoing reporting layer. The value of contribution margin tracking comes from checking it alongside ROAS every reporting cycle, not from a single deep-dive analysis that then gets filed away and forgotten.
FAQ
Is ROAS a useless metric, then? No, ROAS remains genuinely useful for comparing relative efficiency between two campaigns, ad sets, or creatives within the same product and cost structure. The problem is using it as a standalone decision-making number across products with different margins, or as a proxy for actual profitability.
What's a realistic minimum viable ROAS? There's no universal answer, it depends entirely on your specific gross margin, shipping cost, payment fees, and return rate. Calculate it from your own numbers rather than adopting an industry rule of thumb.
How often should contribution margin be recalculated? Quarterly at minimum, and immediately after any meaningful change to COGS, shipping rates, or a noticeable shift in your return rate.
Should every campaign report contribution margin, or just top spenders? Ideally every campaign, but if resourcing is limited, prioritize your highest-spend campaigns first, since that's where a margin miscalculation does the most financial damage.
The takeaway
ROAS tells you whether an ad performed efficiently relative to spend. Contribution margin tells you whether the business actually made money from that spend. Track both, but let contribution margin, calculated from your real cost structure at the SKU level, be the number that decides whether a campaign gets more budget or gets pulled back. It's the difference between a dashboard that looks good and a P&L that actually is.