Web Analytics Fundamentals
The vocabulary before the tool
Before learning any specific platform's dashboard, it's worth nailing down the handful of terms that every web analytics tool builds on — because the same word (session, bounce, engagement) can mean subtly different things across tools, and misreading one metric's definition is the single most common source of 'the numbers don't add up' confusion between two reports on the same website.
Pageviews and users
A pageview is logged every time a page loads or a virtual page-change fires in a single-page app — a user who reloads a page three times generates three pageviews from one visit. A user (sometimes 'unique user') is a single distinct person, identified by a client ID stored in a cookie or device identifier, counted once no matter how many pageviews or visits they generate within the measurement window. A new user is someone whose client ID has never been seen before; a returning user has.
The gap between pageviews and users matters: a page can have thousands of pageviews from a small number of highly engaged repeat users, or the same pageview count from thousands of one-time visitors — those are very different situations that a pageview count alone can't distinguish.
Sessions: a time-boxed container of activity
A session groups a user's interactions together within a bounded time window, traditionally capped by a period of inactivity (classically 30 minutes) or when the clock crosses midnight. One user can have many sessions over time, and a single session typically contains multiple pageviews and events. Sessions are useful for measuring 'how much does a typical visit accomplish' but are an imperfect, somewhat arbitrary construct — the 30-minute cutoff is a convention, not a law of user behavior, and this arbitrariness is part of why GA4 shifted its core data model away from sessions as the primary unit toward raw events.
Sessions can fragment or inflate without you noticing
Core metrics at a glance
| Metric | What it counts | Common misread |
|---|---|---|
| Pageviews | Every page load or virtual pageview event | Confused with unique visitor count |
| Users | Distinct client/device IDs seen in the period | Assumed to equal distinct real people (cross-device users get double-counted) |
| Sessions | Time-boxed groupings of a user's activity | Treated as a precise 'visit count' rather than an approximation |
| Bounce rate | Sessions with no meaningful engagement (classic UA: single pageview, no event) | Assumed universally bad — high bounce is normal and fine on single-answer content pages |
| Engagement rate (GA4) | Sessions lasting 10+ seconds, with a conversion event, or with 2+ pageviews | Confused with the old 'bounce rate' — it's closer to its inverse but not an exact mirror |
Bounce rate vs. engagement rate
In classic Universal Analytics, bounce rate measured the percentage of single-pageview, single-interaction sessions — the user landed and left without triggering anything else. It was a crude but widely understood proxy for 'did nothing happen.' GA4 replaced it conceptually with engagement rate, measured as the percentage of sessions that lasted 10 seconds or longer, included a conversion event, or had at least two pageviews or screen views. GA4 still reports a bounce rate metric, but it's calculated as the complement of engagement rate, not the original UA definition — the two numbers are not directly comparable across platforms even though they share a name.
GA4 "engaged session" = session where AT LEAST ONE is true:
- lasted 10 seconds or longer
- fired at least one conversion event
- had 2+ pageviews or screen views
GA4 bounce rate = 100% - engagement rate
(this is NOT the same calculation as classic Universal Analytics
bounce rate, despite the shared metric name)High bounce rate isn't automatically bad
Why this vocabulary matters before touching a dashboard
Most cross-team confusion in marketing analytics ('why does Google Analytics say 10,000 visits but our ad platform says 14,000 clicks') traces back to these definitional gaps rather than a tracking bug: different tools count 'a visit' differently, apply different session timeout rules, or filter bot traffic differently. Knowing the precise definition behind each number is what lets you reconcile two reports instead of assuming one of them is simply broken.
What's next
With this vocabulary in place, the next step is seeing how GA4 specifically structures all of this as an event-based data model rather than the session-based model these terms originated from.
Next: GA4 Architecture →
I build these systems professionally.
Whether it's a RAG pipeline, analytics migration, or AI workflow — let's talk.