Cross-Platform ROAS: How to Compare Meta, Google, and TikTok Fairly
Comparing ROAS across Meta, Google, and TikTok as if they were the same metric is one of the most common mistakes in performance marketing. Here's what you're actually measuring on each platform, and how to build a comparison that's actually useful.
Every week, agencies and brand-side marketers look at a table showing Meta ROAS at 4.2x, Google ROAS at 6.8x, and TikTok ROAS at 2.1x, and draw the obvious conclusion: Google is crushing it, TikTok is struggling, shift budget accordingly.
Sometimes that's right. Often it's not.
And the reason it's often not is that the numbers in that table are not measuring the same thing.
This article explains what ROAS actually means on each platform, why direct comparisons are misleading without adjustment, and what a properly normalized cross-platform view looks like.
Why ROAS isn't a consistent metric across platforms
ROAS = revenue attributed to advertising / cost of advertising. The formula is the same everywhere. The attribution - which revenue gets counted as "attributed to advertising" - is where it falls apart.
Attribution windows differ by default
Meta Ads default: 7-day click, 1-day view. A user clicks your ad on Monday, buys on Sunday = conversion attributed to the ad. A user sees your ad (but doesn't click) on Monday, buys on Tuesday = still attributed to the ad (1-day view).
Google Ads default: Varies by conversion action, but for most e-commerce setups it's 30-day click, no view-through. A user clicks your search ad, buys within 30 days = attributed. But a user who sees a Display ad and doesn't click is generally not counted (unless you've set up view-through conversions separately).
TikTok Ads default: 7-day click, 1-day view - similar to Meta.
This means: if a user clicks a Meta ad on Monday and a Google Shopping ad on Thursday and buys on Friday, both Meta and Google count the conversion.
You've attributed one purchase twice, to two different platforms.
Top-of-funnel vs. bottom-of-funnel placement
Google Search captures people who are already searching for your product. The intent is explicit. ROAS on Search campaigns is structurally higher than ROAS on prospecting campaigns on Meta or TikTok, because you're talking to people who already want to buy.
Meta and TikTok interrupt people who weren't necessarily looking to buy. Converting them requires more work. Their ROAS will naturally be lower - not because the platform is underperforming, but because it's doing a different job in the funnel.
Comparing Google Search ROAS to Meta Prospecting ROAS is like comparing the closing rate of inbound leads to outbound cold calls. They're different things.
Self-attributing networks overcount
Meta, Google, and TikTok all have a structural incentive to claim credit for conversions. Their measurement systems are designed to attribute as much as possible to their own ads. No platform is showing you "here's the revenue we drove, plus the revenue you would have gotten anyway without the ad." They're showing you a number that includes both.
This isn't deceptive - it's how attribution works by definition.
But it means every platform's ROAS overstates the true incremental contribution to some degree.
How to build a fair cross-platform comparison
Step 1: Standardize attribution windows
Before comparing any numbers, set the same attribution window across all platforms. The most defensible choice for most businesses is 7-day click, no view-through.
In Meta Ads Manager, you can view performance under any attribution setting by adjusting the Attribution Setting column in your reporting view. In Google Ads, you can adjust the conversion window per conversion action. In TikTok, attribution settings are at the campaign or ad group level.
This won't make the numbers perfectly comparable (the double-counting problem remains), but it removes one major source of artificial difference.
Step 2: Separate funnel stages
Don't compare prospecting ROAS to retargeting ROAS to branded search ROAS in a single table. Separate them:
- Prospecting / awareness: Meta broad, TikTok cold, Google Display. Expect ROAS of 1.5–3x. These campaigns build demand; their contribution to later conversions is real but hard to measure directly.
- Consideration / intent: Meta retargeting, TikTok retargeting, Google non-brand Search. Expect ROAS of 3–6x. These campaigns convert people already in your funnel.
- Bottom-funnel / branded: Google Brand Search, Meta retargeting of cart abandoners, TikTok retargeting warm audiences. Expect ROAS of 8–15x or higher. These campaigns capture demand that already exists; they're efficient but limited in volume.
When you see "Google ROAS = 6.8x", the question is: what percentage of that is branded search? A 6.8x blended Google ROAS might be 12x on Brand, 4x on non-brand, and 2x on Display. The 6.8 is real but not particularly useful for decision-making.
Step 3: Triangulate with platform-independent measurement
The only way to understand true cross-platform contribution is to measure conversions independently of the ad platforms. Options:
- Google Analytics / GA4. Configure your revenue reporting in GA4 using a last-click or data-driven attribution model. This gives you a view of conversions that isn't curated by any individual ad platform.
- UTM parameters + server-side tracking. Consistent UTM tagging on all ads, tracked server-side (not just in the browser), gives you a clean view of which traffic sources drive revenue. This is the closest thing to platform-independent truth.
- Marketing Mix Modeling (MMM). For larger spenders (typically €100K+/month), MMM is a statistical model that isolates the contribution of each channel by analyzing the relationship between spend and revenue over time. It's expensive to set up properly, but it produces the most reliable answer to "what's actually working."
- Incrementality testing. Geo holdouts or randomized controlled tests that measure lift. If you turn off Meta Ads in one region and keep it running in another, you can measure the actual revenue difference - that's the true incremental contribution of Meta Ads. This is the gold standard. It's also logistically complex.
What a normalized cross-platform ROAS view looks like
Here's a simplified example of what cross-platform reporting looks like with proper normalization, for a €50,000/month e-commerce advertiser:
| Platform | Campaign Type | Spend | Platform ROAS | GA4-attributed ROAS | Notes |
|---|---|---|---|---|---|
| Brand Search | €8,000 | 14.2x | 11.8x | High ROAS, limited scale | |
| Non-brand Search | €12,000 | 5.1x | 4.4x | Strong intent, scalable | |
| Meta | Retargeting | €7,000 | 6.3x | 3.2x | Significant double-count with Google |
| Meta | Prospecting | €15,000 | 2.4x | 1.9x | Builds pipeline for retargeting |
| TikTok | Prospecting | €8,000 | 1.8x | 1.5x | Early funnel, soft ROAS, contributes assist |
The platform-reported ROAS (what you see in Ads Manager) consistently overstates the GA4-attributed ROAS for retargeting campaigns where cross-platform touchpoints are common. The difference is smallest for Google Brand Search (where there's typically one touchpoint) and largest for Meta retargeting (where the user has often been touched by Google and Meta in the same journey).
The budget allocation decision
So how do you decide where to allocate budget when the numbers aren't directly comparable?
The most practical framework:
-
Don't cut channels based on ROAS alone. A Meta Prospecting ROAS of 2.4x is not "underperforming" if removing that spend causes your retargeting pool to shrink and your overall account ROAS to decline. The contribution is real even if the platform-attributed ROAS looks weak.
-
Look at what happens to total revenue when you scale each channel. If you increase Meta Prospecting by 20%, does total revenue increase? If yes, the channel is working. The platform ROAS is a proxy; revenue is the outcome.
-
Use blended account ROAS as your primary health metric. Total revenue / total ad spend, measured independently. If this number is above your target, the allocation is working.
Optimizing at the individual channel level can cannibalize the overall system.
- Incrementality tests for major allocation decisions. Before making a large budget shift (cutting one platform significantly, doubling down on another), run a geo test or a holdout test to measure actual incremental contribution. It takes 2–4 weeks but gives you a defensible answer.
Frequently asked questions
Should I just use a single attribution window for everything or use the platform defaults? Use the same window for comparison purposes. For optimization within each platform, the platform defaults are fine - they're calibrated for the algorithm. But when you're making cross-platform budget allocation decisions, normalize to a common window (7-day click is the most widely used standard).
If Google ROAS is always higher because of branded search, should I compare them separately? Yes. Always separate branded and non-branded for any meaningful analysis. Branded search ROAS is structurally inflated because it captures demand that already exists, often driven by other channels. It's not a fair benchmark for prospecting campaigns on any platform.
What's the simplest way to start if I don't have server-side tracking or GA4 set up? Start by pulling all three platforms' data with the same attribution window into a single view. It's imperfect but significantly better than comparing platform defaults. Then implement GA4 with UTM tracking properly - even basic implementation gives you a platform-independent reference point within a few weeks of data.
Our TikTok ROAS has always been low. Should we cut it? Not based on ROAS alone. Ask: what happens to total account ROAS if we turn TikTok off? If you run a geo test and see no revenue impact, cut it. If you see a decline - even if TikTok's self-reported ROAS was low - the channel was contributing. Low prospecting ROAS that contributes to pipeline is usually worth keeping unless the business is cash-constrained.
Ready to try it?
Manage Meta, Google, and TikTok Ads
from one dashboard.
14-day free trial · No credit card required · Full access from day one.
Start free trial →