Skip to content

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 , 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.

LineWhere it comes fromFor illustration
Google Ads costCost column€2,000
Google Ads conversion valueConv. value column€6,000
Google Ads ROASConv. value/cost3.0, or 300%
Meta amount spentAmount spent column€1,500
Meta purchase conversion valuePurchases conversion value€4,500
Meta Purchase ROASValue divided by amount spent3.0
Shopify Net salesTotal sales over time€8,000
Shopify Total salesTotal sales over time, VAT included, no shipping€9,600
Blended ROAS€8,000 divided by €3,500about 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

  1. 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.
  2. 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.
  3. 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).

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

Browse the full glossary

Your platforms guess.
We run the math.

Upload a GA4 export and see what each channel caused, next to last-click, in 1–2 minutes. The read is yours to keep.

Free, in your browser: your file is not uploaded. The full read is €99, refundable within 30 days. Prices exclude VAT.
Or book a 30-min call.