November 4, 2026 · 13 min read

ROAS Formula: Calculation and Worked Examples

Graphic title card for the article “ROAS Formula: Calculation and Worked Examples” with a stylised motif: target with an ad card.
Graphic: HumanITy

The ROAS formula is simple: divide the revenue your ads brought in by what you spent on them, ROAS = ad revenue ÷ ad spend. If €500 of ad spend brings in €2,000 in revenue, your ROAS is 4, or 400 % as a percentage. Whether that is good, you only know with your break-even ROAS, which is 1 divided by your margin: at a 35 % margin it sits at about 2.86. Below it, every ad loses money, even with a ROAS above 1. ROAS (return on ad spend) measures revenue, not profit, and it is only as honest as the revenue you put in: gross or net, before or after returns, from which attribution window.

In my business, Susi, my AI employee for ads, evaluates the campaigns. I give her a goal, she builds the campaign, sets it up in the Meta account forced into paused status by design, and I'm the one who flips it live. Her rule for evaluation: attribution runs strictly on Hyros, not on Meta's own attribution, and Meta only serves delivery diagnostics.

The ROAS formula

ROAS = attributed revenue ÷ ad spend

  • Attributed revenue is the revenue your measurement tool credits to the ads. Meta and Google call it conversion value.
  • Ad spend is what the ads cost in the same period.

You can write ROAS as a ratio or as a percentage: ROAS 4 and ROAS 400 % mean the same thing. Google expresses target ROAS as a percentage ("$5 USD in sales ÷ $1 USD in ad spend x 100% = 500% target ROAS"), while in Meta you enter the ROAS goal as a ratio (a 110 % return is entered as 1.100). A ROAS of 1 means revenue covers exactly the ad spend, but not a cent of your cost of goods.

Three worked examples

All three are made-up examples with round numbers, not client cases.

Example 1: online shop. Say you spend €500 a month on ads and Ads Manager shows €2,000 in purchase revenue. ROAS is 2,000 ÷ 500 = 4. Now correct twice. The shop reports gross prices, but the sales tax isn't yours to keep; with German VAT at 19 %: 2,000 ÷ 1.19 = €1,680.67 net, ROAS 3.36. On top of that, 15 % of orders come back: 1,680.67 × 0.85 = €1,428.57, ROAS 2.86. At a 35 % margin that leaves €500 contribution, exactly the ad spend. "ROAS 4" turned into a campaign that earns nothing.

Example 2: services with inquiries. An example: €300 in ads brings 12 inquiries, which turn into 3 jobs at €1,200 net each. ROAS is 3,600 ÷ 300 = 12. The catch is timing: the jobs close weeks after the click, through proposals and calls, often outside any attribution window. Here you calculate ROAS yourself from your sales records.

Example 3: subscription or membership. Say a membership costs €49 a month net, and €1,000 in ads brings 10 new members. If your purchase event only reports the first payment, the platform shows €490 in revenue and ROAS 0.49. If members stay six months on average, it's €2,940, ROAS 2.94. For subscriptions, another metric is often handier: cost per purchase, here 1,000 ÷ 10 = €100.

Metric Formula Example 1
ROAS as reported Gross revenue ÷ ad spend 2,000 ÷ 500 = 4.00
Net ROAS (Revenue ÷ 1.19) ÷ ad spend 1,680.67 ÷ 500 = 3.36
ROAS after returns Net revenue × (1 - return rate) ÷ ad spend 1,428.57 ÷ 500 = 2.86
Break-even ROAS 1 ÷ margin 1 ÷ 0.35 = 2.86
Contribution after ads Net revenue after returns × margin - ad spend 500 - 500 = €0

ROAS vs. ROI vs. break-even ROAS

Metric Formula Answers
ROAS Revenue ÷ ad spend How much revenue does one ad euro bring?
ROI (Contribution margin - ad spend) ÷ ad spend How much profit does one invested euro bring?
Break-even ROAS 1 ÷ margin At what ROAS do I neither gain nor lose?

Margin here means the share of net revenue left after the variable costs per sale: cost of goods, shipping, payment fees. Fixed costs like rent don't belong in it, since they occur with or without the campaign. At a 50 % margin, break-even ROAS is 2; at 25 % it is already 4.

ROI, by contrast, subtracts all campaign costs. In example 1 it is (500 - 500) ÷ 500 = 0 %. So "what is a good ROAS?" has no answer without your margin. A retailer with a thin margin can lose money at ROAS 4, a seller of digital products can do well at ROAS 2.

By the way: Google says its "Conv. value / cost" column "estimates your return on investment". Mathematically it is a ROAS, since it divides revenue by ad spend without cost of goods.

When the number misleads: common mistakes

Gross instead of net. Many shops pass the gross price as the value. Then sales tax sits inside your ROAS; in Germany the standard VAT rate is 19 % (section 12(1) of the German VAT Act). Decide once whether your value is gross or net, and set every threshold in the same terms.

Returns and cancellations. The purchase event fires at checkout. The ad platform doesn't see what comes back later. Selling fashion or shoes? Never read ROAS without your return rate.

