Skip to main content

ROAS Is Not Profit

Translate platform ROAS into contribution profit by accounting for margin, returns, discounts, fees, customer mix, and incremental demand over time.

Robbie Jack
Robbie Jack
13 min read
Share
ROAS Is Not Profit
ROAS Is Not Profit

A 4.0 ROAS can lose money.

A 2.0 ROAS can create it.

Both are true because return on ad spend is a revenue ratio, not a profit calculation. It tells you how much attributed revenue appeared for each dollar of advertising. It doesn't tell you how much of that revenue the business kept, how much was incremental, when the cash arrived, or whether the customers were new.

And yet ROAS is still treated like the verdict.

Agencies put it at the top of the report. Platforms optimize around it. Growth teams move budget on it. Boards ask why it went down. A higher number is presumed better even when it came from lower-margin products, returning customers, heavy discounts, long payback, or demand that already existed.

ROAS is useful. It isn't profit. The operator's job is to build the bridge between them.

What Does ROAS Actually Measure?

The basic formula is:

ROAS = attributed revenue / ad spend

Spend $100,000, attribute $400,000 of revenue to ads, and ROAS is 4.0.

That number can track campaign movement under a consistent attribution rule. It can show whether the platform is finding more or less conversion value. It can support bidding when the values you send reflect meaningful business differences.

It excludes:

  • Product or service delivery cost
  • Shipping and fulfillment
  • Payment processing
  • Discounts and promotions
  • Returns, refunds, cancellations, or chargebacks
  • Variable sales or support cost
  • Creative, affiliate, agency, or other acquisition costs
  • The difference between new and returning customers
  • The difference between attributed and incremental revenue
  • The timing of contribution and cash payback

Two campaigns with identical ROAS can therefore have completely different economics.

That isn't a flaw in the formula. It's a flaw in the decision when a narrow operating metric is asked to represent the P&L. Building the bridge requires the same financial fluency leadership already expects everywhere else in the business.

Start With Net Revenue, Not Checkout Revenue

The first bridge runs from attributed gross revenue to revenue the business actually recognizes.

An order enters the ad platform at its checkout value. Then some of that value disappears through discounts, refunds, cancellations, returns, credits, or taxes collected on behalf of a government. If platform reporting keeps the original value while the commerce or finance system records less, ROAS starts with an inflated numerator. That's one version of the truth gap in marketing data.

Use:

Net revenue = gross order value - discounts - returns - refunds - cancellations - excluded taxes

The exact definition has to match finance. The goal isn't a special marketing version of revenue. It's reconciling the marketing cohort to the revenue the company books.

Which metric you pull matters more than most teams assume. In Google Analytics, Total revenue is defined as revenue from purchases, subscriptions, and advertising "minus any refunds given," and Item revenue is item price times quantity less refunds, excluding tax and shipping, and is populated by the purchase and refund events. Purchase revenue, the metric most often quoted in a growth report, carries no refund treatment in its definition at all. And even the refund-aware metrics only subtract the refunds your implementation actually sends. A refund metric existing in the schema doesn't prove your pipeline populates it.

Run a monthly reconciliation:

  1. Export platform-attributed purchase or revenue events.
  2. Match them, where permitted and practical, to orders or customers in the source system.
  3. Apply actual refunds, cancellations, and discounts.
  4. Compare totals with finance-recognized revenue.
  5. Record unmatched value and timing differences.

If you can't build that bridge, label platform ROAS a directional platform metric. Don't promote it to company return.

How Does Margin Change the ROAS You Need?

Once revenue is clean, subtract the variable costs required to deliver it.

Contribution before advertising = net revenue - variable delivery costs

Variable delivery costs depend on the model:

  • Ecommerce: landed product cost, pick and pack, outbound shipping subsidies, payment fees, and variable support or return handling
  • SaaS: infrastructure, usage-based services, payment fees, onboarding, and support that varies with customers
  • Lead generation: qualification labor, sales commissions, call costs, and fulfillment attached to won business
  • Marketplace: supplier or provider payout, payment cost, incentives, and transaction support

Then:

Contribution after advertising = contribution before advertising - ad spend

Assume two campaigns each report $400,000 revenue on $100,000 spend. Both show 4.0 ROAS.

Campaign A sells a product mix at 70% contribution margin before advertising. It creates $280,000 of contribution before ads and $180,000 after ads.

Campaign B sells a product mix at 25% contribution margin before advertising. It creates $100,000 before ads and $0 after ads.

Same ROAS. One campaign produces real contribution. The other reaches break-even before a dollar of fixed overhead is covered.

