# Funnels: where users drop off

> Count how many users complete a series of steps in order, see where the others leave, and open the exact users who left.

> **In short**
>
> - A funnel counts users, not events, through a series of steps in order.
> - Each step is a filter on one event, usually on **Event Name**, **Event Type** or **URL**.
> - Each step shows two percentages: of the previous step, and from step 1.
> - Select a drop to see who left there.
> - Saved funnels belong to the project. Everyone in the project sees them.

## What it is for

Use a funnel when you know the path that users must take, and you want to see where they leave it. For example: does checkout lose more people at payment or at confirmation?

## How it works

Each step is a filter on the fields and properties of one event. The usual fields are **Event Name**, **Event Type** and **URL**.

Sequential sorts each user's matching events in the date range by time. A user enters at their first step-1 event. The user reaches step 2 at the first step-2 event after it. Each later step works the same way: the user reaches it only at an event after the event that reached the step before it. The steps can be in different sessions.

- A user who skipped a step reaches no later step. So a step never has more users than the step before it, and the last step counts the people who did every step in order.
- An event can count for any step that it matches. But each step needs a later event than the event that reached the step before it, so one event never counts for two steps. For example, with the steps "any event" → `purchase`, a later `purchase` event reaches step 2.
- From 9 October 2026, a funnel whose steps can match the same event shows higher numbers after step 1, and these numbers are correct. Before that date, each event counted only toward the first step that it matched. Examples of such funnels: a first step that matches every event, two steps that share a property, or the same event name at two steps. Step 1 does not change. A funnel whose steps never match the same event does not change.
- The agent tool `funnel_analysis` uses the same rule.
- The date range is the only time limit. There is no "within 7 days" setting.

## Build a funnel

1. In the left rail, open **Explore** and click **Funnels**.
2. Set the dates in the bar at the top.
3. In **Funnel steps**, press **+ Add step**.
4. Rename **Step 1**.
5. Press **+ Condition**.
6. Pick a **Field** and a **Value**.
7. Add the other steps in the same way.
8. Press **Run**. The steps card closes and the result shows. To change the steps, press **Edit steps** at the top.

From 15 October 2026, when you change the dates and press **Apply**, the funnel runs again. The old result stays, dimmed, until the new one is ready. A line under the dates says "Updated" and how long ago. If the new run fails, the page says "Couldn't run the funnel again. The result below is from" and the time of the old result.

## Read the results

At the top, one line gives the share of step 1 who did every step, such as "36.5% finish all 4 steps · 1,140 of 3,120 people".

The chart has one bar for each step. The part of a bar that dropped is hatched. Between two bars, the chart shows the share of the previous step that went on. With more than 8 steps, and on a narrow screen, the bars lie on their side.

The steps table has these columns:

| Column | What it shows |
|---|---|
| **Step** | The step's number and name |
| **Reached** | The people who reached the step |
| **Of previous** | The share of the previous step's people |
| **From start** | The share of step 1's people |
| **Dropped** | The people who reached the previous step but not this one. Click it to open the drop |
| **Average time from previous step** | The mean time from the previous step, for the people who went on, such as "2 h 5 m" |

Under the table, a line counts the people who did every step, such as "1,140 people did every step", with **View users** and **View events**.

## See who dropped

Each new result selects the largest drop: the one where the most people left. A tie goes to the earlier step. To select another drop, click its **Dropped** number, or its part of the chart.

The panel **Why people dropped here** shows:

- the two steps, such as "Step 2 → 3 · Pricing → Sign-up"
- how many people left, such as "240 people left", and their share of the people who reached the step
- **Who**: the first 4 people, by name or as "Visitor" and the start of an id, the person who left last first. **Show all** lists them 50 at a time, with **Previous 50** and **Next 50**. With more than 1,000 people, the button reads **Show the latest 1,000**, and the list says "From the latest 1,000 of" and the number of people who left. Click a person to open their page
- **View events of these people**: **Events** for those people. It lists their 100 most recent events

