Why Your ROAS Numbers Don't Match Across Platforms (It's the Default Windows)

· 15 min read

An attribution window decides how long an ad gets credit for a conversion, whether or not the ad caused it. Widen the window and you catch more coincidences; the number goes up without any change in real sales. The same campaign over the same week produces three different, all-correct ROAS numbers depending on the lookback window, whether views count, and how credit is split. Worse, these defaults are the vendor's, not yours: Meta removed its 7-day and 28-day view windows in January 2026 and reported conversions fell 15-40% overnight with no change in sales; GA4 made data-driven attribution the default and re-computes your history when it does. The honest response is not to hunt for the one true number. It is to know which lens each dashboard is using, hold it fixed, log your own raw data so you can re-derive any window, and make the actual budget call against off-platform evidence.

A setting you never touched is grading your channels

Somewhere in your ad account there is a dropdown that says something like "7-day click, 1-day view." Most people set it once, or never, and move on. It reads like a reporting preference, in the same family as a date range or a currency toggle.

The dropdown is really a claim about how long an ad gets credit for a behaviour it may or may not have caused. Widen that window and you do not measure more truth. You widen the net that catches coincidences. Every conversion that happens inside the window gets counted whether the ad moved it or not. So the window quietly decides which channel looks good, and money follows the number.

The subject here is the pattern behind all the platform changes, not any single one. Every default in your measurement stack is a decision, most of them are made by a vendor rather than by you, and the vendor can change them without asking and apply the change backwards in time. Once you see the pattern, the individual events stop being surprises and start being things you can plan around.

The three-correct-numbers problem

Start with the mechanical fact, because it is the part people skip. The same campaign, over the same week, produces different ROAS depending on three settings you probably never audited: the lookback window (1, 7, or 28 days), whether a view counts as a touch, and how multi-touch credit is split.

Here is what that looks like on one real spend.

ONE CAMPAIGN, ONE WEEK, THREE ROAS NUMBERS

Spend: $10,000. Nothing about the campaign changes. Only the window changes.

1-DAY VIEW
1.8×
$18,000 attributed. Answers: immediate-conversion efficiency.
7-DAY CLICK
3.0×
$30,000 attributed. Answers: short-term ROI.
28-DAY CLICK
4.1×
$41,000 attributed. Answers: full-cycle return.

Meanwhile the finance partner reading the CRM sees $22,000 of net-new revenue that traces to any paid source at all. All three ad-platform numbers are internally correct. All three overstate incremental contribution.

The buyer who defends this line in the budget meeting is quoting 4.1x. The person who quietly distrusts marketing is looking at the CRM. Both are looking at real numbers.

The failure mode here is not picking the wrong window. Each of these three answers a legitimate and different question. Immediate efficiency, short-term ROI, and full-cycle return are all things a business might reasonably want to know. The failure is not knowing which question your dashboard is silently answering, then comparing that answer against a channel that is answering a different one. A 4.1x on a 28-day window sitting next to a 2.1x on a 7-day window only looks like a comparison. It is two measurements in different units printed in the same column.

The practical rule that falls out of this: pick the lens, name it, freeze it, and never compare it against a channel on a different lens. That is most of the discipline. The rest of this article is about the reasons that discipline is harder than it sounds, starting with the fact that the lens is not yours.

The part that should worry a senior buyer

These are not your settings. The vendor owns the default, and the vendor can change it, retroactively.

This is not a hypothetical. It happened twice on Meta inside five years, and once on GA4, in ways that moved real reported numbers for real advertisers.

Meta, January 2026: the view windows disappeared

Meta removed the 7-day and 28-day view-through windows from its Ads Insights API. The change was announced on 13 October 2025, documented shortly after, and took effect on 12 January 2026. What was removed: 7d_view and 28d_view. What was kept: 7-day click, 28-day click, 1-day view, and 1-day engaged view.

The precise version of the claim matters here, because a looser version has been circulating. Meta did not remove the 7-day and 28-day windows outright. It removed the view-through versions of them. Click windows of 7 and 28 days are still there.

For advertisers who leaned on view-through credit, the effect was immediate. Vendor reporting put the drop in reported conversions at 15 to 40 percent, concentrated in upper-funnel and awareness campaigns where a large share of credited conversions came from the view path rather than a click. There was no change in actual sales. The conversions did not stop happening. They stopped being counted.

