UNREALMANGO

OWNER-RUN / MARKETING + PRODUCTION

How-to / 01 SEPT 2026

ROAS formula: one line of arithmetic, and the two numbers that decide the answer

ROAS is revenue divided by ad spend. The formula in three notations, the three revenue-and-spend pairs behind it, and where each number is exported from.

Cover headed 'The ROAS formula' with 8,000 dollars over 2,000 dollars resolving to 4, three tags reading 4:1, 4x and 400 percent, the line 'the division is trivial, the work is which revenue and which spend', and a strip naming platform ROAS, blended ROAS and new-customer ROAS with the pair each one divides
Field note / How-to Evidence.
Method. Decision.
Read the article

ROAS is revenue divided by the advertising spend that produced it: $8,000 of revenue on $2,000 of spend is a ROAS of 4, written 4x, 4:1 or 400%. The division is trivial. The work is deciding which revenue and which spend go into it, then pulling both out of the right report without quietly changing the window or the field.

How this was checked. Column and field names below were taken from the reporting interfaces themselves in August 2026 — Google Ads, Meta Ads Manager, GA4 and Amazon Ads — and the procedure at the end is the one we run on retainer accounts. Worked figures are illustrative and stated where they appear; no client account is quoted. Benchmarks are deliberately absent: what counts as a good ROAS is a margin question and a different piece of arithmetic from this one.

The ROAS formula, and the three ways the same answer gets written

ROAS = revenue ÷ ad spend. That is the entire formula, and every ranking page agrees on it. What trips people up is that one result has three standard notations, and dashboards mix them freely.

RevenueAd spendRatioMultiplierPercentage
$8,000$2,0004:14x400%
$5,000$2,0002.5:12.5x250%
$3,000$2,0001.5:11.5x150%
$1,600$2,0000.8:10.8x80%

To move between them: multiply the multiplier by 100 for the percentage, and write it against 1 for the ratio. A 400% ROAS is not a 400% return in the sense a finance team would use the word. It is four dollars of credited revenue per dollar spent, and one of those four dollars was the spend. Anything under 100%, or under 1.0x, means the campaign was credited with less revenue than it cost, before a single cost of goods has been subtracted.

Diagram of the ROAS formula: revenue of 8,000 dollars over ad spend of 2,000 dollars resolving to 4, with the same result labelled 4:1, 4x and 400 percent, and a note that the spend sits inside the revenue

Which revenue and which spend: the three input pairs behind one formula

Three input pairs are in common use, and a brand running all three will see three different numbers for the same month. None of them is a wrong calculation. They are different extractions.

VersionNumeratorDenominatorExported fromThe field that usually goes wrong
Platform ROASconversion value the platform credited to its own adsspend on that one platformthe platform’s campaign reportthe value in the tag payload, not the one in your ledger
Blended ROASall revenue in the period, every sourceall advertising spend in the periodstore or accounting export plus every ad invoicewhether agency fees and tools count as advertising spend
New-customer ROASrevenue from first-time buyers onlyall advertising spend in the periodstore export filtered on customer statuswhich system decided the buyer was new

Pick one, label it every single time you report it, and never compare a number from one row against a number from another. Where the thresholds sit — the ROAS that merely breaks even, and the floor the first-time-buyer version has to clear — is margin arithmetic that belongs in its own calculation, not in the extraction step.

Three input pairs for the ROAS formula shown side by side: platform ROAS dividing platform-credited value by platform spend, blended ROAS dividing all revenue by all ad spend, and new-customer ROAS dividing first-time-buyer revenue by all ad spend

Google Ads calculates ROAS for you and calls it Conv. value / cost. Add it from Columns → Modify columns → Conversions, and it appears as a multiplier: 4.00 means 4x. There is a second column, All conv. value / cost, which uses every conversion action in the account rather than only those marked as primary. The two diverge whenever those secondary actions carry a value of their own — a proxy figure on a lead form, a fixed amount on a tracked call — and in that case the wider column is not the more accurate one. It is a different question being answered.

The value itself is decided where the conversion action was set up, not in the report. A conversion action carries either a fixed value assigned once, or a transaction-specific value read from the tag on the confirmation page. Fixed values are the quiet failure: every order reads as the same amount, so the ratio tracks conversion volume rather than revenue, and nobody notices until average order value moves.

Meta: several purchase ROAS columns, and they cover different surfaces

Meta Ads Manager does not have one ROAS metric. It has a family: Purchase ROAS (return on ad spend) as the aggregate, plus Website purchase ROAS, mobile app purchase ROAS, offline purchase ROAS and on-Facebook purchase ROAS as the components. Reporting the aggregate one month and the website one the next produces a change you will spend an afternoon explaining.

