All articles
2026-04-25 12 min read

The ROAS Number in Your Dashboard Is Not Real: How to Measure What Actually Happened

Every platform overcounts conversions, and they are all technically correct by their own methodology. This is why your Google Ads ROAS, Meta ROAS, and GA4 attribution add up to more than twice your actual revenue. Here is why it happens, what MER is and why it matters, and a 5-step measurement reset you can implement this month.

Here is a situation I encounter regularly. An account reports a blended ROAS of 6 in Google Ads. Meta shows a 4.2 ROAS independently. GA4 attributes 70 percent of conversions to paid media. And yet, when you look at actual revenue in the CRM versus total ad spend, the real efficiency is closer to 2.8. Every platform is technically correct by its own methodology. None of them is telling you what actually happened.

Why Every Platform Is Built to Overcount

Attribution overcounting is not a technical bug. It reflects a structural conflict of interest: every ad platform has an incentive to take as much credit for conversions as its methodology allows. This does not mean the data is fabricated, it means the counting rules are designed to be generous.

The most common form of overcounting is multi-touch duplication. A single customer sees a Meta ad on Monday, clicks a Google Search ad on Wednesday, and converts on Thursday. Google Ads claims the conversion under last-click or data-driven attribution. Meta claims a view-through conversion because the customer was exposed to a Meta ad within the last 24 hours. GA4 may split credit differently still. One actual conversion, counted three times across three platforms. Multiply this by every customer journey in your account and the inflation becomes significant.

View-through conversions make this worse. Meta's default attribution window includes conversions that happen within 24 hours of someone viewing (not clicking) one of your ads. For brand-aware audiences, which is most of your retargeting pool, this means Meta claims credit for conversions that would have happened regardless of ad exposure. Switching Meta's attribution window from "1-day view, 7-day click" to "7-day click only" will reduce your reported Meta conversions by 15 to 40 percent in most accounts. The conversions that disappear were largely not incremental.

Performance Max compounds the problem further. PMax reports "All Conversions" by default, which includes cross-sell conversions, store visit conversions, and modeled conversions, categories that are either impossible to validate or carry much lower actual revenue value. Switching your PMax primary reporting metric to "Conversions" (not "All Conversions") and ensuring your conversion actions are set correctly is the first diagnostic step for any account where PMax ROAS looks suspiciously high. (A full guide to configuring PMax for better visibility and control is here.)

iOS Didn't Break Tracking, It Made It Unreliable

The conversation about iOS tracking tends to focus on the wrong problem. iOS 14.5+ App Tracking Transparency is real and it matters, but the deeper issue is that iOS 17's link tracking protection, which strips UTM parameters and click IDs from URLs in Mail, Messages, and Safari Private Browsing, affects browser-based tracking even outside apps. This is a device-level behavior change, not just an app permission issue.

The practical result is that a meaningful portion of your Safari traffic arrives without the identifiers that attribution systems depend on. GA4 cannot stitch cross-device journeys for these users. Google's enhanced conversions helps for logged-in Google users but does nothing for the rest. Meta's Conversions API partially restores signal for users who are logged into Facebook or Instagram, but the match rate varies significantly depending on how much first-party data you can pass along.

Meta's response to this gap is modeled conversions. When the pixel cannot observe a conversion directly, because the identifier was stripped or the user blocked tracking, Meta's algorithm estimates whether a conversion likely occurred based on statistical patterns. According to Meta's own documentation, modeled conversions can represent 40 to 60 percent of total reported conversions in heavily iOS-affected accounts. These are not observed events. They are estimates. Treating them as equivalent to direct signal conversions leads to significant overestimation of campaign efficiency.

None of this means you should stop running Meta or distrust all attribution data. It means you need a measurement layer that is not dependent on platform-reported numbers to know whether your advertising is working.

GA4 Is Genuinely Better, and Still Not Enough

GA4's data-driven attribution model is a real improvement over Universal Analytics last-click. It distributes credit across touchpoints based on actual observed path data rather than a fixed rule, and it handles multi-channel attribution more accurately than most practitioners give it credit for.

The gaps are specific and worth knowing. GA4 cannot stitch cross-device journeys for users who are not logged into a Google account, someone who sees a YouTube ad on their phone and converts on their desktop a day later may appear as two separate users. GA4 does not see activity inside closed ecosystems like Meta's in-app browser or the LinkedIn mobile app. And GA4's direct traffic channel absorbs a disproportionate amount of journeys that began with paid media exposure but converted during a session with no visible source, meaning paid channels are systematically under-credited for campaigns that rely on awareness and delayed conversion.

