Path Analytics
How visitors actually move from a landing page to a key event — form submissions, sign-ups, contact and demo requests. Approximates GA4's Path Exploration via session-level aggregates, with a sankey for the dominant flows and a table for the long tail.
| Landing section | Mid section | Key event | Conv. sessions | Share |
|---|
| Path (landing → mid → event) | Conv. sessions | Share |
|---|
| Landing page | Sessions | Conversions | CVR |
|---|
| Last page | Events | Share |
|---|
The fundamental limit
GA4's Data API does not expose its native Path Exploration. There is no endpoint that returns ordered page sequences per session. To approximate paths we run three layered session-level aggregates and stitch them in the browser. Results are directionally correct for the most-trafficked routes, but the long tail is necessarily lossy.
What "conversion" means here
On load the dashboard asks GA4 for every event marked as a key event in your property settings (Admin → Events → "Mark as key event"). Any event with a non-zero keyEvents metric in the last 90 days becomes a candidate, and the toggle chips above let you turn individual events on and off.
If no key events are configured in GA4 — which is unusual but possible — the dashboard falls back to a heuristic list (form_submit, sign_up, contact, demo_request, generate_lead, lead_form_submission) intersected with whatever's actually firing. The setup banner at top flags this case so you know to fix the GA4 configuration.
How the funnel is built
Five session-level stages:
- Sessions — every inbound session in the window
- Engaged sessions — GA4's
engagedSessionsmetric (10s+ engaged, 2+ pageviews, or any key event) - Multi-page sessions — sessions with
screenPageViews ≥ 2 - Reached a conversion surface — sessions that viewed a path matching
/contact,/signup,/demo,/aura, or/talk-to-sales(heuristic; tweak in code) - Fired a key event — sessions where any active conversion event count > 0
How the Sankey is built
Three queries, stitched:
- Hop 1 → 2:
dims=[landingPagePlusQueryString, pagePath]witheventName IN (active events). Gives "for converting sessions starting at landing X, which mid-pages were visited?" - Hop 2 → 3:
dims=[pagePath, eventName]with the same event filter. Gives "for converting sessions, the event fired on which page?" - Stitching: top-8 landings × top-10 mids per landing × the event firings on those mids, weighted by event count.
The "mid page" is a representative interior page, not a strict sequence position — GA4 doesn't give us ordering via the API. Read it as "pages that frequently co-occur in converting sessions starting here."
Filters applied
This dashboard is a metrics dashboard, so the suite-wide geo block (🌍) and bot filter (🤖) apply. Excluding problem-traffic countries and bot-flavoured sessions tightens conversion attribution. Both filters are in the header.