ActivationPal

Funnel analysis example
with mobile app event data.

Three labeled event logs, the funnel chart each one produces and how every step is counted.

How every example is counted

Every device, user and timestamp is synthetic. The counts come from the same engine as the dashboard, as described in the events docs.

Conversion funnel analysis example: onboarding to purchase

Synthetic data 20 installs in one week, four onboarding steps, then the paywall. Each stage loses a similar share, except the paywall.

StepUsersStep conversionOverallLost
Installed20100%
Step 0: goal1890%90%2
Step 1: experience level1688.9%80%2
Step 2: weekly schedule1487.5%70%2
Step 3: notifications1285.7%60%2
Completed1191.7%55%1
Paywall shown11100%55%0
Plan selected545.5%25%6
Purchased240%10%3
Event log (111 events)
Time (UTC)DeviceUserEventProps
09-07 01:00d_a01u_a01first_open
09-07 01:03d_a01u_a01onboarding_step{"index":0,"id":"goal"}
09-07 01:06d_a01u_a01onboarding_step{"index":1,"id":"experience level"}
09-07 01:09d_a01u_a01onboarding_step{"index":2,"id":"weekly schedule"}
09-07 01:12d_a01u_a01onboarding_step{"index":3,"id":"notifications"}
09-07 01:15d_a01u_a01onboarding_completed
09-07 01:18d_a01u_a01paywall_shown{"placement":"onboarding"}
09-07 01:21d_a01u_a01paywall_plan_selected{"plan":"monthly"}
09-07 01:24d_a01u_a01paywall_purchased{"plan":"monthly"}
09-07 09:00d_a02u_a02first_open
09-07 09:03d_a02u_a02onboarding_step{"index":0,"id":"goal"}
09-07 09:06d_a02u_a02onboarding_step{"index":1,"id":"experience level"}
09-07 09:09d_a02u_a02onboarding_step{"index":2,"id":"weekly schedule"}
09-07 09:12d_a02u_a02onboarding_step{"index":3,"id":"notifications"}
09-07 09:15d_a02u_a02onboarding_completed
09-07 09:18d_a02u_a02paywall_shown{"placement":"onboarding"}
09-07 09:21d_a02u_a02paywall_plan_selected{"plan":"monthly"}
09-07 09:24d_a02u_a02paywall_purchased{"plan":"lifetime"}
09-07 17:00d_a03u_a03first_open
09-07 17:03d_a03u_a03onboarding_step{"index":0,"id":"goal"}
09-07 17:06d_a03u_a03onboarding_step{"index":1,"id":"experience level"}
09-07 17:09d_a03u_a03onboarding_step{"index":2,"id":"weekly schedule"}
09-07 17:12d_a03u_a03onboarding_step{"index":3,"id":"notifications"}
09-07 17:15d_a03u_a03onboarding_completed
09-07 17:18d_a03u_a03paywall_shown{"placement":"onboarding"}
09-07 17:21d_a03u_a03paywall_plan_selected{"plan":"monthly"}
09-08 01:00d_a04u_a04first_open
09-08 01:03d_a04u_a04onboarding_step{"index":0,"id":"goal"}
09-08 01:06d_a04u_a04onboarding_step{"index":1,"id":"experience level"}
09-08 01:09d_a04u_a04onboarding_step{"index":2,"id":"weekly schedule"}
09-08 01:12d_a04u_a04onboarding_step{"index":3,"id":"notifications"}
09-08 01:15d_a04u_a04onboarding_completed
09-08 01:18d_a04u_a04paywall_shown{"placement":"onboarding"}
09-08 01:21d_a04u_a04paywall_plan_selected{"plan":"monthly"}
09-08 09:00d_a05u_a05first_open
09-08 09:03d_a05u_a05onboarding_step{"index":0,"id":"goal"}
09-08 09:06d_a05u_a05onboarding_step{"index":1,"id":"experience level"}
09-08 09:09d_a05u_a05onboarding_step{"index":2,"id":"weekly schedule"}
09-08 09:12d_a05u_a05onboarding_step{"index":3,"id":"notifications"}
09-08 09:15d_a05u_a05onboarding_completed
09-08 09:18d_a05u_a05paywall_shown{"placement":"onboarding"}
09-08 09:21d_a05u_a05paywall_plan_selected{"plan":"lifetime"}
09-08 17:00d_a06u_a06first_open
09-08 17:03d_a06u_a06onboarding_step{"index":0,"id":"goal"}
09-08 17:06d_a06u_a06onboarding_step{"index":1,"id":"experience level"}
09-08 17:09d_a06u_a06onboarding_step{"index":2,"id":"weekly schedule"}
09-08 17:12d_a06u_a06onboarding_step{"index":3,"id":"notifications"}
09-08 17:15d_a06u_a06onboarding_completed
09-08 17:18d_a06u_a06paywall_shown{"placement":"onboarding"}
09-09 01:00d_a07u_a07first_open
09-09 01:03d_a07u_a07onboarding_step{"index":0,"id":"goal"}
09-09 01:06d_a07u_a07onboarding_step{"index":1,"id":"experience level"}
09-09 01:09d_a07u_a07onboarding_step{"index":2,"id":"weekly schedule"}
09-09 01:12d_a07u_a07onboarding_step{"index":3,"id":"notifications"}
09-09 01:15d_a07u_a07onboarding_completed
09-09 01:18d_a07u_a07paywall_shown{"placement":"onboarding"}
09-09 01:21d_a07u_a07paywall_dismissed
09-09 09:00d_a08u_a08first_open
09-09 09:03d_a08u_a08onboarding_step{"index":0,"id":"goal"}
09-09 09:06d_a08u_a08onboarding_step{"index":1,"id":"experience level"}
09-09 09:09d_a08u_a08onboarding_step{"index":2,"id":"weekly schedule"}
09-09 09:12d_a08u_a08onboarding_step{"index":3,"id":"notifications"}
09-09 09:15d_a08u_a08onboarding_completed
09-09 09:18d_a08u_a08paywall_shown{"placement":"onboarding"}
09-09 17:00d_a09u_a09first_open
09-09 17:03d_a09u_a09onboarding_step{"index":0,"id":"goal"}
09-09 17:06d_a09u_a09onboarding_step{"index":1,"id":"experience level"}
09-09 17:09d_a09u_a09onboarding_step{"index":2,"id":"weekly schedule"}
09-09 17:12d_a09u_a09onboarding_step{"index":3,"id":"notifications"}
09-09 17:15d_a09u_a09onboarding_completed
09-09 17:18d_a09u_a09paywall_shown{"placement":"onboarding"}
09-09 17:21d_a09u_a09paywall_dismissed
09-10 01:00d_a10u_a10first_open
09-10 01:03d_a10u_a10onboarding_step{"index":0,"id":"goal"}
09-10 01:06d_a10u_a10onboarding_step{"index":1,"id":"experience level"}
09-10 01:09d_a10u_a10onboarding_step{"index":2,"id":"weekly schedule"}
09-10 01:12d_a10u_a10onboarding_step{"index":3,"id":"notifications"}
09-10 01:15d_a10u_a10onboarding_completed
09-10 01:18d_a10u_a10paywall_shown{"placement":"onboarding"}
09-10 09:00d_a11u_a11first_open
09-10 09:03d_a11u_a11onboarding_step{"index":0,"id":"goal"}
09-10 09:06d_a11u_a11onboarding_step{"index":1,"id":"experience level"}
09-10 09:09d_a11u_a11onboarding_step{"index":2,"id":"weekly schedule"}
09-10 09:12d_a11u_a11onboarding_step{"index":3,"id":"notifications"}
09-10 09:15d_a11u_a11onboarding_completed
09-10 09:18d_a11u_a11paywall_shown{"placement":"onboarding"}
09-10 17:00d_a12u_a12first_open
09-10 17:03d_a12u_a12onboarding_step{"index":0,"id":"goal"}
09-10 17:06d_a12u_a12onboarding_step{"index":1,"id":"experience level"}
09-10 17:09d_a12u_a12onboarding_step{"index":2,"id":"weekly schedule"}
09-10 17:12d_a12u_a12onboarding_step{"index":3,"id":"notifications"}
09-11 01:00d_a13u_a13first_open
09-11 01:03d_a13u_a13onboarding_step{"index":0,"id":"goal"}
09-11 01:06d_a13u_a13onboarding_step{"index":1,"id":"experience level"}
09-11 01:09d_a13u_a13onboarding_step{"index":2,"id":"weekly schedule"}
09-11 09:00d_a14u_a14first_open
09-11 09:03d_a14u_a14onboarding_step{"index":0,"id":"goal"}
09-11 09:06d_a14u_a14onboarding_step{"index":1,"id":"experience level"}
09-11 09:09d_a14u_a14onboarding_step{"index":2,"id":"weekly schedule"}
09-11 17:00d_a15u_a15first_open
09-11 17:03d_a15u_a15onboarding_step{"index":0,"id":"goal"}
09-11 17:06d_a15u_a15onboarding_step{"index":1,"id":"experience level"}
09-12 01:00d_a16u_a16first_open
09-12 01:03d_a16u_a16onboarding_step{"index":0,"id":"goal"}
09-12 01:06d_a16u_a16onboarding_step{"index":1,"id":"experience level"}
09-12 09:00d_a17u_a17first_open
09-12 09:03d_a17u_a17onboarding_step{"index":0,"id":"goal"}
09-12 17:00d_a18u_a18first_open
09-12 17:03d_a18u_a18onboarding_step{"index":0,"id":"goal"}
09-13 01:00d_a19u_a19first_open
09-13 09:00d_a20u_a20first_open