A WORKED EXAMPLE: THE JANUARY CLIFF

An awareness-led brand spends $50,000 a month on Meta and historically reports 2,000 conversions at 7-day click and 7-day view. About 35 percent of those, roughly 700, come from the view path. On 12 January 2026 the view windows collapse to a single day. Reported conversions fall to about 1,350, a 32 percent drop overnight. Reported ROAS falls from 4.0x to 2.7x. Backend sales are flat.

The trap is the obvious reaction. A team watching the dashboard cuts Meta budget and shifts it to Google, whose longer click window was already over-claiming. Real money moves on a definitional change. The correct move is to re-baseline against backend revenue or a mix model, not to reallocate off a number whose definition just changed underneath it.

The figures in that example, and the 15-to-40-percent range, are aggregated practitioner reporting from vendor analyses, not a single controlled study. Treat them as ranges, because that is what they are. There is not yet a peer-reviewed number for the January 2026 event.

Then Meta moved the categories themselves

In March 2026, Meta introduced "engage-through attribution." It counts non-click social engagements such as likes, shares, saves, comments, and profile visits, plus video views of five seconds or more, each followed by a conversion within one day. The new default for website and in-store conversion campaigns became 7-day click, 1-day engage-through, and 1-day view-through.

The effect is subtle and worth naming. Conversions that used to land in the click-through bucket now land in the engage-through bucket. So click-through numbers fell further, again without any change in real behaviour. The windows move, and the buckets a conversion can land in are themselves being redrawn.

The default has moved before

If you are tempted to file January 2026 as a strange event, note that the default has moved before. In spring 2021, after Apple's App Tracking Transparency arrived with iOS 14.5, Meta cut its default from 28-day click and 28-day view down to 7-day click and 1-day view. So the January 2026 change is at least the second time the platform has quietly re-set the default that defines everyone's ROAS.

THE META DEFAULT HAS MOVED TWICE IN FIVE YEARS

PRE-2021
28-day click, 28-day view
The generous default
2021 (iOS 14.5)
7-day click, 1-day view
Forced by ATT
JAN 2026
View windows removed from API
7d/28d view gone
MAR 2026
Engage-through added
Buckets redrawn

GA4 redefined the model as well as the window

The window is one default. The credit-split model is another, and it moved too.

In September 2023 GA4 deprecated first-click, linear, time-decay, and position-based attribution, along with last Google Ads click, leaving only last-click and data-driven. In November 2023 data-driven attribution became the property default. The important part for this article is what happens when the model changes: the switch applies retroactively. GA4 re-applies the attribution logic to the stored touchpoint paths, so historical reports shift when the model changes. The number you optimised against last quarter is not guaranteed to still exist this quarter.

Data-driven attribution also needs meaningful volume to train. Google's own floor is around 200 conversions and 2,000 touchpoints a month, and practitioners commonly cite 400 conversions a month as a more comfortable threshold. Below that, the model is thin, and it is still Google's model, not yours.

The cross-window budget leak

The three-numbers problem inside one platform is annoying. Across platforms it becomes an active budget leak, because each platform counts the same purchase against its own touch.

When several platforms with overlapping windows each claim the same conversion, the summed total routinely exceeds CRM or backend sales by 30 to 50 percent. Longer-window channels over-claim systematically, and budget drifts toward them because they look more efficient. That number is a commonly observed range from practitioner reporting rather than a measured law, so hold it loosely, but the mechanism is real and easy to demonstrate.

A WORKED EXAMPLE: THE LEAK, THEN THE FIX

Two channels split $100,000 a month, $50,000 each. Meta reports on 7-day click; Google reports on 30-day click. Google's longer window claims conversions that occurred 8 to 30 days out, including ones Meta also touched. Summed platform conversions come to 1,900. Actual backend orders are 1,300, a 46 percent double-count. Google's apparent ROAS reads 3.4x against Meta's 2.1x, purely because its window is roughly four times longer. The team shifts $20,000 from Meta to Google.