Break-even revenue ROAS falls straight out of the contribution margin rate:

Break-even ROAS = 1 / contribution margin rate

At a 70% contribution margin rate, break-even ROAS is about 1.43. At 25%, it's 4.0. At 20%, it's 5.0.

These are mathematical outputs, not industry benchmarks. Your margin definition controls the answer.

Build the Contribution-Margin ROAS Bridge

Use this artifact for every material channel, campaign type, offer, or customer segment.

LineCalculationIllustrative value
Platform-attributed revenueReported conversion value$500,000
Less refunds and cancellationsActual source-system adjustments($35,000)
Less discounts not reflectedActual discount reconciliation($15,000)
Net attributed revenueRevenue after adjustments$450,000
Less variable delivery costsProduct, fulfillment, fees, variable service($247,500)
Contribution before advertisingNet revenue less delivery cost$202,500
Less media spendPlatform cost($100,000)
Less variable acquisition costsCreative, affiliate, commissions, incremental service($22,500)
Contribution after acquisitionAmount available for fixed overhead and profit$80,000

The corresponding metrics:

  • Platform revenue ROAS: 500,000 / 100,000 = 5.0
  • Reconciled revenue ROAS: 450,000 / 100,000 = 4.5
  • Contribution ROAS before ads: 202,500 / 100,000 = 2.025
  • Contribution after acquisition: $80,000

Don't confuse contribution ROAS with contribution after advertising. A contribution ROAS of 2.025 means $2.025 of pre-ad contribution per ad dollar. The $80,000 left after ad spend and every other variable acquisition cost is the operating outcome.

The point of the bridge isn't a more impressive acronym. It's showing where platform revenue becomes business value and where it leaks away.

Product Mix Can Reverse the Campaign Ranking

Revenue ROAS assumes a dollar of revenue is equally valuable across every sale. It rarely is.

A single campaign can generate:

  • High-revenue, low-margin products
  • Discounted bundles with strong conversion but weak contribution
  • Products with high return or support rates
  • Entry offers that lose money initially but lead to profitable repeat behavior
  • Lower-revenue products with excellent margin and retention

If the platform receives only revenue, it will rationally optimize toward whatever creates the most attributed revenue — not the most contribution.

Google's documentation is direct about this. Conversion values are advertiser-supplied and can represent sales revenue or profit margins, and Target ROAS sets bids to maximize that conversion value against the target you choose. Real control — but only if the input value is sound.

Where practical, send contribution-aware values instead of raw checkout revenue. If exact transaction margin isn't available, use a maintained proxy by product category, lead stage, customer type, or predicted value band. Then reconcile the proxy against realized cohorts.

The platform can optimize the signal you provide. It can't repair an economically blind one.

New and Returning Revenue Need Different Treatment

A campaign that repeatedly converts existing customers will report excellent ROAS. That doesn't mean it's acquiring customers efficiently.

Returning customers usually bring:

  • Higher conversion rates
  • Existing brand preference
  • Lower persuasion requirements
  • Different margin or discount behavior
  • A meaningful probability of buying without the ad

None of that makes advertising to them bad. Replenishment, cross-sell, and reactivation create real value. But acquisition and retention are different jobs with different allowable costs — and retention can't rescue economics that were never there in the first place.

Split reporting into:

  1. Net-new customer revenue and contribution
  2. Active-customer repeat revenue and contribution
  3. Lapsed-customer reactivation revenue and contribution
  4. Unknown customer status

Then assign a cost policy to each segment.

An acquisition campaign shouldn't hit its target because loyal customers clicked an ad before buying. A retention campaign shouldn't be judged against a first-order acquisition ceiling. A reactivation campaign needs a definition of "lapsed" and evidence that the ad accelerated or caused the return.

Platform ROAS often looks strongest precisely where the campaign is harvesting the easiest existing demand.

Attributed Revenue Is Not Incremental Revenue

Even a perfectly reconciled, margin-aware attribution report doesn't prove causality.

If an ad receives credit for $450,000 of net revenue, some portion would have occurred without it. Brand search, retargeting, and campaigns aimed at existing customers are the obvious places to inspect, but no channel is automatically incremental or non-incremental.

The causal bridge is:

Incremental contribution = contribution that occurred because of marketing

Then:

Incremental contribution after advertising = incremental contribution - ad spend

Estimate it with an appropriate experiment: user holdout, geo test, conversion lift, or another credible counterfactual. For major portfolio decisions, calibrate longer-horizon models against experiment results.

Don't take a lift percentage from one test and apply it permanently. Incrementality shifts with spend, audience saturation, creative, brand strength, season, and competitor behavior.

