Understanding URLs for page tagging

Pendo follows standard Web URL syntax rules. A URL is composed of different parts. The three main parts of a URL are the protocol, domain or hostname, and the path.

Example URL: https://www.example.com/path/to/myfile.html

  • https is the protocol.
  • www.example.com is the domain name.
  • /path/to/myfile.html is the the path to the resource on the Web server.
Note: In most cases, the path of the URL is case sensitive. For this reason, we recommend that you capture case syntax for tagged pages in Pendo.

Supported URLS

The table that follows lists supported standard URL syntax and examples.

  Description Example
Standard URL The full address of a Webpage. *https://www.pendo.io/features/platform/index.html
Wildcards (*)

The symbol used to match any number of characters in the URL. You can use multiple wildcards.



Ignore After (**) Ignore everything after a double wildcard. https://www.pendo.io/features/platform/index.html/users/**
Fragment (#) Internal page reference. https://domain.com/#page1. You can't use a wildcard (*) after a fragment (#) in Page rules. 
Contains (~contains:) Include a specific string. https://www.pendo.io/features/platform/index.html/users/~contains:dashboard
Query parameter existence (?) Query whether a parameter exists. https://pendo.io?mobile
Query parameter value (?and =) Query the value of a parameter. https://pendo.io?language=english
Multiple query parameters (?, &, and =) Query the existence and value of multiple parameters. https://pendo.io?mobile&language=english


Pendo understands the difference between https://domain.com/#page1 and https://domain.com/#page2. The Page rule, https://*, will match with both URLs. If your URLs are structured this way and you would like to have a Page rule that only corresponds with https://domain.com, please review the Location API documentation.

Parameterized URLs 

Pendo provides the ability to ‘parameterize’ a page URL. This functions similarly to wildcard * with a major addition: the various wildcard results are created as their own page results nested under the ‘page’ you created. This is useful to easily create page rules across a countable variety of URLs with a single entry.

For example, if you have the following three page URLs that carry similar content or you would like to view together:




You could use the following Page rule to capture all three:


These would appear inside your subscription under your Page rule like this:

You can store single query parameter as a Page Parameter using the same syntax described above, for example:
If you're using a Page rule with*parameter*, you can't include any other rules on the same page, otherwise, you don't see the Top Parameters data. 

Unsupported URLs

Page Parameters (sections after an ; but before a ? or #) Pendo skips dynamically set page parameters in the URL.
Any form of NOT within page rules. Pendo doesn't support NOTin the URL syntax.
Contains (~contains:) after a query (?)

Pendo doesn't support ~contains:? in the URL syntax.

* only acts as a wildcard when matching the entirety of a string between two slashes For example, https://www.pendo.io/features will be matched by https://*/* but not by //*.pendo.io/features or //www.pendo.io/f*s.
Neither * nor ~contains: works after a ? Wildcards and "Contains" are treated literally.
The order of query parameters is ignored after a ? For example, https://www.pendo.io?first=one&second=two and https://www.pendo.io?second=two&first=one will both be matched by the page rule //www.pendo.io?first=one&second=two.


Custom Match

When using the Custom Match inside Manage Pages In-App there are various options that will appear below the URL.



Here is an explanation of the options:

  • <Ignore>: This will match everything inside of two forward slashes /*/
  • <Ignore after>: This will match everything else in the URL after a double star /**
  • <Parameter>: This works just like <Ignore>, but captures the values between the slashes
  • search_params=: This is related to the search/query part of the URL (i.e. everything after the ?, but before any #) set to a specific value
  • search_params=<anything>: This will include a search/query part of the URL set to any value


Query Parameters

To match https://www.pendo.io/features?language=english&mobile=falseand https://www.pendo.io/features?language=french&mobile=true but not https://www.pendo.io/features?mobile=true//www.pendo.io/features?language

To match https://www.pendo.io/features?language=english but not https://www.pendo.io/features?language=french//www.pendo.io/features?language=english


To match https://app.pendo.io/ and https://help.pendo.io/ but not https://www.insert.io///~contains:pendo.io/**