Conversion funnels

Build multi-step funnels from pageviews and custom events to measure drop-off and conversion rate.

Funnels show how visitors move through a sequence of steps — e.g. landing → pricing → signup — and where they drop off.

Create a funnel

  1. Open your site dashboard.
  2. In the Funnels card, click + Create funnel.
  3. Name the funnel (e.g. "Signup flow"), or pick one of the suggested funnels built from your own pages and goals.
  4. Add 2–8 steps, each either:
    • Page visit — a URL rule (see URL matching below)
    • Goal — exact event name (e.g. signup)
  5. Optionally give each step a name like 👋 Visit landing page. Named steps show up on the dashboard chart and in the funnel picker instead of the raw path.
  6. Open Advanced to change the conversion window (default 7 days) and whether a conversion is counted per session or per visitor (see When to use visitor vs session).

The right-hand preview shows the funnel as you build it, and each step reports whether it matches any recorded page — useful for catching typos like /login when the real path is /auth/sign-in. Bar widths in the preview are illustrative; real drop-off appears on the dashboard once you save.

URL matching

A page-visit step matches on the request path:

OperatorMatchesExample
isThe path exactlyis /pricing matches /pricing only
containsThe path anywherecontains /blog matches /blog/post-1 and /de/blog/x
starts withThe beginning of the pathstarts with /blog matches /blog/post-1, not /de/blog/x

Matching is case-sensitive and query strings are not part of the stored path.

A visitor who hits several pages matching the same step is still counted once at that step — starts with /blog counts a session that read three blog posts as one entrant, not three.

If your site serves more than one hostname, page-visit steps also offer a Hostname picker so you can separate app.example.com from www.example.com. Leave it on Any hostname to match both.

Edit a funnel

  1. Select the funnel in the Funnels card dropdown.
  2. Click Edit.
  3. Change the name, steps, window, or scope and save.

Editing recomputes the funnel against existing events for the selected date range — no historical pageview or custom-event data is deleted. Steps are evaluated at query time, so fixing a typo or loosening a rule immediately corrects past drop-off numbers.

Delete a funnel

  1. Open your site dashboard and select the funnel in the Funnels card dropdown.
  2. Click Delete and confirm.

Deleting a funnel removes its definition only — it does not delete underlying pageview or custom-event data.

When to use visitor vs session

ScopeCounts a conversion when…Best for
SessionThe same browser session completes every step inside the windowSame-visit flows (landing → pricing → checkout)
VisitorThe same visitor hash completes every step inside the windowFlows that span email hops or return visits

Magic-link / email auth: after the user leaves to open email and comes back, they often start a new session. Any step after an auth page (/login, /auth/sign-in, /welcome, etc.) will under-report under session scope. Prefer visitor scope for those funnels (the builder hints when it detects an auth-like path).

Cookieless sites (default): visitor hashes rotate roughly once per UTC day. A visitor-scoped funnel with a window longer than ~24 hours usually cannot complete across days — use session scope or shorten the window. See GDPR & cookieless tracking.

Example: SaaS signup

StepNameTypeRule
1👋 Visit landing pagePage visitis /
2💵 See pricingPage visitis /pricing
3✍️ Sign upGoalsignup

Install the signup event first — see Custom goals.

Example: content to conversion

StepNameTypeRule
1📚 Read the blogPage visitstarts with /blog
2👋 Visit landing pagePage visitis /
3💰 PayGoalpayment

Step 1 covers every article at once, so you measure whether content readers convert without building one funnel per post.

How analytics work

XPmetric uses ClickHouse windowFunnel over your stored events. Funnels analyze all history in the selected date range — steps you add today still evaluate past data if matching events exist.

Funnel counts come from the same events stream as pageviews (your tracking script). Dedicated bot / AI crawler hits recorded by the bot tracker are stored separately and are not included in funnel steps. Residual bots that execute JavaScript and send pageviews can still appear — the same as elsewhere in the dashboard.

If step 1 has traffic but every later step is zero and at least one step has no matching events in the range, the chart shows a warning (Check funnel setup) instead of a confident accent 0% — usually a wrong path or event name.

Limits

  • Max 10 funnels per site
  • 2–8 steps per funnel
  • Step names are cosmetic and capped at 80 characters
  • Goal steps require window.xpmetric('event_name') on the completion action