Meta says 4.2×, Google says 3.1×. Both are right.

Two platforms, two ROAS figures, one budget decision. The numbers are not measuring the same thing, and moving money between them as if they were is the most common expensive mistake in multi-channel accounts.

Adgent · Notes from building the analyst

Type
Comparison
Topic
Attribution
Reading time
7 min
Published
26 February 2026
Cover: Meta 4.2x and Google 3.1x cards joined by a not-equals sign, with the note 'different windows, not comparable'.

You are running both. Meta reports 4.2×, Google reports 3.1×, and the conclusion writes itself: move budget to Meta. It is the most natural decision in the account, and you have almost no evidence for it.

Short answer Not directly comparable. Meta and Google measure ROAS with different attribution windows, credit models and conversion definitions, so 4.2× and 3.1× are not the same unit. To compare them, match the windows, check both against the revenue your analytics recorded, and read direction over level.

Three ways the numbers disagree

Meta and Google are not reporting the same metric under the same name. They are reporting three different disagreements at once.

  • Different windows. Meta defaults to 7-day click, 1-day view. Google Ads runs its own windows, commonly 30-day click. A longer window catches more conversions mechanically, not because the channel worked harder.
  • Different models. Google's data-driven attribution spreads credit across the path. Meta credits its own touchpoints on a last-touch basis. One is sharing credit; the other is claiming it.
  • Different definitions. A “purchase” fired by Meta's pixel and a “conversion” counted by a Google tag can be counting different events, deduplicated differently, at different points in the funnel.
The point, in one line Both platforms are honest. Neither is comparable. The dishonesty is in the subtraction you do between them.

The double-counting problem

Here is the tell that something is broken. Add up platform-reported revenue across your channels and compare it to what your store or GA4 says you actually made. In most multi-channel accounts, the platforms claim more revenue than the business earned.

That is not fraud, it is arithmetic. A customer who saw a Meta ad on Monday and clicked a Google search ad on Wednesday is one purchase, and both platforms will report it, because from where each one sits it is true. Sum them and you have counted the same money twice.

Building a comparability boundary

You cannot make the platforms agree. They are structurally incapable of it, and each has an interest in claiming the conversion. What you can do is decide, deliberately, what you are willing to compare. That is a comparability boundary, and it is built the same way every time:

  • Anchor on ground truth. Your store or your GA4 knows what you actually sold. That is the denominator every platform claim gets checked against, not the other way round.
  • Match the windows. Pull both platforms on the same lookback before you compare. It will not be perfect, but it removes the most mechanical distortion.
  • Compare direction, not level. Meta at 4.2× and Google at 3.1× tells you little. Meta trending up 15% while Google is flat, at matched windows and against what your analytics recorded, tells you where the next dollar goes.
  • Watch the blended number. Total spend against the revenue your analytics recorded is the only figure that cannot be double-counted. If your channels look great and blended is flat, the channels are eating each other.

Why the platforms will never fix this

It is worth being clear about the structural reason. Each platform measures its own contribution with its own ruler and reports it in good faith, and neither has any incentive to calibrate its ruler against a rival's. Google can now bring other platforms' ad cost into GA4 and will even model the cross-channel split for you. But it grades that model with its own attribution, and its own documentation draws the line:

Google Analytics HelpAbout cross-channel budgeting · re-read 4 October 2026

“These tools are for planning purposes only and won’t affect budgets or spend in your connected accounts.”

So the cross-platform allocation call, the one that decides where your marginal dollar actually goes, is one the platforms will model but not make. They plan; they do not execute. That call stays with you, and it is only as good as the comparison underneath it.

Two platforms reporting different numbers is not a bug to be resolved. It is the permanent condition of running more than one channel, and the work is building a view that is honest about it.

Windows are not a detail: they are most of the gap

If you only fix one thing, fix the window. It is the single largest mechanical source of the disagreement, and it has nothing to do with which channel is actually working. Meta's default 7-day click, 1-day view means a purchase only counts if it lands within a week of a click, or a day of a view. Google Ads commonly runs a 30-day click window on the same account. Give any channel four times as long to catch a conversion and it will catch more of them: the same buyers, credited later, on a longer clock.