Attribution windows. According to its help center, Meta uses "a default attribution setting of 7-day click, 1-day view and 1-day engagement conversion". Someone who only saw an ad and buys the next day counts too. In Google Ads, "for Search and Display campaigns, if you don't customize the conversion window, a 30-day default window will be applied", adjustable from 1 to 90 days. Two platforms with different windows can both claim the same purchase. Google itself says discrepancies "often up to 20%" are expected when comparing with Google Analytics, due to different attribution models.

Duplicate or empty purchases. In my account, a single purchase from a Skool community arrived as several purchase events, and a trial join arrived as a purchase worth €0. Duplicates inflate revenue and therefore ROAS. €0 purchases don't change ROAS, but they make cost per purchase look better than it is. How that happens is covered in Running Meta Ads to a Skool Community.

Estimated values. Meta says of the metric itself that "statistical modeling may be used" where purchase events cannot be counted directly. Ads Manager ROAS is partly counted, partly estimated.

Timing. In its standard columns, Google reports conversions by the date of the ad click, not the date of the purchase. That keeps revenue and spend aligned, since spend is also dated by click. It also means yesterday's ROAS can still rise over the following days. For the view by purchase date there are separate "by conv. time" columns.

Where Meta and Google show ROAS

Help pages as of November 2026.

Meta. In Ads Manager the metric is called "Website Purchase ROAS (Return on Ad Spend)". According to Meta it is based on the value of website purchase events recorded by the Meta Pixel or Conversions API and attributed to your ads, and "is calculated as website purchases conversion value divided by amount spent". Without a purchase value in the event, there is nothing in the numerator. There is also a ROAS goal bid strategy, which Meta says works best with at least 50 to 100 weekly conversions per ad set; evaluate it on weekly averages and wait at least 7 days after any change. Setting up the account and pixel is covered in Set Up a Meta Ad Account and Campaign.

Google Ads. Here the column is "Conv. value / cost", found in the list of Conversions columns. Multiply it by 100 and you have ROAS as a percentage, the way Google states target ROAS. For the Target ROAS bid strategy, Google lists at least 15 conversions in the past 30 days for Search and Shopping campaigns. As with Meta, your conversions need to carry a value.

ROAS for subscriptions and communities

With a membership, revenue builds up over months, but the ad platform only sees the moment of purchase. That's why my community campaigns run against a fixed kill threshold in euros per purchase. Susi's page shows what that looked like: two purchase campaigns for my Claude community had together spent €705.99 for seven paying new members, €100.86 per purchase, above the €60 kill threshold set on August 30, 2026. The verdict: pause.

A threshold in euros per purchase is the same break-even idea in another form. You calculate it as expected net revenue per member over their lifetime times margin. In example 3 that would be €49 × 6 months × 80 % margin = €235.20. If cost per purchase stays below that, the campaign pays for itself, as long as the assumed lifetime holds. Check that assumption against real cancellation data before you set the threshold.

Build a ROAS calculator in a spreadsheet

Enter in column B: B1 ad spend, B2 revenue as reported (gross), B3 VAT rate (0.19), B4 return rate, B5 margin. Then:

  • ROAS as reported: =B2/B1
  • Net ROAS after returns: =B2/(1+B3)*(1-B4)/B1
  • Break-even ROAS: =1/B5
  • Profit or loss after ads: =B2/(1+B3)*(1-B4)*B5-B1

If the second line is below the third, the campaign loses money. The fourth line tells you how much.

Frequently asked questions

What is ROAS?

ROAS stands for return on ad spend. It divides the revenue your ads generated by what you spent on them. ROAS 3 means €3 or $3 in revenue for every one you spent.

What is a good ROAS?

One above your break-even ROAS, which is 1 divided by your margin. There is no universal target number, because it depends on margin, returns and customer value. At a 25 % margin you need at least 4, at 50 % at least 2.

What is the difference between ROAS and ROI?

ROAS divides revenue by ad spend, ROI divides profit by all costs. A ROAS above 1 can still mean a negative ROI.

How do I calculate ROAS for leads instead of purchases?

Divide the revenue from the jobs those inquiries turned into by ad spend. You usually join that up yourself, because the deal closes outside the platform's attribution window.

What to do next

Before your next campaign, write down three numbers: your margin, your break-even ROAS, and the value your purchase event actually passes on, gross or net, first payment or full contract. How to set up the campaign itself is covered in How to Run Ads on Meta: A Guide. So your own measurement tool can recognise where a purchase came from at all, use UTM parameters. Where ROAS sits on the path from first contact to purchase is shown in Marketing funnel.

If you don't want to run the analysis by hand every time: Susi is available as a ready-made template in the Premium tier of my community AI Employee Framework, with Ad Library research, the four-step copy structure and the rule that every campaign starts paused. You give her your offer, your thresholds and the metric she should evaluate by.

Kevin Welter

Kevin Welter

Developer, IT architect, author of technical books (Kubernetes, cloud infrastructures) and speaker. Runs his business with an AI workforce of fourteen AI employees and shows solo business owners in his community how to hire their first AI employee.

More about AI employees

Your first AI employee up and running within an hour

Join the community

$5/month founding price, first 50 members