For B2B accounts with longer sales cycles, these gaps are especially significant. A campaign that generates awareness today and a contact form submission in three weeks will frequently show that form submission as direct or organic in GA4, even if paid media initiated the journey. If you measure paid performance only on the sessions where ads directly drove a click-to-conversion, you are undercounting the contribution of top-funnel paid media and potentially cutting campaigns that are working.

The MER: The One Number You Can Actually Trust

Marketing Efficiency Ratio is simple: total revenue from your CRM or backend system divided by total ad spend across all channels. No attribution logic. No modeled conversions. No platform claims. Just what you actually earned versus what you actually spent.

MER does not tell you which channel drove which conversion. That is precisely its value: it forces you to evaluate your advertising program as a whole rather than through the self-serving lens of individual platform reports. If your MER is improving, your advertising is generating more revenue per pound or euro spent, regardless of how each platform divides the credit. If your MER is declining while platform ROAS holds steady, either something is broken in your measurement or your advertising is becoming less efficient in ways that platform attribution is not capturing.

Build a simple weekly MER tracker: total revenue from your CRM for the week, total ad spend across all active channels, MER calculation. Track it as a time series. Add a column for total new customers acquired. These two numbers, MER and new customer acquisition rate, will tell you more about the health of your paid media program than any combination of platform dashboards.

Brand vs. Non-Brand: The Split You Cannot Avoid

Brand campaigns consistently outperform non-brand by a factor of five to ten in ROAS. This is not because brand campaigns are efficient. People searching for your brand by intent were going to convert anyway. You are largely paying to take credit for demand that already existed.

Blending brand and non-brand ROAS into a single number makes your paid media program look considerably better than it is, because the high efficiency of brand conversions masks the true performance of your prospecting and acquisition campaigns. A campaign structure that runs brand at high efficiency and non-brand at modest efficiency will report an impressive blended ROAS that tells you essentially nothing about whether your non-brand advertising is actually working.

Separate these at the campaign level, report them separately, and evaluate non-brand performance on its own terms. The non-brand ROAS or CPA is the real measure of whether your paid media is acquiring new demand. A target of 3x ROAS on non-brand in a competitive category may be the right answer even if your blended ROAS is 6x, because the brand campaigns that inflate the blended number are not the ones you optimize.

New Customer Rate: The Growth Signal Everyone Ignores

High ROAS with a declining share of new customer conversions is one of the clearest early warning signs that a paid media program has shifted into retargeting mode. The campaigns are efficient because they are converting people who already knew your brand, were already in the purchase funnel, or were already going to buy. The efficiency is real. The growth is not.

Track the percentage of conversions that come from customers who have not purchased previously. If this number is falling over time while ROAS holds steady or improves, your advertising is optimizing for re-conversion rather than acquisition. This feels good in platform reports and creates a slow-motion business problem.

Google Ads has a New Customer Acquisition bidding option in Shopping and Performance Max campaigns. When enabled, you assign a higher value to new customer conversions, typically 20 to 30 percent above your standard conversion value, and the bidding system optimizes for new customer acquisition rather than blended efficiency. Meta's Advantage+ Shopping campaigns have a similar option. These features are underused because they often reduce ROAS in the short term. They improve the business metric that actually matters.

Incrementality: The Only Test That Tells the Truth

Incrementality testing answers the question that attribution models cannot: would this customer have converted if they had never seen my ad? Everything else in digital measurement is an allocation exercise, it assigns credit to touchpoints but does not measure whether those touchpoints caused anything.

Meta's Conversion Lift studies are the most accessible form of incrementality testing. Meta randomly withholds ads from a control group within your target audience and measures the conversion difference between the exposed and unexposed groups. The methodology is sound, the implementation is straightforward, and the results are often surprising. In my experience, true lift from Meta campaigns tends to be 40 to 70 percent of what the platform reports, with the remainder representing conversions that would have occurred organically.

For Google, geo holdout tests are the most practical structure: identify two comparable geographic markets, run campaigns in one and pause them in the other for four weeks, measure the revenue difference. The logistics require some planning, you need markets that are genuinely comparable in size and behavior, but the insight is worth it. Running one incrementality test per quarter on your largest spend channel is a reasonable cadence for most accounts.

Incrementality results do not mean you should stop advertising. They mean you should understand what your advertising is actually contributing versus what you were crediting it with, and size your investment accordingly.

Server-Side Tagging: The Infrastructure Fix

Browser-side tag containers, the standard Google Tag Manager setup where a JavaScript container loads in the user's browser and fires tags directly from there, are increasingly unreliable. Safari's ITP (Intelligent Tracking Prevention), Firefox's Enhanced Tracking Protection, iOS link tracking removal, and ad blockers all interfere with browser-side tags to varying degrees. The result is measurement loss that compounds over time as browser privacy protections become more aggressive.

