Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Retention Analysis | s1
Product Analytics for Beginners

Retention Analysis

Deslize para mostrar o menu

Retention analysis is one of the most important tools for understanding how well your product keeps users engaged over time. Imagine you run a fitness app and want to know if new signups actually stick around. N-Day retention and unbounded retention are two key ways to measure this.

N-Day retention tells you the percentage of users who come back on a specific day after their signup. For instance, Day 7 retention answers: out of all users who signed up on a given day, how many returned exactly 7 days later? You can think of it like a reunion - how many people show up to the party a week after joining?

Unbounded retention is broader. Instead of asking if users came back on a specific day, it asks if they returned on or after a certain day. So, Day 7 unbounded retention is the percentage of users who came back at any point on or after the 7th day. This is like asking: who ever came back to the party after a week, no matter when?

Both metrics help you spot trends in user loyalty and product health.

1234567891011121314151617181920212223242526
import pandas as pd # Sample user activity data data = { "user_id": [1, 1, 2, 2, 3, 4, 5, 5, 5], "activity_day": [0, 7, 0, 1, 0, 1, 0, 7, 30] } df = pd.DataFrame(data) def n_day_retention(df, day): signups = df[df["activity_day"] == 0]["user_id"].unique() returning = df[df["activity_day"] == day]["user_id"].unique() retained = set(signups) & set(returning) return len(retained) / len(signups) * 100 def unbounded_retention(df, day): signups = df[df["activity_day"] == 0]["user_id"].unique() returning = df[df["activity_day"] >= day]["user_id"].unique() retained = set(signups) & set(returning) return len(retained) / len(signups) * 100 print(f"Day 1 N-Day Retention: {n_day_retention(df, 1):.1f}%") print(f"Day 7 N-Day Retention: {n_day_retention(df, 7):.1f}%") print(f"Day 7 Unbounded Retention: {unbounded_retention(df, 7):.1f}%") print(f"Day 30 N-Day Retention: {n_day_retention(df, 30):.1f}%")
Note
Definition

N-Day retention measures the percentage of users who return on a specific day after signup.

When you calculate retention, you start by identifying your user cohort - usually, everyone who signed up on the same day. Then, you check how many of those users came back on a specific day (N-Day retention) or at any point after (unbounded retention). For example, if you see that Day 7 N-Day retention drops sharply but unbounded retention is higher, it means users are returning, but not always on a predictable schedule.

Interpreting these numbers helps you make product decisions:

  • High Day 1 retention means your onboarding is strong;
  • High Day 30 retention means users find long-term value;
  • If retention is low, you might need to improve your onboarding, notifications, or core features;
  • Tracking these metrics over time shows whether changes you make are helping users stick around.

Both N-Day and unbounded retention reveal how well your product keeps users engaged and where you can improve.

1. What does retention measure in product analytics?

2. Fill in the blank:

question mark

What does retention measure in product analytics?

Selecione a resposta correta

question-icon

Fill in the blank:

Unbounded retention tracks users who return at  point after signup.
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 1. Capítulo 5
some-alt