From 15 October 2026, the panel also shows:

- **Findings on this step**: the findings in the sessions where these people left, in the last 7 days. Each card has the finding's number, such as F-37, its kind, its title and a line such as "In 12 of the 40 sessions where they left (last 7 days)". Click the title to open the finding. With none, the panel says "No findings in these sessions in the last 7 days." If Sequential cannot read them, it says "Could not load the findings."
- **Median time on step before leaving**: for example "5 m 12 s (from 18 sessions)". Less than one second reads "< 1 s". With no session to measure, it reads "Unknown".
- **Sessions to watch**: **Watch N sessions that left** opens a list. N counts the sessions that you can play now. Sessions with findings come first. Each row shows the person, its findings, such as "F-37 · F-41", "No findings" or "Findings unknown", and **▶ Watch from m:ss**, which opens the replay at that moment. A session that you cannot play shows why, with **Open events**. When you can play none of them, the panel says "None of these sessions has a recording you can play now." and offers **Show the N sessions**.

The panel reads these once for each run and drop. A new run with the same drop selected starts again on the first page of **Who** and closes the list of sessions. If the read fails, the panel says "Could not load the details for this drop." and still shows **Who**.

Press **×** or Esc to close the panel.

From 14 October 2026, **View users**, **View events**, **View events of these people** and a person under **Who** pass the people and the funnel's steps and dates inside your browser tab, never in the page address. So the link works in this tab for one hour, and Back and a reload keep it. After an hour, in another tab, or from an older link, the page says "This funnel view has expired. Open it again from Funnels." Then click the button again on **Funnels**.

> **The drill-down pages keep their own dates**
>
> - **Users** (from **View users**) and a person's page keep their own date range. If the funnel covered other dates, set the range that the banner shows on **Users**. If the **Sessions** card of a person's page says "No sessions in these dates.", widen the range to the funnel's dates.
> - **View events** uses the funnel's dates, and it shows the events of the **To** day too.

## Save a funnel

1. Press **Save**, at the top of the page.
2. Enter a **Funnel name**.
3. Press **Save funnel**.

To use a saved funnel, click it under **Saved funnels:**, then press **Run**. The page title shows the funnel's name. After you change a step, the title adds "(edited)".

- Saved funnels belong to the project. Everyone in the project sees them, in every browser.
- Owners, admins and members can rename and delete any saved funnel. Viewers can only use them.
- A saved funnel keeps its steps but not its dates. It runs on the dates in the bar.

See [Filters, date ranges and saved views](/docs/filters-and-saved-views).

## Use a saved filter as a step

1. In **Funnel steps**, click **+ Step from saved view**, next to **+ Add step**.
2. Pick a saved filter. Greyed-out filters show why you cannot use them.
3. Press **Run**.

To put a saved filter into a step that you already have, click **Replace with saved view** on that step.

