AttributionHub Logo

/pages API Endpoint

The /pages endpoint returns behavioral performance insights for every page visited in user sessions — showing where sessions begin, where users convert, and where they drop off.

Unlike traditional pageview analytics, this API focuses on the role each page plays within the session-based conversion journey, based on your selected filters (e.g. UTM parameters, time range, and conversion activity).

Use this API to:

  • Identify landing pages that drive conversions
  • Discover which pages users convert on — or exit from
  • Improve pre-conversion content that assists user action
  • Analyze drop-off behavior to spot friction or content gaps

Request

1POST /api/v1/pages
2Authentication: YOUR_API_KEY
3Content-Type: application/json

Query Parameters

These parameters control which sessions are included in the analysis. The pages tied to those sessions — including landing, conversion, and exit pages — are used to calculate the final page metrics.

  • All filters use strict matching: string values are case-sensitive and must match exactly as stored (e.g., google.comGoogle.com).
  • Filter logic is AND-based: only sessions that match all specified filters simultaneously will be included.
  • Max window: 30 days. If start_date to end_date exceeds 30 days, it is automatically truncated.
ParameterTypeDescription
start_datestring (ISO 8601 or YYYY-MM-DD)Start of the time window to analyze. Only conversions that start on or after this date are included. Example: 2025-07-01T23:59:59Z or 2025-07-01. Defaults to 30 days prior to the current UTC time.
end_datestring (ISO 8601 or YYYY-MM-DD)End of the time window to analyze. Only conversions before or on this date are included. Example: 2025-07-31T23:59:59Z or 2025-07-31. Defaults to 30 days prior to the current UTC time.
conversion_pagestringFilter to conversions that occurred on a specific page URL. Must be the exact URL tracked during conversion.
meta_typestringFilter by the type of conversion. Supports values like hubspot_form, custom, or html_form.
meta_idstringFilter by a specific conversion ID (e.g., a HubSpot form ID or custom event ID).
sourcestringFilter by traffic source (e.g., google.com, facebook.com, example.com) Matches against the full primary domain. If utm_source is present, it overrides the derived source.
mediumstringFilter by traffic medium (e.g., cpc, organic). If utm_medium is present, it overrides the derived medium.
campaignstringFilter by UTM campaign name.
contentstringFilter by UTM content value.
termstringFilter by UTM term value.
landing_pagestringFilter by the landing page URL (e.g., https://example.com/pricing, https://store.example.com/products/xyz).
touch_scopeenumFilter users by session type: • any (default)firstconvertingassistafter
  • any – include all sessions (default)
  • first – only the user's first session
  • converting – sessions where a conversion occurred
  • assist – sessions between first and converting session
  • after - sessions after the first converting session

Filtering Behavior

When touch_scope is applied, only sessions matching that scope are used to determine page roles.

For example, if touch_scope is set to "converting", the roles like landing_assisted_conversion or conversion_assist will be calculated only from sessions where a conversion occurred — not from the user's entire session history.

This ensures you're analyzing page behavior within a specific context, such as just the sessions that led to a conversion.


Example: Filter by Time Frame

1POST /api/v1/pages
2Authentication: YOUR_API_KEY
3Content-Type: application/json
4
5{
6 "start_date": "2025-07-15",
7 "end_date": "2025-07-30",
8}
Returns stats for pages included in session data between 7/15/2025 - 7/30/2025

Example: Filter by Touch Scope

1POST /api/v1/pages
2Authentication: YOUR_API_KEY
3Content-Type: application/json
4
5{
6 "start_date": "2025-07-01",
7 "end_date": "2025-07-31",
8 "source": "google.com",
9 "touch_scope": "converting"
10}
This returns pages involved in converting sessions during July 2025 where the source was Google.

Response

1{
2 "time_frame": {
3 "start": "2025-07-01T00:00:00Z",
4 "end": "2025-07-31T23:59:59Z"
5 },
6 "summary_totals": {
7 "total_sessions": 1289,
8 "total_users": 1075,
9 "total_conversion_events": 423,
10 "total_conversion_users": 387
11 },
12 "conversion_performance": [
13 {
14 "url": "https://example.com/signup",
15 "conversion": { "sessions": 134, "users": 127 },
16 "conversion_assist": { "sessions": 21, "users": 19 },
17 "landing_assisted_conversion": { "sessions": 88, "users": 84 }
18 }
19 ],
20 "drop_off_performance": [
21 {
22 "url": "https://example.com/features",
23 "drop_off": { "sessions": 52, "users": 48 },
24 "drop_off_assist": { "sessions": 15, "users": 14 }
25 }
26 ]
27}

The /pages endpoint returns page-level insights to help you evaluate how users interact with your site across different stages of the journey—landing, converting, assisting, and exiting. It includes both high-level summaries and a detailed breakdown of all observed pages.

URL normalization: Pages are automatically consolidated based on a normalized version of the URL. This means:

  • Trailing slashes (/pricing vs /pricing/) are treated as equivalent
  • Query strings are removed (e.g., /pricing?ref=abc becomes /pricing)

This ensures that performance data is aggregated accurately across canonical page paths.

summary_totals

High-level engagement and conversion metrics across the selected timeframe.

total_sessions 

Number of individual sessions included in the results. Useful for measuring site activity volume.

total_users

Number of unique users in those sessions. Helpful for understanding reach and normalizing performance.

total_conversion_events

Count of all conversion events that occurred within the included sessions. Each event represents a form submission, purchase, or other tracked action.

total_conversion_users

Number of unique users who completed at least one conversion event in the included sessions.

conversion_performance

This section highlights how pages contributed to sessions that resulted in a conversion. Only sessions containing at least one conversion event are included in this analysis.

Use this data to identify which pages are most effective — or potentially ineffective — at supporting conversion behavior during those sessions.

Each page may appear under one or more roles, with counts broken down by:

  • sessions: Number of converting sessions that included the page in that role
  • users: Number of unique users who experienced the page in that role

conversion

The page where the conversion occurred.

conversion_assist

A page visited before the conversion. In some cases, where the users converts on the page they land on, a page can be both conversion and conversion_assist.

landing_assisted_conversion

The landing page (first page) of a converting session. This helps identify top-performing entry points.

drop_off_performance

This section highlights how pages appeared in non-converting sessions. It helps uncover potential friction points, weak entry paths, or content gaps.

Only sessions that did not include a conversion (or sessions that occurred after the first converting session) are evaluated.

Each page may appear under one or more of the following roles, with counts broken down by:

  • sessions: Number of qualifying sessions that included the page in that role
  • users: Number of unique users who experienced the page in that role

drop_off

The final page in a session that ended without a conversion. This includes both single-page bounces and multi-page sessions.

drop_off_assist

The page viewed immediately before the drop-off page. Helpful for understanding navigation paths that preceded exit.

landing_assisted_drop_off 

The first page visited in a session that did not result in conversion. Can help identify underperforming entry points.

time_frame

Specifies the start and end of the data window used for analysis. Returned in ISO 8601 format. 

  • start: Beginning of the selected time range (ISO 8601 format)
  • end: End of the selected time range (ISO 8601 format)

Helps confirm the scope of data used for session and page role calculations and can be used as a way to paginate through data.

Note: The API enforces a maximum range of 30 days. If the requested range exceeds this, it will automatically be truncated to only include the most recent 30 days from the end date.

This field is helpful for verifying the window used in each request and for paginating across larger time periods if needed.


No Results

If no qualifying conversions are found, the API will return:

1{ "message": "No page data found for the given parameters." }
This is not an error; it simply indicates no users matched the filters.