← Back to KPIs

Pages Per Session

EngagementRetail, E-commerce, SaaS, Media, Technology

Pages per session measures the average number of pages visited during a single, continuous visit to a website.

Business Use Case

A content team monitors pages per session by landing page and traffic source. If paid social traffic has low pages per session compared with organic search, the team can improve landing page internal linking, content recommendations, or audience targeting to increase on-site exploration.

Business Criticality

Medium

Journey / Navigation Area

Digital Analytics

Scope

User

Formula

Total Pageviews ÷ Total Sessions

Calculation Notes

1️⃣ Use page_view events only. 2️⃣ Exclude screen_view unless creating a combined KPI. 3️⃣ Exclude bot/internal traffic where possible. 4️⃣ Handle sessions with zero page_view events consistently. 5️⃣ Decide on including all sessions or only those with at least one page_view. 6️⃣ Verify virtual page views for SPA implementations. 7️⃣ Align on page view counting for repeated reloads in Adobe.

Technical Details

Measure TypeAverage
Aggregation WindowSession, Hourly, Daily, Monthly, Yearly, User

Events

PlatformEvent
Google Analytics 4page_view
AdobepageView

Data Mappings

W3 Data Layer
{
  "event": "page_view",
  "page": {
    "pageName": "Product Detail",
    "pageURL": "https://www.example.com/products/widget-a",
    "pageType": "product",
    "siteSection": "catalog"
  },
  "session": {
    "sessionId": "sess_123456",
    "pageViewCount": 3
  },
  "web": {
    "webPageDetails": {
      "name": "Product Detail",
      "URL": "https://www.example.com/products/widget-a"
    }
  }
}
GA4 Data Layer
{
  "event": "page_view",
  "page_title": "Product Detail",
  "page_location": "https://www.example.com/products/widget-a",
  "page_path": "/products/widget-a",
  "page_referrer": "https://www.example.com/category/widgets",
  "session_id": "sess_123456",
  "page_view_count_in_session": 3
}
Adobe Client Data Layer
{
  "event": "page-view",
  "web": {
    "webPageDetails": {
      "name": "Product Detail",
      "URL": "https://www.example.com/products/widget-a",
      "server": "www.example.com",
      "siteSection": "catalog",
      "pageViews": {
        "value": 1
      }
    }
  },
  "session": {
    "sessionID": "sess_123456",
    "pageViewCount": 3
  }
}
XDM Mapping
{
  "eventType": "web.webpagedetails.pageViews",
  "web.webPageDetails.pageViews.value": 1,
  "web.webPageDetails.name": "Product Detail",
  "web.webPageDetails.URL": "https://www.example.com/products/widget-a",
  "web.webReferrer.URL": "https://www.example.com/category/widgets",
  "_experience.analytics.customDimensions.eVars.eVar1": "sess_123456"
}

SQL Queries

Google Analytics 4 (BigQuery)
WITH session_pageviews AS ( SELECT user_pseudo_id, user_id, CONCAT(user_pseudo_id, '-', CAST((SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') AS STRING)) AS session_id, COUNTIF(event_name = 'page_view') AS page_views FROM `project.dataset.events_*` WHERE _TABLE_SUFFIX BETWEEN '20250101' AND '20250131' GROUP BY 1, 2, 3 ), valid_sessions AS ( SELECT session_id, page_views FROM session_pageviews WHERE session_id IS NOT NULL ) SELECT SAFE_DIVIDE(SUM(page_views), COUNT(DISTINCT session_id)) AS pages_per_session FROM valid_sessions;
Adobe Experience Platform (AEP Query Service)
WITH session_pageviews AS ( SELECT identityMap.ECID[0].id AS mcid, session_id, COUNT(CASE WHEN eventType = 'web.pageView' THEN 1 END) AS page_views FROM dataset.events WHERE timestamp BETWEEN '2025-01-01' AND '2025-01-31' GROUP BY mcid, session_id ), valid_sessions AS ( SELECT session_id, page_views FROM session_pageviews WHERE session_id IS NOT NULL ) SELECT SUM(page_views) / COUNT(DISTINCT session_id) AS pages_per_session FROM valid_sessions;

Source Data

Digital Analytics

Dependencies

Prerequisite: List the dependencies required for this KPI

Events:

page_view

Dimensions:

session_datapage_urldate

Report Attributes

Dimensions: Landing Page, Page Path, Page Title, Source/Medium, Default Channel Group, Device Category, Country, Content Group, New vs Returning Metrics: Page Views, Sessions, Pages per Session, Engaged Sessions, Bounce Rate, Average Engagement Time

Recommended Reporting Views

Views
Traffic AnalysisUser Engagement

Segment Eligibility

True

Governance

Data SensitivityInternal

Governance

Created byswapnamagantius
Created on5/12/2026
Last modified bydevyendarm
Last modified on5/30/2026
StatusPUBLISHED

GitHub

View related Pull Requestcatalog/kpis/pages-per-session.yml

Community Discussion