Funnel analysis chart with repeated events and shared users

Synthetic data 12 installs, plus two older installs that buy during the week. Repeated events and a shared user id change no count.

StepUsersStep conversionOverallLost
Installed12100%
Step 0: goal975%75%3
Step 1: experience level888.9%67%1
Step 2: weekly schedule787.5%58%1
Completed685.7%50%1
Paywall shown6100%50%0
Plan selected466.7%33%2
Purchased250%17%2
Event log (69 events)
Time (UTC)DeviceUserEventProps
09-04 00:00d_b14u_b14first_open
09-05 00:00d_b13u_b13first_open
09-07 01:00d_b01u_b01first_open
09-07 01:03d_b01u_b01onboarding_step{"index":0,"id":"goal"}
09-07 01:06d_b01u_b01onboarding_step{"index":1,"id":"experience level"}
09-07 01:09d_b01u_b01onboarding_step{"index":1,"id":"experience level"}
09-07 01:12d_b01u_b01onboarding_step{"index":1,"id":"experience level"}
09-07 01:15d_b01u_b01onboarding_step{"index":2,"id":"weekly schedule"}
09-07 01:18d_b01u_b01onboarding_completed
09-07 01:21d_b01u_b01paywall_shown{"placement":"onboarding"}
09-07 01:24d_b01u_b01paywall_plan_selected{"plan":"monthly"}
09-07 12:40d_b02u_b02first_open
09-07 12:43d_b02u_b02first_open
09-07 12:46d_b02u_b02onboarding_step{"index":0,"id":"goal"}
09-07 12:49d_b02u_b02onboarding_step{"index":1,"id":"experience level"}
09-07 12:52d_b02u_b02onboarding_step{"index":2,"id":"weekly schedule"}
09-07 12:55d_b02u_b02onboarding_completed
09-07 12:58d_b02u_b02paywall_shown{"placement":"onboarding"}
09-07 13:01d_b02u_b02paywall_plan_selected{"plan":"monthly"}
09-08 00:20d_b03u_b03first_open
09-08 00:23d_b03u_b03onboarding_step{"index":0,"id":"goal"}
09-08 00:26d_b03u_b03onboarding_step{"index":1,"id":"experience level"}
09-08 00:29d_b03u_b03onboarding_step{"index":2,"id":"weekly schedule"}
09-08 00:32d_b03u_b03onboarding_completed
09-08 00:35d_b03u_b03paywall_shown{"placement":"onboarding"}
09-08 00:38d_b03u_b03paywall_plan_selected{"plan":"monthly"}
09-08 00:41d_b03u_b03paywall_plan_selected{"plan":"lifetime"}
09-08 00:44d_b03u_b03paywall_purchased{"plan":"lifetime"}
09-08 01:00d_b13u_b13paywall_shown{"placement":"onboarding"}
09-08 01:03d_b13u_b13paywall_plan_selected{"plan":"monthly"}
09-08 01:06d_b13u_b13paywall_purchased{"plan":"monthly"}
09-08 12:00d_b04u_b04first_open
09-08 12:03d_b04u_b04onboarding_step{"index":0,"id":"goal"}
09-08 12:06d_b04u_b04onboarding_step{"index":1,"id":"experience level"}
09-08 12:09d_b04u_b04onboarding_step{"index":2,"id":"weekly schedule"}
09-08 12:12d_b04u_b04onboarding_completed
09-08 12:15d_b04u_b04paywall_shown{"placement":"onboarding"}
09-08 12:18d_b04u_b04paywall_plan_selected{"plan":"monthly"}
09-08 12:21d_b04u_b04paywall_purchased{"plan":"monthly"}
09-08 12:24d_b04u_b04paywall_purchased{"plan":"monthly"}
09-08 23:40d_b05u_b05first_open
09-08 23:43d_b05u_b05onboarding_step{"index":0,"id":"goal"}
09-08 23:46d_b05u_b05onboarding_step{"index":1,"id":"experience level"}
09-08 23:49d_b05u_b05onboarding_step{"index":2,"id":"weekly schedule"}
09-08 23:52d_b05u_b05onboarding_completed
09-08 23:55d_b05u_b05paywall_shown{"placement":"onboarding"}
09-08 23:58d_b05u_b05paywall_shown{"placement":"onboarding"}
09-09 00:01d_b05u_b05paywall_shown{"placement":"onboarding"}
09-09 02:00d_b14u_b14paywall_shown{"placement":"onboarding"}
09-09 02:03d_b14u_b14paywall_plan_selected{"plan":"lifetime"}
09-09 02:06d_b14u_b14paywall_purchased{"plan":"lifetime"}
09-09 11:20d_b06u_b06first_open
09-09 11:23d_b06u_b06onboarding_step{"index":0,"id":"goal"}
09-09 11:26d_b06u_b06onboarding_step{"index":1,"id":"experience level"}
09-09 11:29d_b06u_b06onboarding_step{"index":2,"id":"weekly schedule"}
09-09 11:32d_b06u_b06onboarding_completed
09-09 11:35d_b06u_b06paywall_shown{"placement":"onboarding"}
09-09 23:00d_b07u_b06first_open
09-09 23:03d_b07u_b06onboarding_step{"index":0,"id":"goal"}
09-09 23:06d_b07u_b06onboarding_step{"index":1,"id":"experience level"}
09-09 23:09d_b07u_b06onboarding_step{"index":2,"id":"weekly schedule"}
09-10 10:40d_b08u_b08first_open
09-10 10:43d_b08u_b08onboarding_step{"index":0,"id":"goal"}
09-10 10:46d_b08u_b08onboarding_step{"index":1,"id":"experience level"}
09-10 22:20d_b09u_b09first_open
09-10 22:23d_b09u_b09onboarding_step{"index":0,"id":"goal"}
09-11 10:00d_b10u_b10first_open
09-11 21:40d_b11u_b11first_open
09-12 09:20d_b12u_b12first_open

