Cohort analysis examples
with mobile app event data.
Three labeled event logs, the cohort table each one produces and how every cell is counted.
How every example is counted
- A cohort is the devices whose first_open falls in the same calendar week (Monday start, UTC here). get_cohorts also groups by day or month and takes a time zone.
- Column N is the Nth calendar week after the install week. Week 0 is the install week itself.
- The week in progress is counted through now and drawn with a dotted outline. Weeks that have not happened stay blank.
- Retention counts a cohort device with an SDK event in exactly that week. First open, attribution and billing events are excluded.
Every device, user and timestamp is synthetic. The numbers come from the same cohort engine as the dashboard, as described in the agent API docs.
Weekly retention cohort analysis example
Synthetic data Four weekly install cohorts of 10 devices each. Retention is the share of a cohort's devices that sent an SDK event in each calendar week after install. Grouped by install week (Monday start, UTC). Counted through Oct 5, 09:00 UTC.
Retention by install week
| Cohort | Installs | Week 0 | Week 1 | Week 2 | Week 3 | Week 4 |
|---|---|---|---|---|---|---|
| Week of Sep 7 | 10 | 60% | 50% | 40% | 30% | 20% |
| Week of Sep 14 | 10 | 70% | 50% | 40% | 20% | |
| Week of Sep 21 | 10 | 70% | 60% | 30% | ||
| Week of Sep 28 | 10 | 80% | 40% |
- Week 0 is the install week. A device counts there only if it sent an SDK event other than first_open, so 6 of the 10 devices installed in the week of Sep 7 count at week 0.
- Each cell counts devices active in that one week. It is not a running total and not a rolling window.
- Read down Week 1 for the three cohorts with a complete week 1: 50%, 50% and 60%.
- The dotted cells are the week of Oct 5, counted through 09:00 UTC on Oct 5. Nine hours of activity sits below the full weeks before it. Blank cells are weeks that have not happened.
Event log (106 events)
| Time (UTC) | Device | User | Event | Props |
|---|---|---|---|---|
| 09-07 08:00 | d_a01 | u_a01 | first_open | |
| 09-07 08:30 | d_a02 | u_a02 | first_open | |
| 09-07 09:00 | d_a03 | u_a03 | first_open | |
| 09-07 09:30 | d_a04 | u_a04 | first_open | |
| 09-07 10:00 | d_a05 | u_a05 | first_open | |
| 09-07 10:30 | d_a06 | u_a06 | first_open | |
| 09-07 11:00 | d_a07 | u_a07 | first_open | |
| 09-07 11:30 | d_a08 | u_a08 | first_open | |
| 09-07 12:00 | d_a09 | u_a09 | first_open | |
| 09-07 12:30 | d_a10 | u_a10 | first_open | |
| 09-10 10:00 | d_a01 | u_a01 | app_open | |
| 09-10 10:01 | d_a02 | u_a02 | workout_logged | {"type":"run"} |
| 09-10 10:02 | d_a03 | u_a03 | app_open | |
| 09-10 10:03 | d_a04 | u_a04 | workout_logged | {"type":"run"} |
| 09-10 10:04 | d_a05 | u_a05 | app_open | |
| 09-10 10:05 | d_a06 | u_a06 | workout_logged | {"type":"run"} |
| 09-14 08:00 | d_a11 | u_a11 | first_open | |
| 09-14 08:30 | d_a12 | u_a12 | first_open | |
| 09-14 09:00 | d_a13 | u_a13 | first_open | |
| 09-14 09:30 | d_a14 | u_a14 | first_open | |
| 09-14 10:00 | d_a15 | u_a15 | first_open | |
| 09-14 10:30 | d_a16 | u_a16 | first_open | |
| 09-14 11:00 | d_a17 | u_a17 | first_open | |
| 09-14 11:30 | d_a18 | u_a18 | first_open | |
| 09-14 12:00 | d_a19 | u_a19 | first_open | |
| 09-14 12:30 | d_a20 | u_a20 | first_open | |
| 09-17 10:00 | d_a01 | u_a01 | app_open | |
| 09-17 10:00 | d_a11 | u_a11 | app_open | |
| 09-17 10:01 | d_a02 | u_a02 | workout_logged | {"type":"run"} |
| 09-17 10:01 | d_a12 | u_a12 | workout_logged | {"type":"run"} |
| 09-17 10:02 | d_a03 | u_a03 | app_open | |
| 09-17 10:02 | d_a13 | u_a13 | app_open | |
| 09-17 10:03 | d_a04 | u_a04 | workout_logged | {"type":"run"} |
| 09-17 10:03 | d_a14 | u_a14 | workout_logged | {"type":"run"} |
| 09-17 10:04 | d_a05 | u_a05 | app_open | |
| 09-17 10:04 | d_a15 | u_a15 | app_open | |
| 09-17 10:05 | d_a16 | u_a16 | workout_logged | {"type":"run"} |
| 09-17 10:06 | d_a17 | u_a17 | app_open | |
| 09-21 08:00 | d_a21 | u_a21 | first_open | |
| 09-21 08:30 | d_a22 | u_a22 | first_open | |
| 09-21 09:00 | d_a23 | u_a23 | first_open | |
| 09-21 09:30 | d_a24 | u_a24 | first_open | |
| 09-21 10:00 | d_a25 | u_a25 | first_open | |
| 09-21 10:30 | d_a26 | u_a26 | first_open | |
| 09-21 11:00 | d_a27 | u_a27 | first_open | |
| 09-21 11:30 | d_a28 | u_a28 | first_open | |
| 09-21 12:00 | d_a29 | u_a29 | first_open | |
| 09-21 12:30 | d_a30 | u_a30 | first_open | |
| 09-24 10:00 | d_a01 | u_a01 | app_open | |
| 09-24 10:00 | d_a11 | u_a11 | app_open | |
| 09-24 10:00 | d_a21 | u_a21 | app_open | |
| 09-24 10:01 | d_a02 | u_a02 | workout_logged | {"type":"run"} |
| 09-24 10:01 | d_a12 | u_a12 | workout_logged | {"type":"run"} |
| 09-24 10:01 | d_a22 | u_a22 | workout_logged | {"type":"run"} |
| 09-24 10:02 | d_a03 | u_a03 | app_open | |
| 09-24 10:02 | d_a13 | u_a13 | app_open | |
| 09-24 10:02 | d_a23 | u_a23 | app_open | |
| 09-24 10:03 | d_a04 | u_a04 | workout_logged | {"type":"run"} |
| 09-24 10:03 | d_a14 | u_a14 | workout_logged | {"type":"run"} |
| 09-24 10:03 | d_a24 | u_a24 | workout_logged | {"type":"run"} |
| 09-24 10:04 | d_a15 | u_a15 | app_open | |
| 09-24 10:04 | d_a25 | u_a25 | app_open | |
| 09-24 10:05 | d_a26 | u_a26 | workout_logged | {"type":"run"} |
| 09-24 10:06 | d_a27 | u_a27 | app_open | |
| 09-28 08:00 | d_a31 | u_a31 | first_open | |
| 09-28 08:30 | d_a32 | u_a32 | first_open | |
| 09-28 09:00 | d_a33 | u_a33 | first_open | |
| 09-28 09:30 | d_a34 | u_a34 | first_open | |
| 09-28 10:00 | d_a35 | u_a35 | first_open | |
| 09-28 10:30 | d_a36 | u_a36 | first_open | |
| 09-28 11:00 | d_a37 | u_a37 | first_open | |
| 09-28 11:30 | d_a38 | u_a38 | first_open | |
| 09-28 12:00 | d_a39 | u_a39 | first_open | |
| 09-28 12:30 | d_a40 | u_a40 | first_open | |
| 10-01 10:00 | d_a01 | u_a01 | app_open | |
| 10-01 10:00 | d_a11 | u_a11 | app_open | |
| 10-01 10:00 | d_a21 | u_a21 | app_open | |
| 10-01 10:00 | d_a31 | u_a31 | app_open | |
| 10-01 10:01 | d_a02 | u_a02 | workout_logged | {"type":"run"} |
| 10-01 10:01 | d_a12 | u_a12 | workout_logged | {"type":"run"} |
| 10-01 10:01 | d_a22 | u_a22 | workout_logged | {"type":"run"} |
| 10-01 10:01 | d_a32 | u_a32 | workout_logged | {"type":"run"} |
| 10-01 10:02 | d_a03 | u_a03 | app_open | |
| 10-01 10:02 | d_a13 | u_a13 | app_open | |
| 10-01 10:02 | d_a23 | u_a23 | app_open | |
| 10-01 10:02 | d_a33 | u_a33 | app_open | |
| 10-01 10:03 | d_a14 | u_a14 | workout_logged | {"type":"run"} |
| 10-01 10:03 | d_a24 | u_a24 | workout_logged | {"type":"run"} |
| 10-01 10:03 | d_a34 | u_a34 | workout_logged | {"type":"run"} |
| 10-01 10:04 | d_a25 | u_a25 | app_open | |
| 10-01 10:04 | d_a35 | u_a35 | app_open | |
| 10-01 10:05 | d_a26 | u_a26 | workout_logged | {"type":"run"} |
| 10-01 10:05 | d_a36 | u_a36 | workout_logged | {"type":"run"} |
| 10-01 10:06 | d_a37 | u_a37 | app_open | |
| 10-01 10:07 | d_a38 | u_a38 | workout_logged | {"type":"run"} |
| 10-05 06:00 | d_a01 | u_a01 | app_open | |
| 10-05 06:00 | d_a11 | u_a11 | app_open | |
| 10-05 06:00 | d_a21 | u_a21 | app_open | |
| 10-05 06:00 | d_a31 | u_a31 | app_open | |
| 10-05 06:20 | d_a02 | u_a02 | workout_logged | {"type":"run"} |
| 10-05 06:20 | d_a12 | u_a12 | workout_logged | {"type":"run"} |
| 10-05 06:20 | d_a22 | u_a22 | workout_logged | {"type":"run"} |
| 10-05 06:20 | d_a32 | u_a32 | workout_logged | {"type":"run"} |
| 10-05 06:40 | d_a23 | u_a23 | app_open | |
| 10-05 06:40 | d_a33 | u_a33 | app_open | |
| 10-05 07:00 | d_a34 | u_a34 | workout_logged | {"type":"run"} |
Get this table for your app: get_cohorts in the agent API docs, after the quickstart setup.
Onboarding and paywall cohort analysis example
Synthetic data Four weekly install cohorts of 20 devices. A fictional shorter onboarding ships between the second and third cohort. Grouped by install week (Monday start, UTC). Both tables count cumulatively. Counted through Oct 5, 09:00 UTC.
Onboarding completed, as a share of installs
| Cohort | Installs | Week 0 | Week 1 | Week 2 | Week 3 | Week 4 |
|---|---|---|---|---|---|---|
| Week of Sep 7 | 20 | 40% | 50% | 55% | 55% | 55% |
| Week of Sep 14 | 20 | 35% | 50% | 55% | 60% | |
| Week of Sep 21 | 20 | 75% | 85% | 90% | ||
| Week of Sep 28 | 20 | 80% | 90% |
Purchased after paywall, as a share of installs that saw the paywall
| Cohort | Installs | Week 0 | Week 1 | Week 2 | Week 3 | Week 4 |
|---|---|---|---|---|---|---|
| Week of Sep 7 | 20 | 25% | 30% | 27.3% | 27.3% | 27.3% |
| Week of Sep 14 | 20 | 28.6% | 20% | 27.3% | 25% | |
| Week of Sep 21 | 20 | 33.3% | 41.2% | 44.4% | ||
| Week of Sep 28 | 20 | 37.5% | 38.9% |
- Onboarding is cumulative. A device that finishes in week 1 counts in week 1 and in every later column. Week 0 completion is 40% and 35% before the change and 75% and 80% after it.
- Paywall conversion divides purchases by the installs that saw the paywall, not by all installs. In the Sep 7 cohort, 2 purchases over the 8 installs that saw it in week 0 is 25%. Over all 20 installs it would be 10%.
- Read the paywall table next to the onboarding table. More installs reach the paywall after the change: 15 and 16 of 20 in week 0, against 8 and 7.
- A purchase counts only when the same device sent paywall_shown first.
Event log (219 events)
| Time (UTC) | Device | User | Event | Props |
|---|---|---|---|---|
| 09-07 00:10 | d_b01 | u_b01 | first_open | |
| 09-07 00:20 | d_b02 | u_b02 | first_open | |
| 09-07 00:30 | d_b03 | u_b03 | first_open | |
| 09-07 00:40 | d_b04 | u_b04 | first_open | |
| 09-07 00:50 | d_b05 | u_b05 | first_open | |
| 09-07 01:00 | d_b06 | u_b06 | first_open | |
| 09-07 01:10 | d_b07 | u_b07 | first_open | |
| 09-07 01:20 | d_b08 | u_b08 | first_open | |
| 09-07 01:30 | d_b09 | u_b09 | first_open | |
| 09-07 01:40 | d_b10 | u_b10 | first_open | |
| 09-07 01:50 | d_b11 | u_b11 | first_open | |
| 09-07 02:00 | d_b12 | u_b12 | first_open | |
| 09-07 02:10 | d_b13 | u_b13 | first_open | |
| 09-07 02:20 | d_b14 | u_b14 | first_open | |
| 09-07 02:30 | d_b15 | u_b15 | first_open | |
| 09-07 02:40 | d_b16 | u_b16 | first_open | |
| 09-07 02:50 | d_b17 | u_b17 | first_open | |
| 09-07 03:00 | d_b18 | u_b18 | first_open | |
| 09-07 03:10 | d_b19 | u_b19 | first_open | |
| 09-07 03:20 | d_b20 | u_b20 | first_open | |
| 09-08 10:00 | d_b01 | u_b01 | onboarding_completed | |
| 09-08 10:01 | d_b02 | u_b02 | onboarding_completed | |
| 09-08 10:02 | d_b03 | u_b03 | onboarding_completed | |
| 09-08 10:03 | d_b04 | u_b04 | onboarding_completed | |
| 09-08 10:04 | d_b05 | u_b05 | onboarding_completed | |
| 09-08 10:05 | d_b06 | u_b06 | onboarding_completed | |
| 09-08 10:06 | d_b07 | u_b07 | onboarding_completed | |
| 09-08 10:07 | d_b08 | u_b08 | onboarding_completed | |
| 09-08 12:00 | d_b01 | u_b01 | paywall_shown | {"placement":"onboarding"} |
| 09-08 12:01 | d_b02 | u_b02 | paywall_shown | {"placement":"onboarding"} |
| 09-08 12:02 | d_b03 | u_b03 | paywall_shown | {"placement":"onboarding"} |
| 09-08 12:03 | d_b04 | u_b04 | paywall_shown | {"placement":"onboarding"} |
| 09-08 12:04 | d_b05 | u_b05 | paywall_shown | {"placement":"onboarding"} |
| 09-08 12:05 | d_b06 | u_b06 | paywall_shown | {"placement":"onboarding"} |
| 09-08 12:06 | d_b07 | u_b07 | paywall_shown | {"placement":"onboarding"} |
| 09-08 12:07 | d_b08 | u_b08 | paywall_shown | {"placement":"onboarding"} |
| 09-09 12:00 | d_b01 | u_b01 | paywall_purchased | {"plan":"monthly"} |
| 09-09 12:01 | d_b02 | u_b02 | paywall_purchased | {"plan":"monthly"} |
| 09-14 00:10 | d_b21 | u_b21 | first_open | |
| 09-14 00:20 | d_b22 | u_b22 | first_open | |
| 09-14 00:30 | d_b23 | u_b23 | first_open | |
| 09-14 00:40 | d_b24 | u_b24 | first_open | |
| 09-14 00:50 | d_b25 | u_b25 | first_open | |
| 09-14 01:00 | d_b26 | u_b26 | first_open | |
| 09-14 01:10 | d_b27 | u_b27 | first_open | |
| 09-14 01:20 | d_b28 | u_b28 | first_open | |
| 09-14 01:30 | d_b29 | u_b29 | first_open | |
| 09-14 01:40 | d_b30 | u_b30 | first_open | |
| 09-14 01:50 | d_b31 | u_b31 | first_open | |
| 09-14 02:00 | d_b32 | u_b32 | first_open | |
| 09-14 02:10 | d_b33 | u_b33 | first_open | |
| 09-14 02:20 | d_b34 | u_b34 | first_open | |
| 09-14 02:30 | d_b35 | u_b35 | first_open | |
| 09-14 02:40 | d_b36 | u_b36 | first_open | |
| 09-14 02:50 | d_b37 | u_b37 | first_open | |
| 09-14 03:00 | d_b38 | u_b38 | first_open | |
| 09-14 03:10 | d_b39 | u_b39 | first_open | |
| 09-14 03:20 | d_b40 | u_b40 | first_open | |
| 09-15 10:00 | d_b21 | u_b21 | onboarding_completed | |
| 09-15 10:01 | d_b22 | u_b22 | onboarding_completed | |
| 09-15 10:02 | d_b23 | u_b23 | onboarding_completed | |
| 09-15 10:03 | d_b24 | u_b24 | onboarding_completed | |
| 09-15 10:04 | d_b25 | u_b25 | onboarding_completed | |
| 09-15 10:05 | d_b26 | u_b26 | onboarding_completed | |
| 09-15 10:06 | d_b27 | u_b27 | onboarding_completed | |
| 09-15 10:08 | d_b09 | u_b09 | onboarding_completed | |
| 09-15 10:09 | d_b10 | u_b10 | onboarding_completed | |
| 09-15 12:00 | d_b21 | u_b21 | paywall_shown | {"placement":"onboarding"} |
| 09-15 12:01 | d_b22 | u_b22 | paywall_shown | {"placement":"onboarding"} |
| 09-15 12:02 | d_b23 | u_b23 | paywall_shown | {"placement":"onboarding"} |
| 09-15 12:03 | d_b24 | u_b24 | paywall_shown | {"placement":"onboarding"} |
| 09-15 12:04 | d_b25 | u_b25 | paywall_shown | {"placement":"onboarding"} |
| 09-15 12:05 | d_b26 | u_b26 | paywall_shown | {"placement":"onboarding"} |
| 09-15 12:06 | d_b27 | u_b27 | paywall_shown | {"placement":"onboarding"} |
| 09-15 12:08 | d_b09 | u_b09 | paywall_shown | {"placement":"onboarding"} |
| 09-15 12:09 | d_b10 | u_b10 | paywall_shown | {"placement":"onboarding"} |
| 09-16 12:00 | d_b21 | u_b21 | paywall_purchased | {"plan":"monthly"} |
| 09-16 12:01 | d_b22 | u_b22 | paywall_purchased | {"plan":"monthly"} |
| 09-16 12:02 | d_b03 | u_b03 | paywall_purchased | {"plan":"monthly"} |
| 09-21 00:10 | d_b41 | u_b41 | first_open | |
| 09-21 00:20 | d_b42 | u_b42 | first_open | |
| 09-21 00:30 | d_b43 | u_b43 | first_open | |
| 09-21 00:40 | d_b44 | u_b44 | first_open | |
| 09-21 00:50 | d_b45 | u_b45 | first_open | |
| 09-21 01:00 | d_b46 | u_b46 | first_open | |
| 09-21 01:10 | d_b47 | u_b47 | first_open | |
| 09-21 01:20 | d_b48 | u_b48 | first_open | |
| 09-21 01:30 | d_b49 | u_b49 | first_open | |
| 09-21 01:40 | d_b50 | u_b50 | first_open | |
| 09-21 01:50 | d_b51 | u_b51 | first_open | |
| 09-21 02:00 | d_b52 | u_b52 | first_open | |
| 09-21 02:10 | d_b53 | u_b53 | first_open | |
| 09-21 02:20 | d_b54 | u_b54 | first_open | |
| 09-21 02:30 | d_b55 | u_b55 | first_open | |
| 09-21 02:40 | d_b56 | u_b56 | first_open | |
| 09-21 02:50 | d_b57 | u_b57 | first_open | |
| 09-21 03:00 | d_b58 | u_b58 | first_open | |
| 09-21 03:10 | d_b59 | u_b59 | first_open | |
| 09-21 03:20 | d_b60 | u_b60 | first_open | |
| 09-22 10:00 | d_b41 | u_b41 | onboarding_completed | |
| 09-22 10:01 | d_b42 | u_b42 | onboarding_completed | |
| 09-22 10:02 | d_b43 | u_b43 | onboarding_completed | |
| 09-22 10:03 | d_b44 | u_b44 | onboarding_completed | |
| 09-22 10:04 | d_b45 | u_b45 | onboarding_completed | |
| 09-22 10:05 | d_b46 | u_b46 | onboarding_completed | |
| 09-22 10:06 | d_b47 | u_b47 | onboarding_completed | |
| 09-22 10:07 | d_b28 | u_b28 | onboarding_completed | |
| 09-22 10:07 | d_b48 | u_b48 | onboarding_completed | |
| 09-22 10:08 | d_b29 | u_b29 | onboarding_completed | |
| 09-22 10:08 | d_b49 | u_b49 | onboarding_completed | |
| 09-22 10:09 | d_b30 | u_b30 | onboarding_completed | |
| 09-22 10:09 | d_b50 | u_b50 | onboarding_completed | |
| 09-22 10:10 | d_b11 | u_b11 | onboarding_completed | |
| 09-22 10:10 | d_b51 | u_b51 | onboarding_completed | |
| 09-22 10:11 | d_b52 | u_b52 | onboarding_completed | |
| 09-22 10:12 | d_b53 | u_b53 | onboarding_completed | |
| 09-22 10:13 | d_b54 | u_b54 | onboarding_completed | |
| 09-22 10:14 | d_b55 | u_b55 | onboarding_completed | |
| 09-22 12:00 | d_b41 | u_b41 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:01 | d_b42 | u_b42 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:02 | d_b43 | u_b43 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:03 | d_b44 | u_b44 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:04 | d_b45 | u_b45 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:05 | d_b46 | u_b46 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:06 | d_b47 | u_b47 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:07 | d_b28 | u_b28 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:07 | d_b48 | u_b48 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:08 | d_b29 | u_b29 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:08 | d_b49 | u_b49 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:09 | d_b30 | u_b30 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:09 | d_b50 | u_b50 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:10 | d_b11 | u_b11 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:10 | d_b51 | u_b51 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:11 | d_b52 | u_b52 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:12 | d_b53 | u_b53 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:13 | d_b54 | u_b54 | paywall_shown | {"placement":"onboarding"} |
| 09-22 12:14 | d_b55 | u_b55 | paywall_shown | {"placement":"onboarding"} |
| 09-23 12:00 | d_b41 | u_b41 | paywall_purchased | {"plan":"monthly"} |
| 09-23 12:01 | d_b42 | u_b42 | paywall_purchased | {"plan":"monthly"} |
| 09-23 12:02 | d_b43 | u_b43 | paywall_purchased | {"plan":"monthly"} |
| 09-23 12:03 | d_b44 | u_b44 | paywall_purchased | {"plan":"monthly"} |
| 09-23 12:04 | d_b45 | u_b45 | paywall_purchased | {"plan":"monthly"} |
| 09-28 00:10 | d_b61 | u_b61 | first_open | |
| 09-28 00:20 | d_b62 | u_b62 | first_open | |
| 09-28 00:30 | d_b63 | u_b63 | first_open | |
| 09-28 00:40 | d_b64 | u_b64 | first_open | |
| 09-28 00:50 | d_b65 | u_b65 | first_open | |
| 09-28 01:00 | d_b66 | u_b66 | first_open | |
| 09-28 01:10 | d_b67 | u_b67 | first_open | |
| 09-28 01:20 | d_b68 | u_b68 | first_open | |
| 09-28 01:30 | d_b69 | u_b69 | first_open | |
| 09-28 01:40 | d_b70 | u_b70 | first_open | |
| 09-28 01:50 | d_b71 | u_b71 | first_open | |
| 09-28 02:00 | d_b72 | u_b72 | first_open | |
| 09-28 02:10 | d_b73 | u_b73 | first_open | |
| 09-28 02:20 | d_b74 | u_b74 | first_open | |
| 09-28 02:30 | d_b75 | u_b75 | first_open | |
| 09-28 02:40 | d_b76 | u_b76 | first_open | |
| 09-28 02:50 | d_b77 | u_b77 | first_open | |
| 09-28 03:00 | d_b78 | u_b78 | first_open | |
| 09-28 03:10 | d_b79 | u_b79 | first_open | |
| 09-28 03:20 | d_b80 | u_b80 | first_open | |
| 09-29 10:00 | d_b61 | u_b61 | onboarding_completed | |
| 09-29 10:01 | d_b62 | u_b62 | onboarding_completed | |
| 09-29 10:02 | d_b63 | u_b63 | onboarding_completed | |
| 09-29 10:03 | d_b64 | u_b64 | onboarding_completed | |
| 09-29 10:04 | d_b65 | u_b65 | onboarding_completed | |
| 09-29 10:05 | d_b66 | u_b66 | onboarding_completed | |
| 09-29 10:06 | d_b67 | u_b67 | onboarding_completed | |
| 09-29 10:07 | d_b68 | u_b68 | onboarding_completed | |
| 09-29 10:08 | d_b69 | u_b69 | onboarding_completed | |
| 09-29 10:09 | d_b70 | u_b70 | onboarding_completed | |
| 09-29 10:10 | d_b31 | u_b31 | onboarding_completed | |
| 09-29 10:10 | d_b71 | u_b71 | onboarding_completed | |
| 09-29 10:11 | d_b72 | u_b72 | onboarding_completed | |
| 09-29 10:12 | d_b73 | u_b73 | onboarding_completed | |
| 09-29 10:13 | d_b74 | u_b74 | onboarding_completed | |
| 09-29 10:14 | d_b75 | u_b75 | onboarding_completed | |
| 09-29 10:15 | d_b56 | u_b56 | onboarding_completed | |
| 09-29 10:15 | d_b76 | u_b76 | onboarding_completed | |
| 09-29 10:16 | d_b57 | u_b57 | onboarding_completed | |
| 09-29 12:00 | d_b61 | u_b61 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:01 | d_b62 | u_b62 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:02 | d_b63 | u_b63 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:03 | d_b64 | u_b64 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:04 | d_b65 | u_b65 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:05 | d_b66 | u_b66 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:06 | d_b67 | u_b67 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:07 | d_b68 | u_b68 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:08 | d_b69 | u_b69 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:09 | d_b70 | u_b70 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:10 | d_b31 | u_b31 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:10 | d_b71 | u_b71 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:11 | d_b72 | u_b72 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:12 | d_b73 | u_b73 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:13 | d_b74 | u_b74 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:14 | d_b75 | u_b75 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:15 | d_b56 | u_b56 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:15 | d_b76 | u_b76 | paywall_shown | {"placement":"onboarding"} |
| 09-29 12:16 | d_b57 | u_b57 | paywall_shown | {"placement":"onboarding"} |
| 09-30 12:00 | d_b61 | u_b61 | paywall_purchased | {"plan":"monthly"} |
| 09-30 12:01 | d_b62 | u_b62 | paywall_purchased | {"plan":"monthly"} |
| 09-30 12:02 | d_b63 | u_b63 | paywall_purchased | {"plan":"monthly"} |
| 09-30 12:03 | d_b64 | u_b64 | paywall_purchased | {"plan":"monthly"} |
| 09-30 12:04 | d_b65 | u_b65 | paywall_purchased | {"plan":"monthly"} |
| 09-30 12:05 | d_b46 | u_b46 | paywall_purchased | {"plan":"monthly"} |
| 09-30 12:05 | d_b66 | u_b66 | paywall_purchased | {"plan":"monthly"} |
| 09-30 12:10 | d_b31 | u_b31 | paywall_purchased | {"plan":"monthly"} |
| 09-30 12:15 | d_b56 | u_b56 | paywall_purchased | {"plan":"monthly"} |
| 10-05 06:11 | d_b32 | u_b32 | onboarding_completed | |
| 10-05 06:16 | d_b77 | u_b77 | onboarding_completed | |
| 10-05 06:17 | d_b58 | u_b58 | onboarding_completed | |
| 10-05 06:17 | d_b78 | u_b78 | onboarding_completed | |
| 10-05 06:31 | d_b32 | u_b32 | paywall_shown | {"placement":"onboarding"} |
| 10-05 06:36 | d_b77 | u_b77 | paywall_shown | {"placement":"onboarding"} |
| 10-05 06:37 | d_b58 | u_b58 | paywall_shown | {"placement":"onboarding"} |
| 10-05 06:37 | d_b78 | u_b78 | paywall_shown | {"placement":"onboarding"} |
| 10-05 06:56 | d_b77 | u_b77 | paywall_purchased | {"plan":"monthly"} |
| 10-05 06:57 | d_b58 | u_b58 | paywall_purchased | {"plan":"monthly"} |
Get this table for your app: get_cohorts in the agent API docs, after the quickstart setup.
Trial conversion cohort analysis example
Synthetic data Three weekly install cohorts of 10 devices with a 3-day trial that converts to $8.00 a month. Some devices start their trial a week after installing. Trial conversion is grouped by the week the trial started. ARPU is grouped by install week and counts gross USD from the cohort's own installs. Counted through Oct 5, 09:00 UTC.
Trial conversion, grouped by trial start week
| Cohort | Trials | Week 0 | Week 1 | Week 2 | Week 3 | Week 4 |
|---|---|---|---|---|---|---|
| Week of Sep 7 | 5 | 40% | 60% | 60% | 60% | 60% |
| Week of Sep 14 | 8 | 50% | 62.5% | 62.5% | 62.5% | |
| Week of Sep 21 | 5 | 60% | 80% | 80% |
ARPU, grouped by install week
| Cohort | Installs | Week 0 | Week 1 | Week 2 | Week 3 | Week 4 |
|---|---|---|---|---|---|---|
| Week of Sep 7 | 10 | $1.60 | $3.20 | $3.20 | $3.20 | $3.20 |
| Week of Sep 14 | 10 | $2.40 | $4.00 | $4.00 | $4.00 | |
| Week of Sep 21 | 10 | $1.60 | $2.40 | $2.40 |
- A trial conversion cell is converted trials divided by trials that started in the row's week. The Sep 7 row has 2 of 5 converted in week 0 and 3 of 5 by week 1, because the trial d_c07 started on Sunday ends the next week.
- The Sep 14 row has 8 trials. Six come from installs of that week and two, d_c05 and d_c06, from installs of the week of Sep 7, so the denominator includes older installs.
- d_c05 converts on Sep 18, which counts in the Sep 14 trial row. Its $8.00 goes to the Sep 7 install row at week 1, because ARPU follows the install.
- ARPU is cumulative gross revenue divided by installs, before refunds and store fees. The Sep 7 cohort is $3.20: four $8.00 conversions across 10 installs.
Event log (60 events)
| Time (UTC) | Device | User | Event | Props |
|---|---|---|---|---|
| 09-07 08:00 | d_c01 | u_c01 | first_open | |
| 09-07 08:10 | d_c02 | u_c02 | first_open | |
| 09-07 08:20 | d_c03 | u_c03 | first_open | |
| 09-07 08:30 | d_c04 | u_c04 | first_open | |
| 09-07 08:40 | d_c05 | u_c05 | first_open | |
| 09-07 08:50 | d_c06 | u_c06 | first_open | |
| 09-07 09:00 | d_c07 | u_c07 | first_open | |
| 09-07 09:10 | d_c08 | u_c08 | first_open | |
| 09-07 09:20 | d_c09 | u_c09 | first_open | |
| 09-07 09:30 | d_c10 | u_c10 | first_open | |
| 09-08 10:00 | none | u_c01 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c01","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-08 10:10 | none | u_c02 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c02","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-08 10:20 | none | u_c03 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c03","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-08 10:30 | none | u_c04 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c04","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-11 10:00 | none | u_c01 | rc_renewal | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c01","price":8,"period_type":"NORMAL","is_trial_conversion":true} |
| 09-11 10:10 | none | u_c02 | rc_renewal | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c02","price":8,"period_type":"NORMAL","is_trial_conversion":true} |
| 09-13 20:00 | none | u_c07 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c07","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-14 08:00 | d_c11 | u_c11 | first_open | |
| 09-14 08:10 | d_c12 | u_c12 | first_open | |
| 09-14 08:20 | d_c13 | u_c13 | first_open | |
| 09-14 08:30 | d_c14 | u_c14 | first_open | |
| 09-14 08:40 | d_c15 | u_c15 | first_open | |
| 09-14 08:50 | d_c16 | u_c16 | first_open | |
| 09-14 09:00 | d_c17 | u_c17 | first_open | |
| 09-14 09:10 | d_c18 | u_c18 | first_open | |
| 09-14 09:20 | d_c19 | u_c19 | first_open | |
| 09-14 09:30 | d_c20 | u_c20 | first_open | |
| 09-15 10:00 | none | u_c05 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c05","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-15 10:10 | none | u_c06 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c06","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-15 11:00 | none | u_c11 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c11","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-15 11:10 | none | u_c12 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c12","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-15 11:20 | none | u_c13 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c13","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-15 11:30 | none | u_c14 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c14","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-15 11:40 | none | u_c15 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c15","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-16 20:00 | none | u_c07 | rc_renewal | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c07","price":8,"period_type":"NORMAL","is_trial_conversion":true} |
| 09-18 10:00 | none | u_c05 | rc_renewal | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c05","price":8,"period_type":"NORMAL","is_trial_conversion":true} |
| 09-18 11:00 | none | u_c11 | rc_renewal | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c11","price":8,"period_type":"NORMAL","is_trial_conversion":true} |
| 09-18 11:10 | none | u_c12 | rc_renewal | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c12","price":8,"period_type":"NORMAL","is_trial_conversion":true} |
| 09-18 11:20 | none | u_c13 | rc_renewal | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c13","price":8,"period_type":"NORMAL","is_trial_conversion":true} |
| 09-20 20:00 | none | u_c16 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c16","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-21 08:00 | d_c21 | u_c21 | first_open | |
| 09-21 08:10 | d_c22 | u_c22 | first_open | |
| 09-21 08:20 | d_c23 | u_c23 | first_open | |
| 09-21 08:30 | d_c24 | u_c24 | first_open | |
| 09-21 08:40 | d_c25 | u_c25 | first_open | |
| 09-21 08:50 | d_c26 | u_c26 | first_open | |
| 09-21 09:00 | d_c27 | u_c27 | first_open | |
| 09-21 09:10 | d_c28 | u_c28 | first_open | |
| 09-21 09:20 | d_c29 | u_c29 | first_open | |
| 09-21 09:30 | d_c30 | u_c30 | first_open | |
| 09-22 10:00 | none | u_c17 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c17","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-22 11:00 | none | u_c21 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c21","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-22 11:10 | none | u_c22 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c22","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-22 11:20 | none | u_c24 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c24","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-23 20:00 | none | u_c16 | rc_renewal | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c16","price":8,"period_type":"NORMAL","is_trial_conversion":true} |
| 09-25 10:00 | none | u_c17 | rc_renewal | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c17","price":8,"period_type":"NORMAL","is_trial_conversion":true} |
| 09-25 11:00 | none | u_c21 | rc_renewal | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c21","price":8,"period_type":"NORMAL","is_trial_conversion":true} |
| 09-25 11:10 | none | u_c22 | rc_renewal | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c22","price":8,"period_type":"NORMAL","is_trial_conversion":true} |
| 09-27 20:00 | none | u_c23 | rc_initial_purchase | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c23","price":0,"period_type":"TRIAL","is_trial_conversion":false} |
| 09-30 20:00 | none | u_c23 | rc_renewal | {"product_id":"pro.monthly","currency":"USD","store":"APP_STORE","environment":"PRODUCTION","original_transaction_id":"tx_c23","price":8,"period_type":"NORMAL","is_trial_conversion":true} |
Get this table for your app: get_cohorts in the agent API docs, after the quickstart setup.
Cohort analysis examples FAQ
How do you do a cohort analysis on app data?
Group installs by day, week or month, then compare the same outcome in each cohort across the same periods since install. To try the retention version with typed numbers, use the cohort analysis tool.
How do you read a cohort analysis table?
Rows are cohorts and columns are periods since install. Read down a column to compare cohorts at the same age and across a row to see one cohort's curve. Dotted cells are still in progress and blank cells are in the future. The onboarding funnel analytics page shows the step-by-step view that cohorts compare over time.
How does ActivationPal group and count cohorts?
Onboarding, paywall, retention, trial starts and ARPU group by install date. Trial conversion groups by trial start date. Periods still in progress are marked partial, and retention is activity in that exact period. The agent API docs describe get_cohorts and the quickstart covers setup. For a single funnel, see the funnel analysis examples.
More free tools
- App Store account auditPortfolio similarity, review signals and listing concerns, with evidence.Open →
- App revenue calculator12 months of subscription revenue from installs, conversion and price.Open →
- Funnel calculatorStep conversion, drop-off and a chart from the users at each step.Open →
- Funnel analysis examplesWorked mobile funnels on labeled synthetic events, with the counting rules.Open →
- App revenue by countryWorked country revenue datasets on labeled synthetic data, with shares and tier rollups.Open →
- ARPU calculatorGross and net average revenue per user from revenue and users.Open →
- Cohort analysis toolA retention heatmap from weekly cohort sizes and users still active.Open →
- App Store keyword checkerPopularity and difficulty for any keyword, in any country.Open →
- Country pricing tiersEvery country in five pricing tiers, with the discount for each.Open →