# Reading a funnel: right censoring and date ranges

> Right censoring (users who haven't had time to convert yet), date ranges and other ways a funnel conversion rate misleads.

- Course: [Product Analytics: From Data to Decisions](https://productovi.com/courses/product-analytics.md)
- Module: Where do new users get stuck?
- Lesson 10/32, ~31 min
- Source: https://productovi.com/courses/product-analytics/reading-funnels

## A record week for the all-hands

**Alex Tutor:** Maya is excited about a record week at Halves and wants the team's data person, you, to confirm it. First you'll meet right censoring, the trap behind most funnel “records”.

**Maya:** For Friday's all-hands: in week 3, 20–26 July, **83%** of new users have added a first expense. That's the week we tried the “split your first dinner” push. I want it on a slide, and the push sent every week.

**Alex Tutor:** When was the data pulled?

**Maya:** This morning, 31 August. Why?

**Alex Tutor:** Because week 3 has had almost six weeks to do it. Look at the other end first. Here's every sign-up from 6 July to 30 August, one row per user; step columns are days after sign-up, empty means not yet.

**Dataset (CSV):** [Halves new users, 6 July – 30 August 2026](https://productovi.com/datasets/product-analytics/reading-funnels/halves-new-users-jul-aug.csv)

192 sign-ups in eight weekly cohorts of 24, data pulled on 31 August. Staff accounts excluded.

- `user_id`: User id
- `signup_date`: Sign-up date (UTC); day 0
- `platform`: ios or android
- `channel`: invite (joined someone's group), app_store_search or paid_social
- `group_created_day`: Day after sign-up the user created their first group; invitees never do
- `member_invited_day`: Day the user sent their first invite
- `invite_accepted_day`: Day someone first accepted the user's invite
- `first_expense_day`: Day of the user's first expense
- `expenses_week1`: Expenses the user added on days 0–6; empty if week 1 isn't over
- `active_week4`: Opened the app on days 21–27 (true/false); filled only for sign-ups 6 July – 2 August

**Sofia:** The newest week, then: sign-ups from 24 to 30 August with any `first_expense_day` so far.

> **Exercise:** Sign-ups from 24 to 30 August: what share has **any** `first_expense_day` in the data so far? In %, one decimal.

## What is right censoring?

**Alex Tutor:** 29.2%, and nothing broke. That's **right censoring**: for recent users the timeline is cut off on the right, so we don't know yet what they'll do. Such **censored data** isn't a zero: their rate looks low today and will climb over the coming days.

![A row of seedlings planted on different days: the oldest are tall, the newest barely sprouted, and a gardener measures them all.](https://productovi.com/courses/product-analytics/inline/reading-funnels-illustration-2.webp)

*The newest week hasn't had time to grow yet; that isn't failure.*

**Alex Tutor:** Maya's 83% is the mirror image. Week 3 has had six weeks; within its first 7 days it was 54.2%, the same as weeks 2 and 6, and below week 7. A “so far” rate rewards old cohorts just for being old.

**First expense by sign-up week: “so far” vs within 7 days**

| Sign-up week (1 = 6–12 July, 8 = 24–30 August) | First expense so far | First expense within 7 days |
| --- | --- | --- |
| 1 | 66.7 | 37.5 |
| 2 | 58.3 | 54.2 |
| 3 | 83.3 | 54.2 |
| 4 | 62.5 | 45.8 |
| 5 | 58.3 | 41.7 |
| 6 | 62.5 | 54.2 |
| 7 | 70.8 | 58.3 |
| 8 | 29.2 |  |

*Week 8's 7-day value is missing: its window isn't over. “So far” mixes cohorts that had eight weeks with one that had days.*

**Sofia:** So: a fixed window for everyone, and only cohorts that have lived through the whole window.

**Alex Tutor:** Exactly. Take a 7-day window: first expense on days 0–6. Anyone who signed up by 23 August has had it in full, so weeks 1–7 are complete. Week 8 isn't.

> **Exercise:** Take only the **complete** cohorts (sign-ups 6 July – 23 August). What share added a first expense **within 7 days** (`first_expense_day` from 0 to 6)? In %, one decimal.

**Maya:** So my record week isn't a record. And the newest week on the chart, do I hide it?

**Alex Tutor:** Either leave it off until its window closes on 6 September, or show it greyed out and labeled “incomplete”. What you mustn't do is average it in with the finished weeks.

**Theo:** Why not? More users in the average means a more precise number.

> **Exercise:** Theo averages all eight weeks, including the unfinished last one, and gets 46.9% within 7 days. **True or false:** this is a better estimate than the 49.4% from the seven complete weeks, because it's based on more users.

## A date range is not a cohort

**Theo:** My monthly report does it differently: 67 first expenses in August, 103 sign-ups in August. That's **65%**. Much better than your weekly numbers!

**Alex Tutor:** Check who's in the 67. Some of those first expenses came from people who signed up in late July. They're in the numerator but not in the denominator.

**Alex Tutor:** The rule for funnels: the date range picks who **enters**. Then you follow those same people through their window, whatever date their steps fall on.

**Alex Tutor:** Before you rebuild it, name exactly what's wrong with Theo's 65%.

> **Exercise:** Theo divides first expenses **dated** in August (67) by sign-ups in August (103) and gets 65%. What is the main problem?

![People with matching wristbands pass a gate, and a guide follows the same group down the path, ignoring others who join from the side.](https://productovi.com/courses/product-analytics/inline/reading-funnels-illustration-3.webp)

*The date range picks who enters; then you follow those same people.*

**Sofia:** So for August: people who signed up in August, but only up to the 23rd, so everyone has had 7 days.

> **Exercise:** Build Theo's August number the funnel way: users who **signed up** from 1 to 23 August, and the share of them with a first expense within 7 days. In %, one decimal.

## So, the push: cohorts on the same 7-day window

**Alex Tutor:** Start with the baseline the push has to beat: all four July sign-up weeks, 6 July to 2 August, on the 7-day window.

> **Exercise:** Users who signed up from 6 July to 2 August (weeks 1–4): what share added a first expense within 7 days (`first_expense_day` from 0 to 6)? In %, one decimal.

**Alex Tutor:** Now compare like with like, 7 days for everyone. Week 3: 13 of 24, 54.2%. Weeks 2 and 6 had no push and got the same; week 7 did better, 58.3%. All four July weeks together: 46 of 96, 47.9%.

**Alex Tutor:** And weekly cohorts of 24 jump around by chance: weeks 1 to 7 range from 37.5% to 58.3%. With groups this small, look at the interval, not the point; the maths is in our [confidence intervals](/courses/statistics-for-pm-and-marketers/confidence-intervals) lesson.

![A row of identical small boats bobbing at different heights on choppy water.](https://productovi.com/courses/product-analytics/inline/reading-funnels-illustration-4.webp)

*Small weekly groups jump around by chance; read the pattern, not one week.*

**Maya:** So what goes on my slide about the push?

> **Exercise:** In week 3 (sign-ups 20–26 July) Halves sent new users a “split your first dinner” push. What can Maya honestly put on the slide about it?

**Alex Tutor:** No slide, then. But Maya still wants to know whether the push works. Which plan answers that?

> **Exercise:** Which plan would tell Maya whether the “split your first dinner” push helps?

**Maya:** Fine, no slide. But the chart goes to the whole team on Monday. Write the note under it, so nobody celebrates or panics over the wrong week.

**Sofia:** A short one: what the number means, which weeks are complete, and why “so far” flatters old weeks and punishes the newest.

**Alex Tutor:** And the window, stated in days. The note is the definition people will actually read.

> **Exercise:** Write the 2–4 sentence note that goes under Maya's weekly onboarding chart, so nobody misreads the oldest or the newest week again.

> **Key ideas**
>
> - **Right censoring:** recent users haven't had the full window, so their conversion looks low (last week: 29.2% so far vs 49.4% for complete cohorts). Wait, grey it out, or leave it out; never average it in.
> - “Ever” rates grow with cohort age (week 3: 83.3% so far, 54.2% within 7 days). Compare cohorts only with a fixed conversion window (here 7 days) and only when the window is complete.
> - **The date range picks who enters.** Follow those users through their window. “Events in August ÷ sign-ups in August” mixes different people (65.0% vs the correct 49.4%).
> - Small cohorts swing by chance; compare intervals, not points.
> - Put the window and the completeness rule in the chart note.

**Alex Tutor:** The newest week always looks like a disaster and the old ones like triumphs. Put them on the same window and both stories usually disappear.

- Previous lesson: [Funnels: conversion window, step order and who counts](https://productovi.com/courses/product-analytics/funnels.md)
- Next lesson: [Activation: finding the aha moment](https://productovi.com/courses/product-analytics/activation.md)

---
Productovi Learning. Free, no sign-up needed to read.