Funnel analysis example with skipped steps and incomplete journeys

Synthetic data 14 installs where people skip steps, stop early or buy without a completed event. A stage can end up larger than the one before it.

StepUsersStep conversionOverallLost
Installed14100%
Step 0: goal964.3%64%5
Step 1: experience level666.7%43%3
Step 2: weekly schedule7116.7%50%0
Step 3: notifications685.7%43%1
Completed6100%43%0
Paywall shown8133.3%57%0
Plan selected562.5%36%3
Purchased360%21%2
Event log (70 events)
Time (UTC)DeviceUserEventProps
09-07 01:00d_c01u_c01first_open
09-07 01:03d_c01u_c01onboarding_step{"index":0,"id":"goal"}
09-07 01:06d_c01u_c01onboarding_step{"index":1,"id":"experience level"}
09-07 01:09d_c01u_c01onboarding_step{"index":2,"id":"weekly schedule"}
09-07 01:12d_c01u_c01onboarding_step{"index":3,"id":"notifications"}
09-07 01:15d_c01u_c01onboarding_completed
09-07 01:18d_c01u_c01paywall_shown{"placement":"onboarding"}
09-07 01:21d_c01u_c01paywall_plan_selected{"plan":"monthly"}
09-07 01:24d_c01u_c01paywall_purchased{"plan":"monthly"}
09-07 12:40d_c02u_c02first_open
09-07 12:43d_c02u_c02onboarding_step{"index":0,"id":"goal"}
09-07 12:46d_c02u_c02onboarding_step{"index":1,"id":"experience level"}
09-07 12:49d_c02u_c02onboarding_step{"index":2,"id":"weekly schedule"}
09-07 12:52d_c02u_c02onboarding_step{"index":3,"id":"notifications"}
09-07 12:55d_c02u_c02onboarding_completed
09-07 12:58d_c02u_c02paywall_shown{"placement":"onboarding"}
09-07 13:01d_c02u_c02paywall_plan_selected{"plan":"lifetime"}
09-08 00:20d_c03u_c03first_open
09-08 00:23d_c03u_c03onboarding_step{"index":0,"id":"goal"}
09-08 00:26d_c03u_c03onboarding_step{"index":1,"id":"experience level"}
09-08 00:29d_c03u_c03onboarding_step{"index":2,"id":"weekly schedule"}
09-08 00:32d_c03u_c03onboarding_step{"index":3,"id":"notifications"}
09-08 00:35d_c03u_c03onboarding_completed
09-08 00:38d_c03u_c03paywall_shown{"placement":"onboarding"}
09-08 00:41d_c03u_c03paywall_dismissed
09-08 12:00d_c04u_c04first_open
09-08 12:03d_c04u_c04onboarding_step{"index":0,"id":"goal"}
09-08 12:06d_c04u_c04onboarding_step{"index":1,"id":"experience level"}
09-08 12:09d_c04u_c04onboarding_step{"index":2,"id":"weekly schedule"}
09-08 12:12d_c04u_c04onboarding_step{"index":3,"id":"notifications"}
09-08 12:15d_c04u_c04onboarding_completed
09-08 12:18d_c04u_c04paywall_shown{"placement":"onboarding"}
09-08 12:21d_c04u_c04paywall_dismissed
09-08 23:40d_c05u_c05first_open
09-08 23:43d_c05u_c05onboarding_step{"index":0,"id":"goal"}
09-08 23:46d_c05u_c05onboarding_step{"index":2,"id":"weekly schedule"}
09-08 23:49d_c05u_c05onboarding_step{"index":3,"id":"notifications"}
09-08 23:52d_c05u_c05onboarding_completed
09-08 23:55d_c05u_c05paywall_shown{"placement":"onboarding"}
09-08 23:58d_c05u_c05paywall_plan_selected{"plan":"monthly"}
09-09 00:01d_c05u_c05paywall_purchased{"plan":"monthly"}
09-09 11:20d_c06u_c06first_open
09-09 11:23d_c06u_c06onboarding_step{"index":0,"id":"goal"}
09-09 11:26d_c06u_c06onboarding_step{"index":1,"id":"experience level"}
09-09 23:00d_c07u_c07first_open
09-09 23:03d_c07u_c07onboarding_step{"index":0,"id":"goal"}
09-10 10:40d_c08u_c08first_open
09-10 10:43d_c08u_c08onboarding_step{"index":0,"id":"goal"}
09-10 10:46d_c08u_c08onboarding_step{"index":1,"id":"experience level"}
09-10 10:49d_c08u_c08onboarding_step{"index":2,"id":"weekly schedule"}
09-10 10:52d_c08u_c08onboarding_step{"index":3,"id":"notifications"}
09-10 10:55d_c08u_c08onboarding_completed
09-10 10:58d_c08u_c08paywall_shown{"placement":"onboarding"}
09-10 11:01d_c08u_c08paywall_plan_selected{"plan":"monthly"}
09-10 22:20d_c09u_c09first_open
09-10 22:23d_c09u_c09paywall_shown{"placement":"onboarding"}
09-11 10:00d_c10u_c10first_open
09-11 10:03d_c10u_c10onboarding_step{"index":0,"id":"goal"}
09-11 10:06d_c10u_c10onboarding_step{"index":2,"id":"weekly schedule"}
09-11 10:09d_c10u_c10paywall_shown{"placement":"onboarding"}
09-11 10:12d_c10u_c10paywall_plan_selected{"plan":"lifetime"}
09-11 10:15d_c10u_c10paywall_purchased{"plan":"lifetime"}
09-11 21:40d_c11u_c11first_open
09-12 09:20d_c12u_c12first_open
09-12 21:00d_c13u_c13first_open
09-12 21:03d_c13u_c13app_open
09-12 21:06d_c13u_c13workout_logged{"type":"run"}
09-13 08:40d_c14u_c14first_open
09-13 09:20noneu_c99paywall_purchased{"plan":"monthly"}
09-14 05:00d_c08u_c08paywall_purchased{"plan":"monthly"}

Funnel analysis example FAQ

How do you do a funnel analysis on app events?

Pick the ordered events, set the install cohort and the date range, then count the unique devices at each step. Divide each count by the step before it for step conversion and by installs for overall conversion. To try it with typed numbers, use the funnel calculator.

What does a funnel analysis chart show?

One bar per step, sized by its share of installs, with the step conversion and the users lost beside it. The step with the largest loss is the leak to fix first. See onboarding funnel analytics for the same chart on live events.

How does ActivationPal count repeated and skipped steps?

It counts unique devices per stage and does not check the order. A device that jumps to the paywall counts at the paywall, so a stage can be larger than the one before it, as in the third example. The event names are in the events docs and the setup is in the quickstart.

More free tools