The numerator arrives from the purchase event itself, through the pixel, through server-side event delivery, or through both with deduplication in between. Whatever value sits in that event payload is the revenue Meta divides. The attribution setting lives on the ad set, where it also drives delivery, but Ads Manager lets you re-express finished results under a different window at reporting time. So the reported ROAS for a period that has already closed can move with nothing having changed in the account.

GA4: the revenue field is whatever your purchase event said it was

GA4 exposes Return on ad spend once cost data reaches it — automatically through a linked Google Ads account, or through a cost data import for everything else. Without that import there is no denominator, and the metric stays empty no matter how clean the revenue side is.

The numerator is GA4’s total revenue — purchase revenue plus any subscription and ad revenue the property collects. For a store that only fires purchase, that is the sum of the value parameter on those events and nothing else, which is why publishers and app businesses see a GA4 figure that sits above their store’s. Google’s ecommerce guidance is that value should be total revenue excluding tax and shipping, but nothing in GA4 enforces it: whatever the developer put in the parameter is what the report divides. Check one real order against one real invoice before trusting a series of them.

GA4’s ROAS will not match the number in Google Ads for the same campaign and same dates. That gap has its own set of causes on the counting side, and chasing it to zero is not the goal here — the goal is that each source stays internally consistent month to month.

The denominator: what a platform calls spend, and what your finance team does

The cost column in an ad platform is media cost, and only media cost. It excludes agency management fees, creative production, the tools that produced the reporting, and in several countries the regulatory surcharges and taxes that appear on the invoice rather than in the campaign screen. The invoice total is therefore reliably higher than the number the ROAS column divided by. The full shape of that bill is a separate breakdown, covered in what Google Ads actually costs.

The rule that keeps a series comparable is simple and worth writing down once. Platform ROAS uses platform media cost, because that is what the platform is being measured on. Blended ROAS uses the invoice total plus every other line you have decided counts as advertising. Whichever you choose for the blended figure, it has to stay chosen — adding agency fees to the denominator in March produces a drop that looks like a performance problem and is not.

The numerator: tax, shipping, discounts and the refund that never comes back out

Whether tax and shipping sit inside the credited revenue depends on how the purchase event was built, and both are common. A $100 order can reach the platform as $100, as $108 with tax, or as $115 with tax and delivery, and each version produces a different ROAS on identical performance. Discount codes behave the same way: the value only drops if the event sends the amount actually charged rather than the list price.

Refunds are the larger gap. Ad platforms record conversion value at the moment of purchase, and a later refund does not reverse it on its own — Google Ads accepts adjustments that restate or retract a recorded value, while Meta has no equivalent for a refunded purchase. In categories where returns are routine, a gross platform numerator drifts steadily above the money that stayed in the bank, and the drift grows with volume rather than staying proportional.

So decide the numerator once: gross revenue as credited, or revenue net of refunds. Apply it to every month in the series, including the ones already logged. And keep in mind that even a clean single-order figure is one purchase, not a customer — the customer lifetime value calculation is what turns it into the number a bid should actually chase.

Where the two numbers come from: a Google Ads panel showing the Conv. value over cost column, a Meta panel showing purchase ROAS variants, a GA4 panel showing return on ad spend with imported cost, and a store panel showing orders with refunds recorded separately

The same ratio inverted: ACoS

One report will hand you the inverse instead. ACoS — advertising cost of sales, the metric Amazon reports by default — divides ad spend by sales, where ROAS divides sales by ad spend, so ROAS = 1 ÷ ACoS. The conversion is exact arithmetic. The habits are not interchangeable: a lower ACoS is better and a higher ROAS is better, so a single dashboard mixing both invites exactly the reading error you would expect. Advertising cost of sales, its break-even threshold and the places where the inversion stops being safe are a separate discipline with a separate denominator, and they are treated on their own page.

Calculating ROAS in Excel or Google Sheets

With revenue in column B and ad spend in column C, ROAS in D2 is =B2/C2. Format the cell as a number with two decimals to read 4.00, or as a percentage to read 400%. For the ratio form, =TEXT(B2/C2,"0.00")&":1" produces 4.00:1 as text.

For a monthly figure, sum both sides over the same date range so neither can silently cover more days than the other:

=SUMIFS(B:B, A:A, ">="&DATE(2026,9,1), A:A, "<="&DATE(2026,9,30)) / SUMIFS(C:C, A:A, ">="&DATE(2026,9,1), A:A, "<="&DATE(2026,9,30))

