# Funnel analysis: how to build a conversion funnel and find where users drop off

> A practical guide to funnel analysis: define the funnel, read step conversions, split the weakest step and size the fix, with a worked example.

- Source: https://productovi.com/blog/funnel-analysis
- By: Sergey Bruh
- Published: 2026-09-30
- Topics: Funnels

Funnel analysis measures how many users get through each step of a path, such as sign-up → first project → first purchase, and shows where the biggest share of them stops. **You define who enters, the steps, their order and a time window; count the users who reach each step; divide each step by the one before; then split the weakest step to find whose drop it is.** The arithmetic takes minutes. The definition is where most funnel reports go wrong, so this guide starts there and then walks through a full example on an onboarding funnel.

## What a funnel is (and isn't)

A [funnel](/glossary/pa-funnel) is a sequence of steps and the share of users who reach each one. It is a metric like any other, which means it only means something with its definition next to it. Four choices change the result:

1. **Who enters.** Only users for whom every step applies. People who joined through a friend's invite land in an existing group and never create one; count them in a funnel with a "create a group" step and they look like drop-offs. In one example from the course, excluding them moves group creation from 58.3% to 87.5% on the same data.
2. **The steps.** Events that users actually do, in the order you believe matters.
3. **The order rule.** Strict order counts a step only if it happens after the previous one; any order counts it whenever it happens. Strict order is stricter, and if many users take another path, it will call them failures.
4. **The conversion window.** How long a user has to complete the steps, measured from entering. A 24-hour window and a 7-day window give different numbers, and both are correct.

Write these four choices under every funnel chart. Otherwise two people will build "the onboarding funnel" and get 37% and 62% from the same data.

## Worked example: the Halves onboarding funnel

Halves is a made-up app for splitting shared bills between flatmates, couples and friends on trips. The product lead wants to know where new users get stuck before they split their first bill. The funnel:

- **Who enters:** self-signups (not invitees) from four complete weekly cohorts, 1,000 users.
- **Steps:** sign-up → group created → member invited → invite accepted → first shared expense.
- **Order:** strict; each step after the one before.
- **Window:** 7 days from sign-up, and only cohorts that have had all 7 days.

| Step                 | Users | Step conversion | From sign-up |
| -------------------- | ----- | --------------- | ------------ |
| Signed up            | 1,000 |                 | 100.0%       |
| Group created        | 820   | 82.0%           | 82.0%        |
| Member invited       | 590   | 72.0%           | 59.0%        |
| Invite accepted      | 330   | 55.9%           | 33.0%        |
| First shared expense | 280   | 84.8%           | 28.0%        |

### Step conversions, not just the overall rate

The overall rate is $280 / 1{,}000 = 28.0\%$. It tells you the funnel leaks but not where. **Step conversion** divides each step by the previous one: $820 / 1{,}000 = 82.0\%$, $590 / 820 = 72.0\%$, $330 / 590 = 55.9\%$ and $280 / 330 = 84.8\%$.

The weakest step is "invite accepted": only 55.9% of users who sent an invitation had it accepted within the window. That is where to look first. Note that the column "from sign-up" can't show this: it always falls, so the biggest absolute drop in it is not necessarily the weakest step.

### Split the weakest step

A drop is always somebody's drop. Split the funnel by a dimension that could explain it: platform, acquisition channel, country, app version. Here, by channel:

| Channel      | Entered | Group | Invited | Accepted | First expense |
| ------------ | ------- | ----- | ------- | -------- | ------------- |
| Store search | 600     | 500   | 400     | 230      | 196           |
| Paid social  | 400     | 320   | 190     | 100      | 84            |

Step conversions:

| Channel      | Group | Invited | Accepted | First expense | Overall |
| ------------ | ----- | ------- | -------- | ------------- | ------- |
| Store search | 83.3% | 80.0%   | 57.5%    | 85.2%         | 32.7%   |
| Paid social  | 80.0% | 59.4%   | 52.6%    | 84.0%         | 21.0%   |

Two different findings come out of one table:

- **Acceptance is weak for everyone** (57.5% and 52.6%). The friend who receives the invitation doesn't care which ad brought the inviter, so this is a product problem: the invite message, the link, what the friend sees when they open it.
- **Inviting is weak for paid social** (59.4% against 80.0%). People who came from an ad create a group almost as often, but fewer of them invite anyone. Perhaps they installed the app to try it alone.

### Is the difference real?

With a few hundred users per segment, check before you conclude. The 95% Wilson intervals:

- Acceptance: store search 52.6–62.3%, paid social 45.6–59.6%. The intervals overlap a lot, so there is no evidence the channels differ on this step.
- Inviting: store search 76.3–83.3%, paid social 53.9–64.6%. No overlap: this gap is very unlikely to be chance.

Why Wilson and how to compare two rates properly is covered in [confidence intervals explained](/blog/confidence-intervals-explained).

### Size the prize before choosing a fix

The team can fix one thing this sprint. Instead of fixing the biggest drop by reflex, estimate what each fix would add at the bottom of the funnel, holding later steps at their current rates:

- **Acceptance from 55.9% to 65%:** $590 \times 0.65 = 383.5$ accepted, 53.5 more, and at 84.8% about **45 more first expenses**.
- **Paid social inviting at store search's 80%:** $320 \times 0.80 = 256$ inviters, 66 more; $66 \times 0.559 \times 0.848 \approx$ **31 more**.
- **Group creation from 82% to 88%:** 60 more groups; $60 \times 0.720 \times 0.559 \times 0.848 \approx$ **20 more**.

The targets are assumptions, so treat the result as a ranking, not a forecast. It still settles the argument: a better group-creation screen, often the first thing teams want to redesign, is worth less than half of a better invitation.

![Invite acceptance is the weakest step at 55.9%; raising it to 65% adds about 45 first expenses, more than fixing paid-social inviting (31) or group creation (20)](/blog/funnel-analysis/diagram.png)

## Two traps in reading funnels over time

A funnel chart by week or month has two traps of its own.

**Right censoring.** Users who signed up yesterday have had one day, not seven. Their conversion looks low now and will rise. In one course example, the latest week showed 29.2% "so far" against 49.4% for complete cohorts, and the team nearly rolled back a release because of it. Show only cohorts whose window has closed, or grey out the incomplete one.

**Date ranges that mix people.** "First expenses in August ÷ sign-ups in August" puts late-July users in the numerator and not the denominator. The date range should pick who **enters**; then follow those same people through their window.

## From funnel to activation

A funnel shows where people stop. It doesn't say which step matters for whether they stay. For that, compare later retention of users who reached a step with those who didn't: the step that separates them best is a candidate for your [activation](/glossary/pa-activation) criterion. That is the subject of [activation rate](/blog/activation-rate), and the retention side is covered in [how to calculate retention rate](/blog/how-to-calculate-retention-rate).

## Key takeaways

- Funnel analysis starts with a written definition: who enters, the steps, the order rule and the window.
- Read step conversions; the overall rate tells you there is a leak, not where.
- Split the weakest step by platform, channel or version; a drop that's the same everywhere is a product problem.
- Check small segments with intervals before acting on a gap.
- Size each possible fix at the bottom of the funnel before choosing one.
- Leave out cohorts whose window hasn't closed, and let the date range pick who enters.

## FAQ

### What is funnel analysis?

It is measuring the share of users who complete each step of a defined path, such as onboarding or checkout, to find where they drop off and which fix would help most.

### What is a good funnel conversion rate?

There is no universal benchmark: it depends on the steps, the window and who enters. Compare your funnel with itself over time and across segments, using the same definition.

### Should I use strict order or any order?

Use strict order when the sequence is what you want to test, for example "invited before adding an expense". If many users complete the steps in a different order, look at their path before calling them failures.

### How long should the conversion window be?

Long enough for a normal user to finish at the product's pace, short enough to get an answer in time. For a first-week onboarding funnel, 7 days is a common choice. Whatever you pick, write it on the chart.

## Learn it hands-on

The free lesson [Funnels: order, window and who counts](/courses/product-analytics/funnels/theory) lets you build a funnel on twelve Halves users and watch the result change with each choice. Then [Reading a funnel without fooling yourself](/courses/product-analytics/reading-funnels/theory) covers censoring and date ranges, and the [onboarding funnel case](/courses/product-analytics/onboarding-funnel/theory) asks you to write the recommendation. All three are part of the free course [Product Analytics: From Data to Decisions](/courses/product-analytics).

## Related lessons

- [Funnels: conversion window, step order and who counts](https://productovi.com/courses/product-analytics/funnels.md)
- [Reading a funnel: right censoring and date ranges](https://productovi.com/courses/product-analytics/reading-funnels.md)
- [Case: fix the onboarding funnel](https://productovi.com/courses/product-analytics/onboarding-funnel.md)
