Overview
URL pattern matching is a powerful feature in Usertour that helps you control exactly where your content appears. You can use it to:- Auto-start onboarding flows or product tours
- Progress to the next step based on URL changes
- Mark checklist tasks as completed when users reach certain pages
- Control where specific content appears in your application
Note: These URL pattern rules apply to Current page conditions only. For Navigate to page actions, you’ll need to use the full URL and can insert user attributes for dynamic values.
Quick Reference
Here are the key rules to remember:- Only specify the URL parts you care about - omit the rest
- Use
-as a wildcard to match anything - Use
:segmentto match a single dynamic segment - You can specify multiple patterns to include or exclude
Common Patterns
1. Exact Path Matching
https://example.com/app/dashboardhttp://example.com/app/dashboardhttps://other-example.com/app/dashboard
https://example.com/apphttps://example.com/app/dashboard/subhttps://example.com/app/dashboard/sub/page
2. Including Subpaths
* matches everything (including nothing).
✅ Matches:
https://example.com/apphttps://example.com/app/projectshttps://example.com/app/projects/1https://other-example.com/apphttps://example.com/applications
https://example.com/settings
3. Only Subpaths
/ before the *.
✅ Matches:
https://example.com/app/projectshttps://example.com/app/projects/1https://other-example.com/app/projects
https://example.com/apphttps://example.com/applications
4. Dynamic Path Segments
:project matches any single path segment (anything except /).
✅ Matches:
https://example.com/projects/1/detailshttps://example.com/projects/2/details
https://example.com/projects/1/details/edithttps://example.com/projects/1/history
5. Mixing Dynamic Segments and Subpaths
https://example.com/app/apple/projects/1https://example.com/app/banana/projects/1https://example.com/app/banana/projects/1/details
https://example.com/app/apple/projects
6. Specific Domain
https://app.com/https://app.com/any/path
https://www.app.com/https://not-app.com/
7. Dynamic Subdomain
https://www.app.com/https://www.app.com/any/pathhttps://dashboard.app.com/
https://app.com/https://multiple.levels.app.com/https://www.not-app.com/
8. Mix Domain and Path
https://dashboard.example.com/app/apple/projectshttps://dashboard.example.com/app/apple/projects/1
URL Structure
Let’s break down a URL into its components:Scheme
The part before:// (usually http or https).
- Usually optional in patterns
- Only specify if you need to match a specific scheme
Domain
The part between:// and the first /.
Dynamic Subdomains
To match dynamic subdomains (e.g.apple.app.com and banana.app.com), use a colon and an arbitrary name such as :company.app.com. :company will match a non-empty subdomain, meaning it will not include .. The name after : does not matter and is currently not used for anything.
:company.app.com and :subdomain.app.com are equivalent and will match:
apple.app.combanana.app.com
app.com(missing subdomain)more.apple.app.com(more subdomains)
Wildcard Domains
You can also use* as a wildcard character to match any number of subdomains.
*.app.com will match both one.app.com and one.two.app.com, but not app.com.
*app.com will match app.com, but will also match myapp.com.
Path
In a URL, the path is the part that comes after the domain and before either the query parameters (starting with?) or the fragment (starting with #).
Basic Rules
- Paths MUST start with a forward slash
/ - If you omit the leading
/(e.g.app/projects), the system will treatappas a domain - The correct pattern should be
/app/projects
Dynamic Path Segments
Use:paramName to match dynamic path segments:
/app/apple/projects/app/banana/projects
/app/projects(missing company segment)/app/apple/projects/1(path too deep)
Tip: Parameter names like:companyor:slugare just identifiers - you can name them anything, they don’t affect the matching logic
Wildcard Matching
Use* to match any path:
-
/app/*- ✅ Matches
/app/one,/app/one/two - ❌ Does not match
/app - Note: Requires at least one segment after
/app/
- ✅ Matches
-
/app*- ✅ Matches
/app,/applications - Note: Matches anything that starts with
app
- ✅ Matches
-
/*/projects- ✅ Matches
/app/projects,/app/one/two/three/projects - Note: Matches projects at any depth
- ✅ Matches
Combining Patterns
You can mix dynamic segments and wildcards in the same pattern:- Match any path at the start
- Capture a specific customer
- Capture a specific invoice
- Match any remaining path
Query
The part that comes after? and before # in a URL.
Basic Rules
- Query parameters are key-value pairs (e.g.
key=value) - Multiple parameters are separated by
& - Order doesn’t matter
- Extra parameters are ignored
- Parameter values are optional
Examples
?fruit=apple&tab=analytics will match:
?fruit=apple&tab=analytics?tab=analytics&fruit=apple(different order, same result)?other=test&fruit=apple&tab=analytics(extra params ignored)
Wildcard Matching
- Match values starting with specific text:
- Match any value:
Fragment
The part that comes after# in a URL.
Fragment Patterns
Fragments follow the same rules as paths:- Dynamic segments:
- Wildcards:
Tip: In single-page applications (SPAs), fragments often act like paths and can be matched using the same patterns