Two guards are worth adding before the sheet goes to anyone else. Wrap the division in =IFERROR(...,"") so a month with zero spend returns a blank rather than #DIV/0!. And never average a column of monthly ROAS values to get a yearly figure — that treats a $500 month and a $50,000 month as equals. Divide the year’s total revenue by the year’s total spend instead.

The formula has no volume term, so ROAS can rise while revenue falls

ROAS is a ratio, which means it is scale-free: it says nothing at all about how much money moved. Cutting a budget back to whichever slice converts most cheaply reliably raises it.

ScenarioAd spendCredited revenueROAS
Full account$10,000$40,0004.0x
Cut back to the cheapest-converting slice$2,500$15,0006.0x

The second row is a 50% better ratio and $25,000 less revenue. Both statements are true, and a report that shows only the ratio shows only the flattering one. The fix costs nothing: report ROAS as a row of three numbers — spend, revenue, ratio — and never as a single figure on a slide.

A monthly ROAS reconciliation, in eight steps

  1. Fix the window first. A calendar month, identical on both sides. Most reporting disputes are two exports covering different days.
  2. Pull platform spend from each platform’s campaign report for that window — media cost, matching what the ROAS column divides by.
  3. Pull the invoice totals as a separate figure: media cost plus surcharges and taxes, plus whatever else you decided counts as advertising — agency fees, production, tools. This is the blended denominator, and the campaign screen will never give it to you.
  4. Pull platform conversion value for the same window, from the same report, with the ROAS column visible so the platform’s own arithmetic is on screen next to yours.
  5. Pull total revenue from the store or accounting system for the same window, on the definition you fixed: gross, or net of refunds.
  6. Pull first-time-buyer revenue if your store flags customer status, using whichever definition it applies — consistently, even if you disagree with it.
  7. Compute all three ratios in one sheet, on one screen, with the input pair named in the row label: platform ratios on media cost, blended and new-customer on the invoice-based denominator.
  8. Log spend, revenue and ratio for each version. Three numbers per row, every month, in the same file.

What that builds is a series, and the series is the deliverable. One month’s ROAS in isolation answers nothing: it cannot separate a pricing change from a mix change from a tracking change. Twelve months of the same three extractions, taken the same way, will show you which of those happened — which is the actual job of paid media management, and the reason the extraction rules get written down before the reporting starts rather than after the first argument about it.

12 / Reader questions

Frequently asked questions

01What does 1.5 ROAS mean?

A 1.5 ROAS means $1.50 of revenue was credited for every $1.00 of ad spend, written 1.5x, 1.5:1 or 150%. It is a gross-revenue ratio rather than a profit figure: the $1.00 of spend sits inside the $1.50, and nothing has yet been taken out for cost of goods, payment fees or fulfilment.

02Is 0.8 ROAS good?

A 0.8 ROAS means 80 cents of credited revenue per dollar spent, so the campaign was credited with less revenue than it cost — before the cost of goods, payment fees or fulfilment come out at all. Below 1.0 is the only verdict the formula reaches on its own. Above 1.0, the answer depends on your margin, which is a separate calculation.

03Is 300% ROAS good?

A 300% ROAS is 3x — three dollars of credited revenue per dollar spent — and whether that is good depends on your margin, because the formula passes no judgement above 1.0. The percentage form is where most confusion starts: 300% return on ad spend is not a 300% profit, and one of those three dollars was the spend itself.

04How do you calculate ROAS in Excel?

ROAS in Excel or Google Sheets is a single division: =B2/C2 with revenue in B2 and ad spend in C2. Format the cell as a number with two decimals for the 4.00x form, or as a percentage for the 400% form. For a whole month, wrap both sides in SUMIFS over the same date range so the two totals cover exactly the same days.

05Why do Google Ads, Meta and your store report different ROAS for the same campaign?

Because each one divides a different pair of numbers. Every ad platform counts the conversion value its own tag credited to its own ads inside its own attribution settings, while your store counts orders it actually shipped and refunded. The practical rule is to compare each source against its own history and never against another source's number.

Turn the reading into a plan

Talk to the people who will actually do the work. We’ll give you a direct answer and a practical next step.

Book a call

Tell us where you want to grow. We reply within one business day.

Thanks — we’ve got it.

We’ll come back to you within one business day. If it’s urgent, WhatsApp us on +44 1223 790281.

Book a call

Leave your details and we’ll come back within one business day to arrange a time.

Thanks — we’ve got it.

We’ll come back to you within one business day. If it’s urgent, WhatsApp us on +44 1223 790281.