The fundamental model shift
Universal Analytics organized data around sessions and hits. A session was a container of activity — everything a user did in a single visit. Hits were the things inside sessions: pageview hits, event hits, transaction hits, social hits. UA's reports were built around this hierarchy: users made sessions, sessions contained hits, hits had categories/actions/labels.
GA4 abandoned this hierarchy. In GA4, everything is an event. A page view is an event (page_view). A session start is an event (session_start). A form submission is an event. A purchase is an event. There's no separate concept of a "pageview hit" versus an "event hit" — they're all just events with different names and parameters.
This matters because it changes how you think about data collection and how you query data. In UA, you tracked "events" (category/action/label) as distinct from pageviews. In GA4, you track everything as events and use parameters to add context. The mental model requires adjustment.
Why session counts look different
One of the first things people notice when comparing GA4 and UA side-by-side is that session counts are different — often significantly. This isn't a bug. The session definitions are different.
In Universal Analytics, a session expired after 30 minutes of inactivity or at midnight. A new campaign parameter (UTM) during an existing session triggered a new session. This meant a single user who visited in the morning, left for an hour, and came back in the afternoon generated two sessions.
In GA4, a session is created by the session_start event. Sessions don't reset at midnight. A new UTM source doesn't automatically create a new session. And GA4 sessions expire after 30 minutes of inactivity, similar to UA, but some edge cases are handled differently.
The result: GA4 typically shows fewer sessions than UA for the same traffic. This doesn't mean traffic decreased — it means the definition changed. Don't benchmark GA4 session counts against historical UA session counts. They're not the same metric.
Bounce rate is gone (sort of)
Universal Analytics's bounce rate measured the percentage of sessions where the user viewed only one page and then left without triggering any other hits. High bounce rate was generally bad; low bounce rate was generally good — though context mattered significantly (a blog post with a high bounce rate is fine if readers found their answer).
GA4 replaced bounce rate with engagement rate — the percentage of sessions that were "engaged." An engaged session is one that lasted more than 10 seconds, had more than one page view, or resulted in a conversion event. Bounce rate in GA4 is simply the inverse: the percentage of sessions that were not engaged.
This is a better metric in most cases. A user who reads your entire blog post and leaves after 8 minutes is a bounce in UA but an engaged session in GA4. The engagement rate tells you something more meaningful about content performance.
The event model requires more intentional setup
UA had a fixed hierarchy that required minimal configuration for basic reporting. Install the tracking code, and you had sessions, pageviews, bounce rate, and geographic/device/source reports — all automatically.
GA4 auto-collects more events than UA did (page views, scrolls, outbound clicks, file downloads, video engagement with YouTube videos) but gives you less out-of-the-box business intelligence. The data model is more flexible, but "more flexible" means "requires more decisions."
You need to decide what to track, what to name events and parameters, what to mark as key events (conversions), and what custom dimensions to register in GA4 so your parameters appear in reports. Without these decisions — backed by a measurement plan — GA4 produces a lot of event data and very little insight.
User identification and cross-device tracking
UA's user identification relied primarily on cookies — the _ga cookie identified a browser, and UA treated that as a "user." Cross-device behavior (someone who visited on mobile and then converted on desktop) was largely invisible unless you implemented User ID tracking.
GA4 uses a blended identity model by default. It can use cookies, User IDs (if you implement them), Google Signals (aggregated cross-device data from signed-in Google users who have opted into personalization), and device IDs. In Reporting Identity settings, you can choose how GA4 combines these signals.
This means GA4's user counts are more accurate but also more complex. Two sessions that UA counted as two users might be one user in GA4 if Google Signals identifies them as the same person across devices. This contributes to GA4 often showing fewer users than UA for the same traffic.
The reporting interface difference
Even setting aside the data model, GA4's reporting interface is substantively different from UA's. UA had a rich standard report library — hundreds of pre-built reports covering every combination of dimension and metric. GA4's standard reports are fewer and less flexible, with more of the analytical power moved to the Explore section (ad-hoc analysis).
GA4 Explore (previously Analysis Hub) is genuinely more powerful than anything UA offered — funnel exploration, path analysis, cohort analysis, and segment overlap analysis are all available. But it requires more active use. The default reports won't surface the same insights UA's standard reports did.
The practical advice: don't spend time trying to recreate UA's reports in GA4. Invest that time in building GA4 Explore analyses that answer the questions you actually need answered. The interface is different, but the analytical capability is higher if you use it as designed rather than as a UA replacement.
Want GA4 implemented the way it's meant to be used?
I set up GA4 with a measurement plan, clean event taxonomy, Explore templates for your key analyses, and documentation — so you get insights, not just data.
Get a quote