What is Pageview?
A pageview is a single load (or reload) of a web page by a user’s browser. In modern tools, the concept maps to a tracking hit/event fired when a page is rendered. In GA4, this is the page_view
Event; in Matomo and Plausible, pageviews are tracked automatically on each page load. Pageviews are not people and not visits—those are Active Users and Session respectively.
Pageview vs Session vs Screen View
- Session: a group of interactions within a time window (e.g., 30 minutes). One session can include many pageviews. See Session.
- Screen View: the equivalent metric for in-app screens. See Screen View.
- Pages per Session: average pageviews per session. See Pages Per Session.
How is a pageview counted?
Most trackers fire a pageview when:
- the URL changes and the page loads, or
- in single-page apps (SPAs), when a route change event is sent manually or via the tracker’s router integration.
Key inputs often include URL, page title, referrer, and UTM parameters; attribution may depend on Referral vs Direct traffic and your Attribution Model.
Why pageviews matter
- Gauge content reach and navigation depth (combine with User Flow).
- Diagnose acquisition quality (compare pageviews with Conversion and bounce/engagement metrics).
- Power real-time dashboards (see Real-Time Data).
Common pitfalls
- Double-counting in SPAs: ensure one pageview per route change; use your Tag Management triggers wisely.
- Self-referrals: missing cross-domain/SPA referrer handling inflates new sessions and skews pageviews.
- Bot traffic: filter server-side or by consented Cookie/First-Party Cookie logic and tracker bot lists.
- Sampling & exports: when analyzing at scale (e.g., GA4 → BigQuery), validate that your pageview counts match UI totals.
Tool notes (GA4, Matomo, Plausible)
- GA4: pageviews are events; enhanced measurement can auto-track route changes, but SPAs may still need manual router hooks.
- Matomo: pageview on load; SPA tracking via
setCustomUrl
/trackPageView
. - Plausible: lightweight script; SPA support via hash/history listeners or manual
plausible('pageview')
.