PERFMETRIX — in data we trust
All articles
GA417 August 2026·7 min read

GA4 vs Universal Analytics: the model changes that catch people out

A GA4 session isn't a UA session, events lost category and label entirely, and the UA data you'd compare against was deleted in July 2024.

DeBy Denis · Perfmetrix

Short answer: the migration questions that still land three years on are about the data model, not the interface. A GA4 session is a different unit of measurement from a Universal Analytics session, GA4 has no category, action or label at all, and the year-on-year comparison most stakeholders want is impossible because Google deleted the Universal Analytics data in July 2024. If someone asks why this year's sessions don't line up with 2022's, the honest answer is that the two numbers were never measuring the same thing, and the older one no longer exists to check.

A GA4 session and a UA session are different units

Most sites record fewer sessions in GA4 than they did in UA, and the reason is the rules that used to end a session rather than anything about how visits are tracked.

The inactivity rule is identical in both. In GA4, "by default, a session ends or times out after 30 minutes of user inactivity", and when one begins Google "automatically collects a session_start event and generates a session ID (ga_session_id) and session number (ga_session_number)" (Analytics Help, checked 17 August 2026).

What changed is everything else. Universal Analytics also ended a session at midnight and started a fresh one whenever new campaign parameters appeared. GA4 does neither: "Sessions aren't restarted at midnight or when new campaign parameters are encountered" (Analytics Help, checked 17 August 2026).

BehaviourUniversal AnalyticsGA4
Inactivity timeout30 minutes30 minutes
Ends at midnightYesNo
Restarts on new campaign parametersYesNo
How the total is producedCountedEstimated

Work through what that does to a real visitor. Someone clicks a newsletter link at 22:50, browses, then comes back through a paid ad at 23:20 and reads until 00:10. Universal Analytics recorded three sessions there — one for the email, one for the campaign change, one for the date change. GA4 records one. Neither is wrong. They're answering different questions, and only one of them will match the number in last year's board pack.

The last row of that table is the one that gets skipped. GA4 "calculates the number of sessions that occur on your site or app by estimating the number of unique session IDs" using the HyperLogLog++ algorithm (Analytics Help, checked 17 August 2026). The session total is an estimate with an error bar, not a tally. Chasing a two per cent gap between two GA4 figures is chasing the algorithm.

Category, action and label don't exist in GA4

There is no mapping from the UA event schema into GA4's, because GA4 removed the schema rather than renaming it.

Google puts it without hedging: "Google Analytics 4 events have no notion of Category, Action, and Label" (Analytics Help, checked 17 August 2026). What replaced them is open-ended — "in Google Analytics 4 properties, you can send parameters with each event. Parameters are additional pieces of information that can further specify the action the user took, or add further context to the event."

A UA event had one shape, and every report understood that shape without being told. A GA4 event is a name plus up to 25 parameters, and a parameter reports on nothing until you register it as a custom dimension. The relevant ceilings on a standard property (Analytics Help, checked 17 August 2026): 50 event-scoped custom dimensions, 25 user-scoped, 10 item-scoped, and 50 custom metrics. Event names and parameter names cap at 40 characters, parameter values at 100.

That registration budget is what teams overrun, and they overrun it by being faithful to the old taxonomy. Lift a UA structure across as-is — one generic event carrying event_category, event_action and event_label — and each event type costs you three of the 50 event-scoped slots to become reportable. Fifteen or so event types and the property is full, with the parameters still doing the job three separate fields used to do for free.

There's also a timing trap, and here the documentation stops short. Google states that "after 24-48 hours, you can start to report on and advertise with the custom dimension or metric" (Analytics Help, checked 17 August 2026), but it doesn't say whether parameter values collected before you registered the dimension become reportable afterwards. We haven't found a primary source that settles it either way, so don't plan around a backfill you can't confirm: register the dimension when you ship the parameter, not when someone finally asks for the report.

The Universal Analytics data you'd compare against was deleted

Historic comparison across the migration boundary isn't difficult. For most properties it's impossible, and knowing that saves a week.

Standard Universal Analytics properties "stopped processing hits" from 1 July 2023, with 360 properties extended by a year. Then the access went: "Starting the week of July 1, 2024: You will not have access to any current or historical Universal Analytics data" (Analytics Help, checked 17 August 2026). Unless somebody exported the numbers before that week, the baseline is gone, and no amount of GA4 configuration recovers it.

If you do hold an export, Google published the size of the gap you should expect between the two products: "Pageview discrepancies of up to 10% and user and session related discrepancies of up 20% can be expected" (Analytics Help, checked 17 August 2026). That's the spread between two correctly configured properties measuring the same site over the same period. A fifteen per cent year-on-year "decline" that straddles the switchover sits inside that band and supports no conclusion at all.

Google names the factors that move the gap from one business to the next: geography, use of UTMs on owned websites and apps, filters, and estimation (Analytics Help, checked 17 August 2026). Two sites with the same traffic can land in different parts of that range, so somebody else's reconciliation ratio doesn't transfer to yours.

Long comparisons inside GA4 have their own limit. A standard property retains event-level data for either 2 or 14 months, and that setting "only affects explorations and funnel reports" — standard aggregated reports are unaffected (Analytics Help, checked 17 August 2026). So a three-year trend is available as a standard report and not as an exploration, which is the opposite of what most analysts assume when a custom breakdown comes back empty.

Before you spend days reconciling GA4 against an old UA export, rule out the explanation that has nothing to do with the data model. A drop that starts on the day a cookie banner shipped is a consent problem wearing a migration costume, and the two look identical in a line chart. Our free Consent Mode checker reports the consent state your tags actually set before and after a visitor chooses, so you can tell which of the two you're looking at before you start rebuilding reports.

Where to put the effort instead

Stop reconciling and start re-baselining. Pick the date GA4 became the property of record, declare it year zero, and rebuild the handful of numbers the business actually decides on from that point forward. The reconciliation project has no defensible finish line, because the two systems disagree by design and the reference data has been deleted.

Then spend the time you just saved on the registration budget. List your event types, count how many event-scoped custom dimensions they'd consume against the 50 available, and cut the ones nobody has ever filtered by. Properties that hit the ceiling usually did it by porting a taxonomy nobody had reviewed since 2019.

And if the question underneath all of this is why the advertising numbers moved, the model change is rarely the whole answer. What a bidding platform receives depends on the consent signal, the tagging layer and the browser, in that order — and keeping that chain intact is what we do.

Sources

  1. 1.Analytics Help — [GA4] Comparing metrics: Google Analytics 4 vs Universal Analytics · Checked 2026-08-17
  2. 2.Analytics Help — [GA4] About sessions · Checked 2026-08-17
  3. 3.Analytics Help — [UA→GA4] Migrate events · Checked 2026-08-17
  4. 4.Analytics Help — [GA4] Universal Analytics sunset schedule · Checked 2026-08-17
  5. 5.Analytics Help — [GA4] Analytics data collection and configuration limits · Checked 2026-08-17
  6. 6.Analytics Help — [GA4] Custom dimensions and metrics · Checked 2026-08-17
  7. 7.Analytics Help — [GA4] Create custom dimensions and metrics · Checked 2026-08-17
  8. 8.Analytics Help — [GA4] Data retention · Checked 2026-08-17

Find out what your site leaks — in 30 seconds

Run the free consent checker on your own domain, or book a call and we'll walk your setup together.