User journeys/p/[project]/paths

The routes people actually take

Nobody designs the route through a site that people take. Path analysis shows the one they found: which pages feed which, where the journey ends, and which pages are quietly making people click the same dead element three times in a row.

The paths page: a Sankey diagram of page-to-page journeys above entry page, exit page and frustration panels.The paths page: a Sankey diagram of page-to-page journeys above entry page, exit page and frustration panels.
Journeys, entry pages, exit pages

Journeys

Page-to-page transitions drawn as a flow, weighted by the number of people who took each one. Transitions are rebuilt by a background job rather than a materialised view, because working out what page preceded this one is a question a view cannot answer, because it cannot see the previous row.

A Sankey diagram showing flows between pages, with band thickness proportional to visitors.A Sankey diagram showing flows between pages, with band thickness proportional to visitors.

Entry pages

Where sessions begin. On a content site this is usually not the homepage, and knowing which article is the front door changes what is worth improving.

An entry pages panel ranking the pages sessions start on, with counts and share.An entry pages panel ranking the pages sessions start on, with counts and share.

Exit pages, ranked by rate and not by traffic

Ranking exits by raw count just re-lists your most popular pages. Falorb ranks by exit rate with a minimum-sample guard, so a page that ends 80% of the sessions reaching it surfaces, and a page with three visits and three exits does not.

An exit pages panel ranking pages by exit rate, with sessions and exit percentage.An exit pages panel ranking pages by exit rate, with sessions and exit percentage.

Frustration, detected by consequence

Rage clicks, meaning three or more clicks inside 700ms within a 30-pixel radius, plus dead clicks and JavaScript errors, per page. A dead click is identified by what did not happen: a click on something interactive where neither the URL nor the DOM changed within half a second.

Specifics

How it works, precisely

Flow source
A transitions table rebuilt every fifteen minutes with lagInFrame
Exit ranking
Exit rate, with a minimum-sample guard
Rage click
3+ clicks within 700ms in a 30px radius
Dead click
No URL or DOM change within 500ms of a click on an interactive element
Questions

User journeys: the usual questions

Is this session replay?

No. Session replay is deliberately not implemented, because recording a visitor's screen is a much larger privacy commitment than counting their clicks. The event schema and the tracker leave the extension point open for anyone who wants to add it to their own deployment.

Run it yourself this afternoon

Clone the repository, bring up the stack with Docker Compose, paste one script tag. The data never leaves your machines.