Don't discard attribution either. It remains valuable for operating campaigns and diagnosing changes. The discipline is labeling the claim, and running each measurement lens for the question it can actually answer:

  • "Platform-attributed revenue" describes credit.
  • "Reconciled contribution" connects credit to the P&L.
  • "Estimated incremental contribution" makes a causal estimate.

Those three phrases should never be interchangeable in a board report.

Payback Can Make a Profitable Cohort Unfundable

A customer can be profitable over twelve months and still create a cash problem today.

Acquisition costs $300. The customer produces $50 of contribution per month before acquisition. Payback is six months. Double the growth rate and the business has to finance a much larger pool of unrecovered CAC across those six months.

Now shift the same lifetime contribution so most of it arrives in months ten through eighteen. Lifetime ROAS looks identical. The working-capital requirement is not.

Report:

  • First-order or first-month contribution
  • Cumulative contribution by cohort month
  • CAC payback month
  • Contribution at the board-approved horizon
  • Forecast value beyond the horizon, clearly separated

Never let projected lifetime revenue justify an immediate expense without showing when the cash comes back.

This bites hardest when the business is growing fast. Accounting expenses marketing the moment you spend it; economically it behaves like an asset you're financing. Growth just widens the gap. If the company can't fund it, theoretical lifetime profitability won't protect it.

Set a Contribution-Aware Decision Table

Replace one universal ROAS target with a table tied to the economics.

ConditionInterpretationDecision
Revenue ROAS up; contribution after acquisition downProduct, discount, return, or customer mix worsenedRevise value signals and offer mix
Revenue ROAS down; contribution dollars upMore volume at acceptable marginal economicsConsider scaling
Platform ROAS strong; business revenue flatAttribution overlap, tracking, or timing needs investigationHold major increases
Contribution positive; payback beyond cash limitEconomically viable but currently unfundableSlow pacing or improve cash timing
New-customer contribution weak; returning ROAS strongRetention is subsidizing acquisition reportingSplit campaigns and budgets
Incremental contribution below spendAds aren't creating enough valueStop or redesign the intervention

Add explicit thresholds from your own model:

Then predeclare four actions: scale, hold, revise, stop.

The threshold isn't "ROAS above 3." It's "this campaign creates enough risk-adjusted contribution inside the approved horizon, after every variable cost we cause." And when the decision is a budget increase rather than a campaign verdict, ask the same question of the marginal dollar rather than the average.

Report the P&L Bridge Every Month

A useful monthly acquisition report fits on one page:

  1. Spend: media and other variable acquisition cost
  2. Platform view: attributed conversions, revenue, and ROAS
  3. Reconciliation: refunds, cancellations, discounts, and unmatched revenue
  4. Contribution view: variable delivery cost and contribution after acquisition
  5. Customer view: new, active, lapsed, and unknown mix
  6. Time view: cohort payback and realized versus forecast value
  7. Causal view: active experiments and estimated incremental contribution
  8. Decision: scale, hold, revise, or stop

Growth prepares the operating explanation. Finance approves revenue and margin definitions. Data verifies the bridge and the customer identity rules. Leadership approves the cash and return thresholds.

When the numbers disagree, preserve the disagreement long enough to learn from it. Don't overwrite finance revenue with platform revenue. Don't drop an experiment estimate into a campaign dashboard as though it were an observed transaction.

Accountability isn't one clean number. It's a clean bridge between numbers.

Optimize for Contribution, Not the Prettiest Ratio

ROAS stays useful because it's fast and familiar. Keep it in the report. Just stop asking it to be profit.

Begin with net revenue. Subtract the costs required to deliver the sale. Separate new and returning customers. Include every variable acquisition cost the decision causes. Show payback. Then test how much of the contribution was incremental.

If revenue ROAS falls while contribution dollars and customer quality improve, scaling may be right. If ROAS rises because discounts, low-margin products, returning customers, or attribution overlap increased, scaling may be destructive.

The ad account is a scoreboard; the ratio at the top of it is one column in a much longer bridge. The goal was never the highest ROAS. It's the most contribution the business can create inside its cash and risk constraints.

If you need an operator to connect platform performance to that outcome, apply to work with us.

Robbie Jack

Founder, GrowthMarketer

Co-founded TrueCoach, scaling it to 20,000 customers and an 8-figure exit. Now runs GrowthMarketer, helping scaling SaaS and DTC brands build AI-native growth systems and profitable paid acquisition engines.

I write about what's actually working in paid growth

Campaign teardowns, attribution fixes, and the systems behind 50+ brand partnerships — sent when I publish.

Unsubscribe anytime. Privacy policy