DEV Community

Cover image for ROAS vs ROI — The Metric Confusion That Quietly Costs EC Operators Money 2026
toshihiro shishido
toshihiro shishido

Posted on • Originally published at revenuescope.jp

ROAS vs ROI — The Metric Confusion That Quietly Costs EC Operators Money 2026

Last month a founder I advise told me their "ad ROI was 300%." I had to stop and ask: do you mean ROAS, or actual profit-based ROI? At a 30% gross margin those two numbers tell opposite stories — one looks healthy, the other is a loss. The formulas look so similar that they get swapped silently in the same meeting, and budget decisions quietly go backwards.

TL;DR

  1. ROAS = ad revenue ÷ ad spend × 100. ROI = profit ÷ total investment × 100. The numerator — revenue vs profit — is the whole difference
  2. At 30% gross margin, ROAS 300% is a loss — profit ROI lands around −11%
  3. ROAS is for daily ad optimization, ROI is for total-investment decisions including labor and production costs
  4. When someone says "ROI 300%," ask for the definition before acting on it

The formula difference

Both metrics measure "how much came back," but the numerator is different. ROAS uses revenue (before costs). ROI uses profit (after costs). ROAS also covers ad spend only, while ROI can cover the full investment — labor, production, tools.

ROAS vs ROI formula comparison — revenue or profit as the numerator

Ad platforms auto-report ROAS in real time, so it becomes the default for daily operations. ROI needs internal profit data, so it fits quarterly budget calls.

ROAS 300% can still be a loss

Here's the trap. At 30% gross margin, ¥100K of ad spend driving ¥300K of revenue (ROAS 300%) means ¥210K cost of goods plus ¥100K ad spend — ¥310K total against ¥300K revenue. That's a ¥10K loss. Profit ROI is roughly −11%.

At ROAS 300%, ROI can be positive or negative depending on gross margin

Treat ROAS as ROI and you'll pour more budget into a campaign that's actually bleeding. The fix is a breakeven ROAS reference: 1 ÷ gross margin × 100. At 30% margin that's 333%, so ROAS 300% is below the line.

When to use which

Use ROAS for campaign-level PDCA and channel comparison — it's auto-reported and easy to act on daily. Use ROI when the decision involves costs ad platforms don't see: people, creative, new channels like events or influencers. A practical order: stabilize ad efficiency with ROAS first, then layer in ROI to judge total investment.

When to use ROAS vs ROI — choosing by decision context

Three ways they get mixed up

In practice the confusion shows up in three recurring shapes:

  • Calling the ad-platform number "ROI." When Google Ads reports "cost efficiency," that's ROAS — it ignores gross margin and labor. Relabeling it ROI means deciding budget on a number that doesn't account for either.
  • ROAS and ROI side by side in one report. "ROAS 350% / ROI 25%" have different denominators and numerators. The bigger number isn't the better one, and reading them as comparable misrepresents real profitability.
  • Setting only a ROAS target. "Hold ROAS 300%" works until margin shifts — then the same ROAS means a different profit. Pair the target with a breakeven ROAS so the gap to actual ROI stays visible.

One thing worth being honest about

ROAS only ever sees paid advertising. Organic search, direct, and social organic efficiency are invisible to it. What I'm building with RevenueScope tracks revenue-per-session across all channels in real time — the part ROAS structurally can't show — so you can see which channels actually contribute before you reallocate budget. It's the step after ROAS, not a replacement for it.

Most operators don't need a perfect cross-channel ROI on day one. They need to stop confusing the ad-platform number with profit.


What's the worst ROAS-vs-ROI mix-up you've seen survive a budget meeting?

Top comments (0)