This is why matching the lookback before you compare does more work than any other single move. Pull both platforms on a matched window (7-day click on each, say) and a chunk of the 4.2× vs 3.1× gap simply evaporates, because you have stopped comparing a sprint to a marathon. It will not make the numbers identical; the models and definitions still differ. But it removes the distortion you can actually remove, and what is left is a more honest starting point. We go deeper on this in why the 7-day window is lying before noon: the same clock problem, one channel at a time.

The view-through trap: not all credit is earned

There is a subtler distortion hiding inside the window difference, and it flatters whichever platform leans on view-through credit. A view-through conversion counts a purchase because someone saw an ad: no click, no deliberate action. On Meta, that is the 1-day view leg of the default window; on placements like Audience Network it can quietly inflate reported ROAS with impressions that scrolled past unnoticed. When you compare a channel earning mostly click credit against one padded with view credit, you are not comparing performance. You are comparing how generously each platform counts a glance as an outcome.

The practical guard is to inspect both the amount of credit and how it was earned. A channel showing high ROAS on mostly view-through conversions is making a weaker claim than a channel showing the same number on clicks, even at a matched window. A raw platform export hides that distinction; an AI media buyer worth the name reads the account like a strategist instead of repeating the dashboard's headline figure.

What this means for how you allocate

Put it together and the allocation rule changes shape. You stop asking “which platform has the higher ROAS?”, an unanswerable question across incompatible units, and start asking “at a matched window, checked against what my analytics recorded, which channel is trending up and which is flat?” Level is noise between platforms; direction survives the comparability boundary because it is measured inside each channel's own consistent ruler over time.

Then you let the blended number keep everyone honest. Total spend against the revenue your analytics recorded is the one figure that cannot be double-counted, because there is only one denominator: what the business actually earned. When your channels each look strong but blended ROAS is flat, that is the signature of channels claiming the same conversions and eating each other. The comparability boundary is not a report you build once; it is a discipline you hold every time a platform hands you a confident number and invites you to move budget on it.

Adgent is a team of AI agents working toward your marketing goals. It reads Meta and Google Ads through their own APIs every day, with GA4, Search Console and Merchant Center read-only alongside, so the two rulers and your own analytics sit in one place when you ask the question. Before it ranks anything by ROAS or CPA, it checks that the conversion signal underneath is real: if more than about 90% of reported ROAS comes from add-to-cart or begin-checkout events with zero purchases, every ROAS- or CPA-ranked action in that run is held back. The allocation between the two platforms stays your call. See what it reads next to the platforms.

Frequently asked

Can I compare Meta and Google ROAS directly?
Not directly. The two numbers use different attribution windows, credit models and conversion definitions, so they are not the same unit. Match the windows, check both against the revenue your analytics recorded, and compare direction over level.
Why are Meta and Google ROAS different?
Three disagreements at once: different windows (Meta's 7-day click vs Google's common 30-day), different credit models (Meta last-touch, Google data-driven), and different definitions of what counts as a conversion. Each platform is honest inside its own ruler.
How do attribution windows differ between platforms?
Meta defaults to 7-day click, 1-day view. Google Ads commonly runs a 30-day click window. A longer window mechanically catches more conversions, the same buyers credited later, which inflates reported ROAS without the channel working any harder.
What is the double-counting problem?
A buyer who sees a Meta ad on Monday and clicks a Google ad on Wednesday is one purchase, but both platforms report it, since from each seat it is true. Sum platform-reported revenue and you count the same money twice, claiming more than the business earned.
How do I build a comparability boundary?
Anchor on ground truth: your store or GA4 revenue is the denominator every platform claim checks against. Match both platforms to the same window, compare direction rather than level, and watch the blended number that cannot be double-counted.
Which platform reports higher ROAS?
Usually whichever runs the longer window or leans on view-through credit. Often that is Meta on default settings, but it varies by account. That is exactly why a higher reported number proves nothing until you match windows and check both against what your analytics recorded.
Who wrote thisWritten by the people building Adgent, the AI employee that carries brand context into every growth decision. Related product: ground truth.

Bring the same question to your own account. Adgent returns its position, the evidence underneath and what the finding is worth a month.

Pricing