An onboarding funnel is a chain of independent gates. If pi is the probability a user drops at gate i, the fraction of the original cohort still active after n gates is a simple product of survival rates:
R(n) = (1 - p_drop,1) × (1 - p_drop,2) × … × (1 - p_drop,n)
Because the terms multiply, a single bad gate — usually the permission request — dominates the final activation rate far more than its own drop percentage suggests. This simulator assigns every visible "user" dot a random outcome the moment it spawns: a Bernoulli trial per gate, evaluated in order, with the gate's current drop probability. The dot then travels down the lane and either passes through each gate ring or peels off and falls out of the flow at the exact gate it failed.
- Concurrent users — how many dots are alive in the lane at once (visual density, not a probability).
- UX friction — scales every gate's base drop probability up or down, modelling a generally rougher or smoother flow.
- Just-in-time permission ask — halves the drop rate at the Permission Request gate (asking for camera/location access only when the feature is used, not upfront, is the single highest-leverage fix in real mobile funnels).
- One-tap social login — halves the drop rate at Account Setup by removing manual form fields.
- Flow speed / View zoom — presentation only: how fast dots travel and how much of the lane is visible. Drag the flow view to pan; neither changes the underlying probabilities.
The "Empirical conversion" readout is a rolling average of the last 400 completed journeys through the live dot system; "Theoretical" is the exact closed-form product above. Watch them converge — that gap is exactly the sampling noise a real analytics dashboard has to average away. The lower panel is a static funnel diagram: bar width at each stage is the cumulative reach percentage, so the narrowing between two bars is the drop at that gate.