Server-side tagging relocates the tag execution to a server you control. The browser sends a single first-party event to your server, and your server forwards that event to Google, Meta, and any other platform. Because the communication between your server and the ad platforms happens server-to-server, not browser-to-platform, browser-based blocking is irrelevant. Match rates for Google's enhanced conversions and Meta's Conversions API both improve substantially.

The implementation that has the best effort-to-impact ratio for most accounts is Google Tag Manager's Server-Side container hosted through Stape.io, which provides managed server infrastructure at a reasonable cost without requiring you to manage your own server. Implementation typically takes one to two weeks for a competent developer and produces visible improvements in conversion match rates within the first reporting cycle.

Your 5-Step Measurement Reset

  1. Build your MER tracker this week. Pull weekly CRM revenue and total ad spend for the past 13 weeks. Calculate MER for each week. This is your baseline and your primary ongoing performance indicator.
  2. Separate brand from non-brand in all reporting. Create campaign labels if needed. Report MER separately for brand and non-brand spend. Evaluate non-brand campaigns on their own ROAS or CPA without brand campaigns inflating the number.
  3. Fix the easy attribution errors. In Google Ads, switch primary reporting from "All conversions" to "Conversions." In Meta, change your attribution window to 7-day click only. Restate your historical performance with these corrected settings to understand the actual baseline.
  4. Add server-side tagging. Prioritize the platforms with the highest spend. Even a partial implementation that covers your top two channels will meaningfully reduce measurement loss.
  5. Run one incrementality test in the next 90 days. Start with Meta Conversion Lift on your largest Meta audience. Use the results to calibrate how much credit you give Meta in your MER and budgeting decisions going forward.

Measurement is not a set-and-forget configuration. It is an ongoing discipline that requires regular calibration as platforms change their methodologies, browsers change their privacy behavior, and your customer mix evolves. The accounts that make consistently better decisions are the ones that have built honest measurement infrastructure, not the ones that report the highest ROAS.

Common questions

What is MER (Marketing Efficiency Ratio) and how do I calculate it?

MER is total revenue from your CRM or backend divided by total ad spend across all channels in the same period. If you spent 10,000 euros on advertising in a month and your CRM recorded 40,000 euros in revenue, your MER is 4.0. Unlike platform-reported ROAS, MER cannot be inflated by attribution models, view-through conversions, or statistical estimates. It measures what your advertising investment produced at the business level, not what each platform claims credit for. Track it weekly to catch trends before they become problems.

Why is my Google Ads ROAS higher than my actual business returns?

Platform attribution overcounts in several ways simultaneously. The most common cause is multi-touch duplication: a single customer sees a Meta ad, later clicks a Google ad, and converts. Both platforms claim 100 percent of the conversion. On top of that, Meta counts view-through conversions for users who saw an ad within 24 hours, and Performance Max defaults to reporting 'All Conversions' which includes modelled events, cross-sell conversions, and store visit estimates. In most multi-channel accounts, the sum of platform-reported conversions is two to four times the actual figure in the CRM.

What is the difference between Conversions and All Conversions in Google Ads?

'Conversions' counts only the actions you have explicitly designated as primary optimisation goals. 'All Conversions' adds every secondary action, cross-device conversion, store visit estimate, and modelled conversion on top of those. Performance Max uses 'All Conversions' as its default reporting metric, which is why PMax ROAS consistently reads higher than what you observe in your backend data. The immediate fix is to change your primary reporting column to 'Conversions' and audit your conversion action settings to cleanly separate primary goals from secondary informational events.

How do I separate brand from non-brand ROAS in Google Ads reporting?

Run brand terms in dedicated brand campaigns and non-brand terms in separate campaigns. Apply campaign labels (Brand and Non-Brand) and filter by label in the Campaigns report. Blended ROAS that mixes both is misleading for any optimisation decision, because brand traffic converts at five to ten times the efficiency of non-brand. That efficiency is driven by existing demand (people already looking for you), not by the quality of your advertising. Reporting them together makes non-brand campaigns appear more efficient than they are and obscures where your actual growth is coming from.

What is server-side tagging and why does it improve attribution accuracy?

Standard browser-side tracking fires JavaScript tags directly from the user's browser, where they can be blocked by ad blockers, Safari's Intelligent Tracking Prevention, or iOS privacy restrictions. Server-side tagging moves the event collection to your own server, which receives the event and forwards it to Google and Meta directly, bypassing browser-level blocking entirely. The practical result is higher match rates for Customer Match lists, more complete conversion event data, and more reliable attribution signals. The most accessible implementation uses Google Tag Manager's server-side container hosted on a managed service like Stape.io.