# CauseWise conversion funnels

A funnel is an ordered sequence you configure, such as a pricing page visit, then `signup_started`, then `signup_completed`. It is separate from Journeys. Journeys are path sequences CauseWise builds automatically from pageviews. Funnels count only the steps you define.

## Steps

Each step is either:

- a **page visit**, which matches automatic `pageview` events for a path such as `/pricing` or `/checkout/*`
- a **custom event**, which matches only what your site sends with `window.causewise.track()`

Optional property conditions use the same equality rules as goals. Every condition must match.

A funnel needs at least two steps. Order is the order you save. Repeating an event does not create another entry for the same visitor.

## How a visitor progresses

CauseWise groups events by the anonymous visitor id the tracking script stores in the browser.

1. The visitor enters when their earliest step-1 event in the selected reporting period matches.
2. The conversion window starts at that event. Later steps can happen in other sessions, until the window ends.
3. Each following step must be a different, later event. Events are ordered by time, then by event id when the time is the same. An earlier event cannot satisfy a later step.
4. The visitor is counted once, even if they repeat the funnel.

Someone who completes step 1 but not step 2 is a drop-off. Step counts never grow from one step to the next, because each step is a subset of the visitors who reached the previous step.

Overall conversion is completions divided by visitors who entered. Median time is the middle elapsed time from step 1 to the final step, among visitors who finished.

## What is not counted

Events with no visitor id cannot be ordered, so they are left out. The browser script sets this id in local storage. A new browser, cleared site data, or another device looks like a different visitor, so one person can appear as more than one entry.

An inactive funnel is stored but not counted.

The reporting period limits who enters. Plan retention limits how far back that period can start. A later step can fall after the period ends when it is still inside that visitor’s conversion window.

## Verify a step

Each step shows the expected event, path, and property conditions, whether a matching event arrived in the selected period, and the latest match. Page visits do not need an extra `track()` call. Custom events include a copyable example. Verification does not write a test conversion.

## Empty states

- **No tracking data** means the site has not sent any events.
- **No visitors entered** means events exist, but nobody matched step 1 in the period.
- **Visitors entered but did not finish** means step 1 happened and the final step did not.