Now the named case. A DTC retailer with a 2.2-day average conversion cycle tightened Google Ads from a 30-day click window to a 7-day click window. In-platform over the following 30 days, cost fell 6.3 percent, conversions rose 42.9 percent, conversion value rose 52.1 percent, and reported ROAS rose 62.3 percent. Total business sales rose 20 percent and net profit rose 30 percent. Measured across channels with a mix model, Google's incremental ROAS improved 10 percent to 1.82, while Meta's incremental ROAS declined 25 percent to 0.59. The window, not the channel, had been doing the talking.

That retailer case is the strongest single data point in this whole piece: named author, dated, concrete, and it makes the thesis literal. A change to one window re-ranked two channels against each other. Read it alongside the rule from earlier. Mismatched windows across platforms are the most common budget-misallocation defect there is, and the leak is invisible until you normalise the windows or triangulate off-platform.

If you want to see your own overcount before doing anything else, compare summed platform-reported conversions against backend orders week by week.

sql
-- Overcount ratio: summed platform claims vs. actual orders SELECT date_trunc('week', order_date) AS week, SUM(google_reported_conversions) AS google_claims, SUM(meta_reported_conversions) AS meta_claims, COUNT(DISTINCT order_id) AS actual_orders, ROUND( (SUM(google_reported_conversions) + SUM(meta_reported_conversions)) / NULLIF(COUNT(DISTINCT order_id), 0) , 2) AS overcount_ratio FROM order_reconciliation GROUP BY 1 ORDER BY 1 DESC;

An overcount ratio well above 1.0 is the leak made visible. It does not tell you which channel to trust. It tells you that summing the dashboards is not measurement.

What is honestly true, and what is not

This reader is measurement-literate, so here are the limits stated plainly. Skipping them would make the argument weaker, not stronger.

None of these windows measure incrementality, and neither does multi-touch attribution. Last-touch, multi-touch, and data-driven attribution all allocate credit among touchpoints that were observed to be present. None of them tell you what would have happened without the ad. That question needs an experiment, such as a geo holdout or a ghost-ad test, or a causal model such as marketing mix modelling. Widening or narrowing a window changes the reported number. It never changes the causal one. Do not read this article as "pick the right window and you will know true contribution."

A shorter window is not automatically more honest. The DTC case worked because that retailer had a 2.2-day cycle, so a 7-day window fit the real behaviour. For a considered B2B purchase with a 30-day cycle, a 7-day window undercounts genuine influence. There is no universally correct window. There is a window that matches your actual purchase latency, which you should read off a time-lag or path-length report rather than default into.

Data-driven attribution is a black box you also do not control. Switching GA4 to it does not escape the "vendor owns the definition" problem. It deepens it. The model is proprietary, needs high volume to train, and re-computes history when Google updates it. You trade a transparent-but-arbitrary rule for an opaque-but-adaptive one. Both are the vendor's call.

"Reclassification, not performance" cuts both ways. The January 2026 drop was a measurement artefact rather than lost sales, which is the reassuring half. The other half is that view-through credit was always the softest, most inflated credit in the account. Removing it arguably makes the number less wrong even as it makes the time series discontinuous. The real cost is not the conversions themselves but the broken trend line: the definition moved underneath a series you were tracking.

You cannot fully freeze the definition. You can pin your own GA4 model and your own platform window. You cannot stop Meta or Google from changing the underlying default or the API. That is the honest limit of the advice that follows.

What to actually do

The instinct after all of this is to go looking for the real number. There is no real number here. There is a lens count. The useful work is knowing which lens each dashboard uses, holding it fixed, and refusing to compare across incompatible ones. No dashboard hands you truth on its own.

FOUR MOVES THAT SURVIVE A VENDOR CHANGING THE DEFAULT

1. Match the window to purchase latency
Read your time-lag report. Set the window to where the mass of real conversions actually lands, not to whichever setting flatters the channel.
2. Freeze one lens for internal trend lines
Pick one window and one model, write it down, and report every internal trend against it. Do not compare a channel on one lens against a channel on another.
3. Log your own raw, un-attributed data
Store raw conversions and touchpoints yourself so you can re-derive any window later. When a vendor changes its default, you can still reconstruct the old series and see the change for what it is.
4. Make the budget call off-platform
Decide against backend revenue, a mix model, or a geo holdout. A redefinition of a platform default cannot quietly move spend that was allocated on evidence the platform does not own.

