> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Retention metrics

> Track whether users come back to your app or website over time with the Retention chart in OneSignal. Build a cohort from users active on a chosen date and measure their return rate.

Use the **Retention** chart on the OneSignal dashboard to see what percentage of your users came back on the days after they were active.

<Note>
  Retention is in Beta and will be available to all accounts soon.
</Note>

Navigate to **Dashboard > Analytics > Retention** to view the chart.

## How the cohort works

Start by picking a date. Everyone who had a session that day becomes your cohort, and that group stays fixed for the rest of the window, even if their Subscriptions change afterward.

The date you picked is Day 0, so the curve starts at 100% as long as anyone was active that day. Every point after it is the share of that same cohort who came back on that day. Each day is measured on its own, so someone who goes quiet for a day and returns later still counts on the day they return.

A user counts as active on any day they had at least one session.

A session begins each time a user opens your app or website from a fully closed state, or reopens it after being in the background for at least 30 seconds. Returning within 30 seconds continues the current session instead of starting a new one.

Retention counts every session, whether or not a message gets credit for it. See [Sessions](./sessions) to learn more about how OneSignal tracks sessions.

Retention counts **users**, not Subscriptions. Someone who uses your app on a phone and a laptop counts once.

## Chart metrics

The chart plots three values for the cohort you select.

| Metric             | Description                                                                                                                                                                                       |
| :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Cohort size**    | The number of users with a session on the cohort start date. This is the Day 0 population.                                                                                                        |
| **Day N**          | The number of users from the cohort with a session on that day.                                                                                                                                   |
| **Retention rate** | Cohort members active on a given day divided by cohort size, as a percentage. Day 0 is 100% for any cohort with users in it, because the cohort is defined as the users who were active that day. |

## Filters

Use the controls above the chart to pick a cohort and choose how far forward to measure.

| Control               | Options                                                                  |
| :-------------------- | :----------------------------------------------------------------------- |
| **Cohort start date** | A single date, from the earliest available date through yesterday (UTC). |
| **Window**            | 7, 14, or 30 days measured forward from the cohort start date.           |
| **Compare by**        | None, Channel, or Platform.                                              |

Channel series reflect the channels a user is subscribed to on the cohort start date, not the channel a session came from. The series overlap and do not add up to the total, so a user subscribed to both push and email appears in the push series and in the email series. Users with no subscribed channels appear in their own series.

OneSignal fixes the cohort on the cohort start date. A user who subscribes to a new channel or adds a device later in the window does not join the cohort retroactively.

## Data availability

Keep these limits in mind when you pick a cohort start date.

* Retention data is available from **July 24, 2026**. You cannot select an earlier cohort start date.
* Retention is not backfilled, so cohorts before that date are not available.
* Days are UTC calendar days and are the same for every app.
* The most recent cohort start date you can pick is yesterday (UTC), because a day has to finish before it counts.
* The curve ends at the last complete day rather than continuing at 0%. A window that is still in progress shows a shorter line.
* A window of N days covers Day 0 through Day N, so a 7-day window plots 8 points.

## Export chart data

Export the chart to CSV using the export button at the top right. The file contains the retention rate for each day in the window. Exporting requires a plan that includes CSV report export.

## FAQ

### Does retention show message opens and clicks?

No. Retention only shows whether users came back to your app, and it counts every session whether or not a message gets credit for it. For delivery, open, click, and unsubscribe rates, use [Engagement trends](./engagement-analytics). To connect specific messages to what users did next, use [Conversion metrics](./conversion-metrics).

### Why is my retention chart flat at 0%?

No users had a session on the date you selected, so the cohort is empty and every day in the window divides by a cohort of zero. Try a more recent date, or one you know had activity. Retention data begins on July 24, 2026 and is not backfilled, so the earliest cohorts you can build start on that date.

### Why does the line stop before the end of the window?

Retention only counts complete days. If you pick a cohort start date five days ago with a 30-day window, the last complete day is Day 4, so the chart plots five points (Day 0 through Day 4) and the line ends there. It is not a forecast, and the remaining days fill in as each day completes.

### Why is Day 0 100%?

The cohort is defined as the users who had a session on the cohort start date, so all of them were active by definition on Day 0.

The exception is a cohort with no users. If nobody was active on the date you picked, cohort size is 0 and the chart plots a flat 0% line across the whole window rather than starting at 100%.

### If a user skips a day, are they excluded from later days?

No. OneSignal counts each day independently. Take a user who is active on Day 0, inactive on Day 2, then active again on Day 3. That user does not count on Day 2, because they had no session that day. They count again on Day 3.

### Why don't the channel series add up to the total?

A user can be subscribed to more than one channel, and each channel series counts every user subscribed to that channel. Someone subscribed to push and email counts in both series, so the series overlap by design.

### What timezone are the days measured in?

UTC. Day boundaries are the same for every app and cannot be set per app.

### Why do I see sessions elsewhere in the dashboard but no retention data?

Retention data only started being tracked on July 24, 2026. Sessions from before that date appear in other reports, but they were never recorded for retention, so any cohort starting before July 24, 2026 is empty. See [Sessions](./sessions) for where else session data appears.

## Related

<Columns cols={2}>
  <Card title="Interpreting retention curves" icon="chart-line" href="./interpreting-retention-curves">
    Read curve shapes, compare cohorts, and understand the methodology behind the chart.
  </Card>

  <Card title="Sessions" icon="mobile" href="./sessions">
    How OneSignal defines a session and aggregates session data across a user's devices.
  </Card>

  <Card title="Subscription trends" icon="chart-bar" href="./subscription-trends">
    Track how your subscribed audience grows and declines by channel.
  </Card>

  <Card title="Metrics glossary" icon="book" href="./analytics-metrics-glossary">
    Canonical definitions for every metric across the dashboard, API, CSV, and Event Streams.
  </Card>
</Columns>
