# Path exploration

A flow diagram of the pages inside a session: where people go after each page, and how they arrived before reaching one. High-cardinality URLs are grouped automatically so the diagram stays readable.

## What this page shows

Path exploration lives at `/path` and appears in the left navigation under the **Explore** group as **Path**. It draws a flow diagram in the **Page flow (by session)** card: each column is a step, each node is a page, and the thickness of a link is the number of sessions that made that move.

A funnel tells you how many people completed a path **you defined**. Path exploration is the opposite: you define nothing and see what people actually did — including the routes you never anticipated.

## The controls

| Control | What it does |
| --- | --- |
| Direction | **Forward — where users go next** walks outward from the entry page. **Backward — how users arrive** reverses each session's order, so step one is the session's last page. |
| Steps | The depth of the diagram, from 2 to 6 — how many moves are followed from step one. |
| Pages per step | How many of the busiest pages each column keeps: 5, 8, 10 or 15. The rest fold into (others). |
| Starting at | Appears only after you click a node, with a **Reset** beside it. |

> The path sankey, with the depth and top-N-per-step controls. — [analytics.adpix.io/en/path](https://analytics.adpix.io/en/path)

## Why URLs collapse to `*`

This is the thing to understand about the page; without it you will file the behaviour as a bug.

Before the diagram is built, every URL is reduced to its group. First the query string and the hash — anything after `?` or `#` — are dropped. Then any path segment matching one of three rules becomes `*`:

- **Purely numeric** — order IDs, article IDs, invoice numbers.
- **Domain-like** — it contains a dot whose suffix is all letters and is not a page extension. `academyzab.ir` and `foo.com` collapse, while `cart.php` and `clientarea.php` are preserved. The page extensions kept are `php`, `html`, `htm`, `asp`, `aspx`, `jsp`, `js`, `css`, `json`, `xml`, `txt`, `pdf`, `cgi`, `do` and `action`.
- **Longer than 24 characters** — long article and product slugs. A short, meaningful slug is kept, because it is content rather than an ID.

The effect:

| The real URL | What the diagram shows |
| --- | --- |
| `/hosting/knowledgebase/557/mshahd-v-draft-a-very-long-slug-here` | `/hosting/knowledgebase/*/*` |
| `/hosting/domain/academyzab.ir/renew` | `/hosting/domain/*/renew` |
| `/hosting/cart.php?a=complete` | `/hosting/cart.php` |
| `/server-vps/linux/#product896` | `/server-vps/linux/` |
| `/hosting/store/windows-pro/1gb` | `/hosting/store/windows-pro/1gb` |

Without the grouping, a shop with a thousand products would produce a thousand separate nodes and nothing legible. With it, the real pattern shows: "people go from the knowledge base to the cart", instead of a thousand hair-thin lines.

> **The grouping cannot be turned off**
>
> There is no control that restores raw URLs on this page, and that is deliberate. If your URLs are structured and you need to see them exactly, use [explorations](analytics/explore/explorations) with the Page path dimension, or the [events report](analytics/reports/events) — both report the page path untouched.

After grouping, consecutive pages that landed in the same group are compacted into one. So three reloads of a page, or a move between two URLs that reduce to the same group, never draw a loop back onto the same node.

## (others), and the per-step cap

Even after grouping, a column can still hold dozens of nodes. So at each step the pages are ranked by total flow, as many as **Pages per step** are kept from the top, and the long tail **of that step** folds into a single node named `(others)`. The tail's links are re-routed onto that node and summed.

Two things to know about it:

- `(others)` is per step. The `(others)` in step two is not the same node as the one in step three.
- `(others)` is not drillable — clicking it does nothing, because it is not a real page.

## Click to drill in

Click any node that is a real page and it becomes the **Starting at** filter. The diagram rebuilds using only sessions whose **first step** is that page. The hint under the diagram says the same thing: click a first-step page to explore the paths from it.

The filter always applies to the first step. It does not mean "every path that passes through this page somewhere in the middle" — it means "sessions that started here". In backward mode the order is reversed, so the first step is the page the session ended on.

**Reset** clears the filter.

## What is counted

- **Page-view events only.** Clicks, form submissions and purchases do not appear in this diagram.
- **The unit is the session.** Each session contributes one ordered sequence of its pages, and the number on a link is a session count. Hovering a node or a link shows that number with the full page name.
- **At most fifty thousand sessions** are read from the selected range. On very high-traffic properties the diagram is a sample of the range rather than a complete count — so do not reconcile these numbers against the counting reports.
- Server-side events never appear here: they are not page views and they have no session.
- Test-mode events are excluded, and the range boundaries are evaluated in the property's timezone.

If there is no navigation in the selected range you get "No path data in range."

> **On a single-page app, the tag must report the route**
>
> If your site is a single-page app and route changes do not produce a page view, this diagram stays effectively empty or shows every session as single-page. How to report them correctly — and the mistake that double-counts page views instead — is in [SPAs and page views](analytics/collect/spa-and-page-view).

## Reading the diagram

Columns start at step one, and the step number is not printed on the labels. Labels longer than thirty characters are truncated with an ellipsis; hover a node for the full name. The diagram's height grows automatically with the busiest column so labels do not collide.

If it is still crowded, two things help: lower **Pages per step**, or lower **Steps** and walk forward by clicking nodes instead.

## Frequently asked questions

### Why do I see paths with a star instead of my real URLs?

Because high-cardinality URL segments are grouped on purpose. Any path segment that is purely numeric, looks like a domain, or is longer than twenty-four characters becomes `*`. Without that, every order ID and every article title would be its own node and the diagram would be an unreadable block. It is not a bug and it cannot be switched off.

### What does (others) mean?

It is every page at that step that was not among the busiest, collapsed into a single node. How many pages are kept per step is the Pages per step control. That node cannot be clicked through.

### Why are my single-page sessions missing?

Because a single-page session has no navigation and therefore produces no link. The diagram is built from page-to-page links; a session that saw one page — or reloaded that same page several times — is not counted in any link.

### What exactly does clicking a node do?

It sets that page as Starting at and rebuilds the diagram from sessions that began there. The filter always applies to the first step, so clicking a node in a later column still rebuilds the diagram from the beginning, starting at that page. Reset clears it.

## Related

- [Explorations](https://docs.adpix.io/en/analytics/explore/explorations/)
- [The conversion funnel](https://docs.adpix.io/en/analytics/reports/funnel/)
- [The Events report](https://docs.adpix.io/en/analytics/reports/events/)
- [Page views and single-page apps](https://docs.adpix.io/en/analytics/collect/spa-and-page-view/)

---

[Docs](https://docs.adpix.io/en/analytics/explore/path-exploration/) · AdPix