Owning the raw data is the move that makes the other three durable. If the touchpoints and conversions live in a store you control, the window becomes a parameter you set rather than a default you inherit. You can run last-click and Markov and a 7-day and a 28-day view of the same week side by side and read the spread between them, which is the honest picture: not one number, but the range that the choice of lens produces. That spread is the thing to bring to the budget meeting, next to a backend revenue figure that no platform gets a vote on.

The dropdown that says "7-day click, 1-day view" is still a claim about your budget that a platform makes for you, changes without asking, and applies backwards in time. You cannot take that pen away from the vendor. You can stop signing whatever it writes.

Key Takeaways

  • An attribution window works as a claim about how long an ad gets credit rather than a neutral reporting preference; widen it and you count more coincidences, so the number rises without any change in real sales.
  • The same campaign in the same week yields three different, internally correct ROAS numbers depending on the window, whether views count, and the credit-split model.
  • These defaults belong to the vendor: Meta pulled its 7-day and 28-day view windows in January 2026 and view-through-reliant advertisers saw reported conversions fall 15-40% with no change in sales.
  • Model changes apply retroactively: GA4 made data-driven attribution the default and re-computes your historical reports, so last quarter's number can shift under you.
  • There is no true number to find, only a lens count; match the window to your real purchase latency, freeze one lens for trend lines, log raw data, and decide budget against backend revenue or a holdout.
How do attribution windows change my results?
A window sets how many days after a click or view a conversion still gets credited to that ad. Widen it and more conversions fall inside the net, whether the ad caused them or not, so the reported number rises with no change in real sales. Narrow it and genuine but slower conversions drop out. The window silently decides which channel looks good, and budget follows the number.
My Meta conversions dropped about 30% in January 2026. Did my ads stop working?
Probably not. Meta removed the 7-day and 28-day view-through windows from its Ads Insights API effective 12 January 2026, so conversions that were credited to ad views with no click stopped counting. Check your backend or CRM revenue for the same period. If sales are flat, this is a measurement reclassification, not a performance drop, and cutting Meta budget in response would move real money on a definitional change.
Should I use a 7-day or a 30-day attribution window?
Match the window to your actual purchase latency, not to whichever number looks best. Pull your time-lag report. If most conversions land within a few days, a short window fits and a long one just pads the count with coincidences; if your cycle runs weeks, a 7-day window undercounts real influence. A DTC retailer with a 2.2-day average cycle moved Google Ads from 30-day to 7-day click and its measured ROAS rose because the shorter window matched real behaviour.
Why does the same campaign show a different ROAS in Meta, Google, and GA4?
Because each uses a different lookback window, a different rule for whether views count, and a different credit-split model. Three settings, three questions, three internally correct answers. The fix is not to find the true one; it is to normalise the window across platforms before comparing, and to triangulate against backend revenue.
Is data-driven attribution the safe default now that GA4 pushes it?
It is the default, not a truth machine. Data-driven attribution distributes credit across observed touchpoints using a proprietary model, needs meaningful volume to train (commonly cited at 200 to 400 conversions a month), and re-computes your historical reports when Google updates the model, so past numbers can shift. It also still does not measure incrementality.
How do I stop a platform from silently rewriting my numbers?
You cannot stop the vendor, but you can insulate the decision. Log your own raw conversion and touchpoint data so you can re-derive any window yourself, freeze one reporting lens for internal trend lines, and make the actual budget call against off-platform evidence such as backend revenue, marketing mix modelling, or a geo holdout. Then a change to the default cannot quietly move your spend.
Holly Mehakovic
Holly Mehakovic

Co-Founder, mbuzz

Holly Mehakovic is Co-Founder of mbuzz. With 10+ years in marketing including roles at Westpac, Avon, and Forebrite, she's obsessed with making measurement actually useful.

Harvard Extension School Forebrite Westpac Avon

How mature is your marketing measurement?

The free Measurement Maturity Assessment shows where you stand, where you're exposed, and what to fix first. 10 questions, 3 minutes.

Take the Assessment

Ready to try server-side attribution?

Set up in 10 minutes. Free up to 30K records/month.