The most common question we get about GA4 is not how to use it. It is why the numbers are different from Universal Analytics. The short answer is that GA4 is not a new interface on the same data model — it is a different data model.
The core change: everything is an event
Universal Analytics organised data into a hierarchy of sessions containing pageviews, events, transactions and social interactions, each with its own schema. GA4 collapses all of that into one thing: an event, with parameters attached.
A page view is an event. A purchase is an event. A scroll is an event. This is why the old Category / Action / Label structure is gone; it has been replaced by event names with arbitrary parameters, which is more flexible and considerably less tidy if nobody imposes a naming convention.
Sessions are calculated differently
In Universal Analytics, a session restarted at midnight and whenever the campaign source changed. In GA4, neither of those is true. A session is a period of activity ending after 30 minutes of inactivity, full stop.
The practical effect is that GA4 usually reports fewer sessions than Universal Analytics did for the same traffic. That is not data loss. It is a different definition.
Bounce rate was replaced, then quietly brought back
GA4 launched with engagement rate instead of bounce rate. An engaged session is one that lasts more than 10 seconds, fires a conversion, or includes at least two page views. Bounce rate in GA4 is simply the inverse of that.
This matters because Universal Analytics counted a single-page visit as a bounce even if the visitor read for six minutes. If your bounce rate improved dramatically when you moved to GA4, that is the reason, and it is not an improvement you should report as a win.
Attribution defaults changed
Universal Analytics reported on last non-direct click by default. GA4 uses data-driven attribution as the default model, distributing credit across touchpoints using your own conversion data.
This is generally more accurate and much harder to explain in a board meeting. It also means your channel numbers will not tie out against the old property, because credit is being divided rather than assigned wholesale to the last click.
Conversions count differently
Universal Analytics counted one goal conversion per session, no matter how many times it happened. GA4 counts every conversion event. A visitor who submits two forms in one session is one conversion in Universal Analytics and two in GA4.
What this means practically
- Do not expect the numbers to match. They measure different things. Reconciling them is wasted effort.
- Rebaseline your reporting. Year-on-year comparisons that span the migration are comparing two different methodologies.
- Re-agree your definitions internally before anyone builds a target on top of GA4 numbers.
- Export your historical Universal Analytics data if you have not already. It is no longer accessible through the interface.
What genuinely improved
Credit where it is due: cross-platform measurement of web and app in one property is a real advance, the Explore reports are far more capable than the old custom reports, free BigQuery export used to be a paid feature, and the event model handles modern single-page applications far better than pageview-centric tracking ever did.
Where to go from here
The migration is behind us, but the reporting confusion it caused often is not. The fix is usually to re-agree definitions rather than to re-implement tracking. If you want a second pair of eyes on your setup, our analytics and tracking team runs a free tracking audit that covers GA4, Google Tag Manager, conversion events, CRM integration and attribution.