The step is a copy. Change it as you like: the saved filter does not change. If the saved filter changes later, the funnel does not change. The step shows **From saved view:** and the name of the filter. To copy the current conditions of the filter again, click **Update from view**. See [Use a saved filter as a funnel or flow step](/docs/filters-and-saved-views#use-a-saved-filter-as-a-funnel-or-flow-step).

## Start from a replay

Start from **Seed funnel** on an event in a replay. Then add or change steps and press **Run**.

## What it needs

Funnels work with events from any supported SDK. Every role can use them, viewers included.

- **Without identify, one person can be several users.** Drop-off lists then hold anonymous ids, not your customers.
- **Two values for one person are two users.** Your app must keep the value consistent. See [Identify your users](/docs/identify-users).

> **A funnel across sign-up counts one person once**
>
> With the Sequential SDK, PostHog or Mixpanel, a funnel counts a visitor who identifies during the date range as one person. The steps before and after identify join. This also applies when the visitor identifies after the date range, so the result for a past period can change. A new link can take up to 5 minutes to apply. With Amplitude, Pendo or Smartlook, nothing links the two ids, so keep a funnel on one side of identify. See [Users and identity](/docs/users-and-identity).

## Limits

- Events with no user id are not a user. They never enter a funnel, and no drop-off list shows them.
- Field conditions are exact matches. Property conditions have a type and an operator, such as **contains** or **>**.
- If a run takes longer than 30 seconds, it stops with **Something went wrong**. Shorten the date range and run it again.
- A step with no conditions matches every event. Every step after it then stays at 0.
- A **URL** step cannot tell pages apart if your app routes by query string, because Sequential does not keep query values. In an app that routes by `#/…`, it can for events from 9 October 2026, because Sequential keeps the route from that date.
- A step can test an event property with **Event Property**. For example, `checkout_completed` with `plan` **is** `pro`, or with `amount` **>** `100`.

### The step fields

Each step is a filter from the same builder as the rest of Sequential. The usual fields are:

- **Event Name**: the name that your SDK sends, such as your custom `checkout_completed`.
- **Event Type**: the [event class](/docs/events), such as `form_submit`.
- **URL**.

### Dates and values in the builder

- The first time, the range is the last 10 days, including today. It uses whole UTC days. After that, the page opens on the range that you last applied or ran here for this project, in this browser.
- **Value** suggests values that your project has sent. For **Event Type**, these are class names such as `form_submit`.

### Start from a replay: the steps

- **From a replay.** In the player's **Events** tab, open an event with **›**. Press **Seed funnel**. Funnels opens with one step that matches that event.

See [Find and replay sessions](/docs/sessions-and-replay).

### Bar lines, Dropped and percentages

**Dropped** on a step counts the people who reached the step before it but not this step.

For example, steps 1 to 3 have 200, 120 and 60 people. Step 3 shows 50% **Of previous** and 30% **From start**.

From 15 October 2026, **Of previous** is the step-to-step rate. Before, every percentage was a share of step 1.

### Why custom events give better steps

Autocaptured events give broad steps. For example, **Event Type** = `click` matches any click on any page. A custom event for each milestone, such as `checkout_completed`, gives each step one clear **Event Name**. See [Send custom events](/docs/custom-events).

### Step matching examples

The order applies to every step. A step-3 event before the user reached step 2 does not count.

Other events between two steps do not matter.

A step with no conditions, or with only empty conditions, matches every event. Every step after it then stays at 0.

| Step 1 | Step 2 | Result |
|---|---|---|
| **Event Type** = `pageview` | **Event Type** = `pageview` AND **URL** = your pricing page | Every pricing page view counts for step 1. Step 2 stays at 0. |
| **Event Type** = `pageview` | **URL** = your pricing page | Step 2 counts only the other events of that page, such as clicks. It never counts the page view. |

### Conditions and an example funnel

Sequential joins the conditions in a step with **All of**. To change that, pick another operator, or add an **+ Any-of group** or a **+ None-of group**.

All the conditions in a step test one event. So a step cannot combine an **Event Name** from one event with a **URL** from another event.

- To reorder the steps, use **↑** and **↓**.
- To remove a step, press **×**. A message such as "Removed Step 2." shows with **Undo** for at least 10 seconds. **Undo** puts the step back in its place.
- To check one step, press **?** (**Explain step filter**).
- To check the whole funnel, open **More ▾** and choose **Explain…**. **Copy prompt for your agent…** gives a prompt with the result, for your coding agent.

This is a trial funnel built on custom events:

| # | Step | Condition |
|---|---|---|
| 1 | Trial started | **Event Name** = `trial_started` |
| 2 | Project created | **Event Name** = `project_created` |
| 3 | Teammate invited | **Event Name** = `teammate_invited` |

A funnel answers questions like these:

- Of the people who started a trial this month, how many created a project? How many of those invited a teammate?
- Which users started onboarding and did not finish, and what did they do instead?

### Step-to-step rates and time to convert

From step 2 on, **Average time from previous step** is the mean time from the previous step. It uses only the people who went from that step to this step. It reads like "45 s", "12 m 5 s", "2 h 5 m" or "3 d 4 h", or "< 1 s". A dash means that Sequential does not know it.

**Of previous** is never more than 100%.

### What the drill-down pages mark

- **View users** and **View events** show the same people that the funnel counted. With the Sequential SDK, PostHog or Mixpanel, this includes their events from before identify.
- **View events** uses the funnel's dates, including the whole **To** day.
- From the drop panel, **View events of these people** marks the events that match the step each person last reached.
- A person under **Who** opens the person's page. Their two most recent sessions are expanded, and the events that match their last step are highlighted.
- On a person's page, a session with a recording has a ▶ button (**Play session replay**).
- For the people who did every step, **View events** lists the events without marks.

### Saved funnel behaviour

- Saved funnels appear under **Saved funnels:** and on **Dashboard**. Click a saved funnel to load its steps.
- **Saved funnels:** is between the date bar and **Funnel steps**.
- When you load a saved funnel, the old result stays until you press **Run**.
- Hover over a saved funnel to see who changed it last, and when. For example: "Apply funnel: Signup — updated by Ana, 2 h ago".
- To rename a saved funnel, press ✎. To delete it, press **×**. Sequential deletes it for everyone in the project. Viewers do not see these buttons.
- Each project has its own saved funnels.
- A saved funnel keeps its steps but not its dates.
- You cannot change the steps of a saved funnel. Save a new funnel, then delete the old one.

### What carries over from a replay

- The step from **Seed funnel** matches the **Event Name** of the event. If the event has no name, the step matches its **Event Type**.
- The dates from **Seed funnel** go from the day before the event to the day after it.
- **Seed funnel** appears on events that your analytics SDK sent. It does not appear on events that Sequential took from the recording.

### How Sequential matches users

Sequential matches steps per person. It uses the value that your app passes to identify, exactly as it is. Events sent before identify carry an anonymous id, and events after identify carry the id that you pass.

With the Sequential SDK, PostHog or Mixpanel, identify also sends a link to the anonymous id. The funnel uses the link, so the steps before and after identify belong to one person. The link is one step. See [Users and identity](/docs/users-and-identity).

Example: a funnel has the steps Viewed pricing → Started sign-up → Created project. Your app calls identify when it creates the account.

- With the Sequential SDK, PostHog or Mixpanel, each new sign-up counts through all three steps.
- With Amplitude, Pendo or Smartlook, new sign-ups seem to drop off after step 2. Steps 1 and 2 belong to the anonymous id. Step 3 belongs to an id that never did step 1.

Another device, a private window or cleared storage gives a new anonymous id. So without identify, one person can be several users.

### URL steps and event properties

- A **URL** step must match the whole stored address.
- Sequential does not store the part of the address after `#`, except a hash route such as `#/orders`, from 9 October 2026.
- Sequential stores query values as `[redacted]`, except campaign and ad-click parameters. See [What Sequential keeps from page URLs](/docs/url-policy).
- So a **URL** step cannot tell pages apart in an app that routes by query string, or by `#/…` for events before 9 October 2026.
- To separate outcomes by a number or a range, use **Event Property** with the type **Number**, for example **is between**.
- **Visitor Property** tests visitor properties. PostHog and the Sequential SDK do not send them.

## Related

- [Flows](/docs/flows)
- [Retention](/docs/retention)
- [Filters, date ranges and saved views](/docs/filters-and-saved-views)
- [Explore events](/docs/events-explorer)
- [Users and accounts](/docs/users-and-accounts)
- [Users and identity](/docs/users-and-identity)
- [Identify your users](/docs/identify-users)
- [Send custom events](/docs/custom-events)
- [Roles and permissions](/docs/roles-and-permissions)
