How to calculate ROAS in Google Ads, Meta and GA4
Pick one revenue definition in Shopify. Then read Conv. value/cost in Google Ads, Purchase ROAS in Meta Ads Manager and Return on ad spend in GA4. Note each one's model or window, and check their total against Shopify before you trust any of them.
By Joris van Huët, Founder & CEOUpdated 8 min read
Run the numbers for your store: the free break-even ROAS calculator.
To calculate ROAS on each platform, divide the revenue it credits to your ads by what you spent there. Google Ads shows it as Conv. value/cost, Meta as Purchase ROAS and GA4 as Return on ad spend. Usually they disagree, so note each one's window and model, then check their total against Shopify.
Seven steps, one closed month, four screens. The menu paths below come from Google's, Meta's and Shopify's help pages as they read on 1 October 2026. Nothing here changes a setting, so read access is enough.
Step by step
- Fix the revenue you will divide. Shopify's Net sales is gross sales minus discounts and sales reversals. Its Total sales adds taxes, duties, shipping charges and fees. Choose one, write it down, and use the same closed month in every step that follows. Menu path: Shopify admin > Analytics > Reports > Category filter > Sales > Total sales over time.
- Read Google Ads' own ROAS. The Conv. value/cost column is conversion value divided by cost, so it is ROAS as a ratio. Google's help says to multiply it by 100 to express it as a Target ROAS percentage. Menu path: Google Ads > Columns > Modify columns > Conversions > Conv. value/cost.
- See how much of that ROAS the model decides. The Model comparison report puts two attribution models side by side for the same campaigns. Read its Conv. value / cost column under Last click and under Data-driven. Menu path: Google Ads > Goals > Attribution > Model comparison (page menu on the left) > Compare and With drop-downs.
- Add Meta's ROAS column. Meta calculates Purchase ROAS as purchase conversion value divided by amount spent. Website purchase ROAS does the same for purchases its pixel or Conversions API recorded on your site. Menu path: Meta Ads Manager > Campaigns, Ad sets or Ads > Columns > Customize columns > (tick the ROAS column) > Apply.
- Write down the window behind Meta's number. Each ad set has its own attribution setting. Click-through counts purchases within 1 or 7 days of a link click; view-through counts them within 1 day of an impression. Engage-through adds purchases within 1 day of a non-link click. Menu path: Meta Ads Manager > (ad set) > Conversion section > Show more options > Standard attribution selections > Edit.
- Get GA4's cross-channel view. GA4's Return on ad spend divides the revenue for the selected key events by the total cost of your ads. Pick purchase in the key events menu at the top left, because by default all key events are added together. Cost shows only for a linked, spending Google Ads account or for campaign data brought in through Data Import. Menu path: GA4 > Advertising > Planning > All channels.
- Work out the blended figure by hand. Add the spend from every platform. Divide Shopify's revenue for the same month by that total, using the definition from step 1. Menu path: none, this step is arithmetic; the blended ROAS calculator shows the working.
A worked example
For illustration, here is one invented month in round numbers. None of it comes from a real store.
| Line | Where it comes from | For illustration |
|---|---|---|
| Google Ads cost | Cost column | €2,000 |
| Google Ads conversion value | Conv. value column | €6,000 |
| Google Ads ROAS | Conv. value/cost | 3.0, or 300% |
| Meta amount spent | Amount spent column | €1,500 |
| Meta purchase conversion value | Purchases conversion value | €4,500 |
| Meta Purchase ROAS | Value divided by amount spent | 3.0 |
| Shopify Net sales | Total sales over time | €8,000 |
| Shopify Total sales | Total sales over time, VAT included, no shipping | €9,600 |
| Blended ROAS | €8,000 divided by €3,500 | about 2.3 |
Both platforms report a ROAS of 3.0 in this worked example. Say the tags send tax-inclusive values, so you hold them against Shopify's Total sales, which include tax. Together they claim €10,500 in this worked example, against €9,600 of Total sales. Some sales sit in both claims, and nobody banked the difference.
Tax moves the ratio as well. For illustration, at a VAT rate of 20%, Google's €6,000 holds €1,000 of VAT, and its ex-tax ROAS is 2.5. Same campaign, same month, one definition later.
The blended figure is the sober one: €8,000 of Net sales over €3,500 of spend is about 2.3 in this worked example. It counts each sale once. It cannot say which platform earned it.
Windows decide which sales get claimed at all, and one store's export shows why that matters. Journeys with 2 to 3 touches took 12.5 days to buy and held 12.2% of revenue (Journeys sheet). Journeys with 10 or more touches took 16.0 days and held 3.0% (Journeys sheet).
Meta's longest click-through setting counts purchases within 7 days of a link click. If an ad click opened a journey that slow, Meta's window had closed before the purchase. GA4's default purchase lookback is 90 days, so that click can still earn credit in GA4. The export holds no spend, so it shows timing, not return.
So the order of work matters. Fix the revenue first, read each platform's ROAS with its window attached, then reconcile with Shopify. Give finance the blended figure until a holdout shows which platform earned what.
What should I check when the numbers look wrong?
- The platforms claim more than Shopify sold. Each one credits itself under its own rules, so shared sales get counted twice. Shopify's Any click model does this on purpose, and its help says it allocates more credit than orders received.
- Conv. value/cost counts more than purchases. If a cart or sign-up action carries a value and counts in Conversions, its value lands in your ROAS. Google's help says the Include in "Conversions" setting decides which actions feed those columns.
- Google Ads ROAS jumped after a model change. A new model only changes how conversions count from then on. To see older data under the new model, add the current model columns from the Attribution section of the Columns menu.
- Meta's ROAS moved and the ads did not. Meta may estimate the metric, using statistical modelling where events cannot be counted directly. For ads delivered to iOS 14+ devices it may not be calculated at all.
- Two Meta ad sets cannot be compared. Meta's help says results from ad sets with different attribution models cannot be compared in the campaign table. Use Compare attribution settings for a side-by-side view instead.
- GA4's ROAS is blank. There is no cost to divide by. Link the Google Ads account, or bring other platforms' costs in through Data Import.
What to do this week
- Save a ROAS column preset in Meta. In Ads Manager, open Columns, then Customize columns. Tick Purchase ROAS, Amount spent and the purchase conversion value, tick Save as a column preset, then click Apply. Pass: one click shows spend, value and ROAS together. Fail: ROAS sits alone, so nobody can redo the division.
- Check what feeds Conv. value in Google Ads. Open Goals, then Conversions, then Summary. Look for any non-purchase action that carries a value and counts in Conversions. Pass: only purchases feed Conv. value. Fail: carts or sign-ups add value, so your ROAS counts them as sales.
- Reconcile last month in one sheet. Give each platform a row: spend, credited revenue and window. Underneath, add Shopify's Total sales for the month. Pass: the platforms' revenue sums to clearly less than Total sales. Fail: it comes close or sums to more, so quote the blended figure until a holdout shows who earned what.
Check the homework. Your GA4 Attribution paths export already holds the evidence. Causality Engine reads that one file and shows what each channel caused next to what last-click gave it, in 1 to 2 minutes, for €99 once (excluding VAT), refundable within 30 days. Check the homework
Sources, 1 October 2026: Sales reports (Shopify Help Center); About Target ROAS bidding (Google Ads Help); About attribution models (Google Ads Help); Customize columns in Meta Ads Manager (Meta Business Help Center); Purchase ROAS (return on ad spend) (Meta Business Help Center); Website purchase ROAS (return on ad spend) (Meta Business Help Center); About attribution models and attribution settings (Meta Business Help Center); Set up engage-through in Meta Ads Manager (Meta Business Help Center); All channels performance report (Google Analytics Help); Select attribution settings (Google Analytics Help); Marketing reports (Shopify Help Center); About data-driven attribution (Google Ads Help).
Related answers
Frequently asked questions
Where do I find ROAS in Meta Ads Manager?
Add it as a column. In Ads Manager, open Columns, choose Customize columns, tick Purchase ROAS or Website purchase ROAS and click Apply. Meta calculates it as purchase conversion value divided by amount spent, under each ad set's attribution setting.Does a ROAS of 1 mean my ads broke even?
Only on revenue. A ROAS of 1 means the ads were credited with exactly what they cost. You still paid for the products, the shipping and the payment fees, so on profit you lost money. Break-even ROAS is 1 divided by your margin after those costs.Why did my Google Ads ROAS change after I switched attribution models?
Because the model decides how much conversion value each campaign receives. A new model changes counting from then on, so a report spanning the switch mixes two rules. Add the current model columns from the Attribution section of the Columns menu to see older data under one rule.
Go deeper: Causal attribution, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- Attribution ModelAn Attribution Model defines how credit for conversions is assigned to marketing touchpoints. It dictates how marketing channels receive credit for sales.
- Attribution WindowAttribution Window is the defined period after a user interacts with a marketing touchpoint, during which a conversion can be credited to that ad. It sets the timeframe for assigning conversion credit.
- ConversionConversion is a specific, desired action a user takes in response to a marketing message, such as a purchase or a sign-up.
- Google AdsGoogle Ads is an online advertising platform where advertisers bid to display ads, service offerings, and product listings.
- Google AnalyticsGoogle Analytics is a web analytics service that tracks and reports website traffic.
- ImpressionAn Impression counts each time an ad or content displays on a user's screen. It measures exposure, not engagement.
- MER vs ROASMER (marketing efficiency ratio) is total revenue divided by total ad spend; ROAS is revenue credited to a specific channel divided by that channel's spend. MER cannot be gamed by attribution but is blind to channels; ROAS is channel-level but only as honest as the attribution behind it.