Skip to main content
Tagging Pages enables you to monitor the page views within your application, allowing you to keep track of how many users are accessing each page and use this information to trigger personalized experiences based on behaviour. Pages 1.png

Use Cases

  • Monitor in-app navigation: Track how users move through your app in real-time. Use Page data in reports to identify where users are dropping off, looping, or engaging the most.
  • Detect spikes & drops in activity: Stay ahead of potential issues by monitoring unexpected behaviours in page activity. Proactively catch bugs or UX problems—before users report them.
  • Target users by page visits: Create personalized experiences by targeting users based on the pages they’ve visited—or ignored. Trigger engagement content when users land on specific pages, or re-engage those who haven’t.
  • Merge similar pages for simplicity: Avoid the clutter of tracking too many page variants. Get big picture data by merging pages with similar URLs or structures.
  • Measure engagement depth: Use Total time on page and Avg. time on page to see which pages hold users’ attention and which ones users click away from quickly — helping you distinguish a genuinely popular page from one that’s just frequently (but briefly) visited.

Getting started with Pages

You can tag a Page using one of two methods:
  1. Click ‘Create Page’ and manually input the desired settings
  1. Choose to tag a page from the ‘Untagged pages’. From here, you can see a list of all URLs where Userpilot has been installed which have not yet been tagged, along with the page views of each over the last 90 days. A URL with a query string is listed with each parameter value replaced by *, and a URL stays listed while some of its views match no Page, for example when an Equals condition doesn’t cover its query string.
After naming your page and providing a description, you’ll be directed to the ‘Targeting’ tab to define the specifics of the Page you’d like to tag. Domains: Narrow the page targeting by specifying the relevant domains.
  1. All domains: Capture the activity of this page on any domain where the Userpilot script is installed
  2. Specific domains: Capture the activity only in cases where the domain matches / doesn’t match a specific string. In a domain that must match, use an asterisk (*) for a part that changes; it stands for one or more characters, as in *.example.com. With only doesn’t match domains, a Page counts views on every domain except those.
Path: Define the URL path of the page that you’d like to track. Multiple conditions can be added with the option for specifying if the pages targeted must match all conditions or any condition.
  1. Match any conditions: Page must match at least one condition to be included.
  2. Match all conditions: Page must match all conditions to be included.
To leave pages out, add Doesn’t contain conditions and choose Match all conditions. Under Match any conditions, a Doesn’t contain condition matches almost every URL, so the Page counts nearly every view.
If a page URL contains dynamic elements, use the Matches regex option and replace the dynamic part of the URL with an asterisk (*) as shown below.

How path conditions match

When a Page counts views, each path condition compares its text with the part of the URL after the domain: the path, the query string, and the fragment. For https://app.example.com/reports/12?tab=users#summary, a condition sees /reports/12?tab=users#summary. On a non-default port, the text starts with the port, as in :8080/reports/12. If your installation sets the pageview option of userpilotSettings to pathonly or withhash, conditions see only the path, or only the path and the fragment. Matching ignores case. Conditions see the URL as the browser encodes it, so a space appears as %20. Each condition except Matches regex has an opposite (Doesn’t equal, Doesn’t start with, Doesn’t contain, and Doesn’t end with) that counts the views the condition doesn’t. Because conditions see the query string and the fragment, Equals /dashboard doesn’t match /dashboard?utm_source=email or /dashboard#state=1. To match a page with any query string or fragment, use Starts with /dashboard/.

Trailing and leading slashes

In Equals, Starts with, and Ends with, a trailing / in a condition also matches the page without it:
  • Equals /settings/ matches /settings and /settings/.
  • Starts with /reports/ matches /reports, /reports with a query string or fragment, and every page under /reports/, but not /reportsxyz.
  • Ends with /edit/ matches /flows/12/edit and /flows/12/edit/.
Equals and Starts with read a condition that doesn’t start with / as if it did, so settings matches /settings. A condition that starts with a port, such as :8080/reports, is read as written.

Matches regex

Without regular expression syntax, a Matches regex condition reads * as any text, including none, and ? as a literal question mark. For example, /flows/*/settings matches /flows/12/settings, /users/* matches /users/ and /users/42, and /users?id=* matches /users?id=42. Other characters, such as . and +, keep their regular expression meaning, and the pattern can match anywhere in the URL. * also spans /, so /flows/*/settings also matches /flows/1/2/settings. To match exactly one segment and nothing after it, use a regular expression such as ^/flows/[^/]+/settings$. When the condition uses regular expression syntax (^, $, \, |, (, [, .*, or .+) and nothing beyond characters, ., escaped characters such as \. and \d, character classes such as [0-9], groups, |, ^, $, and the *, +, and ? quantifiers, it also matches as written, ignoring case. There, *, +, and ? are quantifiers, so ^/home/?$ matches /home and /home/. A condition that uses other syntax, such as {4} or a lookahead, isn’t matched as written, so ^/orders/\d{4}/?$ doesn’t match /orders/2024. Patterns run on the RE2 engine, and a condition with a backreference, such as \1, can’t be saved.

Page analytics

Clicking into a Tagged Page will provide useful insights into how the Page is performing, including:
  • User views: The number of unique users that have visited the page within the time frame specified.
  • Company views: The number of unique companies that have visited the page within the time frame specified.
  • Total views: The total number of time the page has been viewed within the specified time period.
  • Avg. views per users: The average number of times a user has viewed the page within the specified time period (Total views divided by User views).
  • Total time on page: The cumulative amount of time all users have spent on the page within the selected filters.
  • Avg. time per page view: The average amount of time spent on the page per view within the selected filters (Total time on page ÷ Total views).
Time on page data started being collected on July 5, 2026. Periods that include dates before this will show partial data only.

FAQs

A page view is counted when a user navigates to a page that matches the path requirements outlined in the Page settings. A new page view will be recorded in the case that:
  • The user’s session ends (after 30 minutes of inactivity) and the user then becomes active again.
  • The user refreshes the page.