Rheo CLI is live. Let your agents be your growth engine.

Learn more
Rheo experiments dashboard showing A/B test variants and step-level funnel analytics
Product

How to find where users drop off in onboarding

A practical framework to diagnose onboarding funnel drop-off using step-level analytics, segment cuts, and fixes you can ship without an App Store release.

"You need to fix onboarding" is not a plan. Growth leads ask where users leave, product wants why, and engineering wants what to ship.

This post gives a repeatable drop-off diagnosis framework: define the funnel, find the cliff, segment the loss, form hypotheses, and validate fixes with published flow versions. Rheo's analytics are built for this workflow, but the logic applies to any step-instrumented onboarding system.

Step 1: Define start, complete, and the steps in between

Before charts, agree on definitions:

TermTypical definition
StartUser receives flow_started for the channel
CompleteUser reaches a terminal completion outcome for the flow
StepEach screen, decision, or external surface (paywall, permission)

Write the ordered step list from your live published graph, not from memory. Version pins matter: if the channel changed mid-week, filter analytics to one published version or you will blend incompatible sequences.

In Rheo: Apps → Flows → (flow) → Analytics. Choose environment (test vs live) and date range aligned with the pin you care about.

Step 2: Read the funnel for cliffs, not averages

Headline completion rate tells you if there is a problem. Funnel view tells you where.

Look for:

  • Cliffs: A step loses more than 2x the average step-to-step drop.
  • Flatlines: Many starts, near-zero progress past step 1 (load failure, crash, or instant dismiss).
  • Paywall holes: Healthy arrival at paywall, weak purchase_completed or trial events.

Rheo experiments dashboard showing A/B test variants and step-level funnel analytics

Example interpretation

StepUsersStep-to-step retention
Welcome10,000100%
Value prop7,20072%
Personalization6,80094%
Paywall2,10031%
Complete1,40067%

The cliff is personalization → paywall, not welcome. Fixing welcome copy wastes a sprint. Investigate what happens on the personalization screen and the transition into billing.

Step 3: Use drop-off highlights

Rheo's drop-off view emphasizes steps with disproportionate abandonment. Prioritize builder time there first.

Pair drop-off with median step duration:

  • High drop-off + long duration: Confusion, heavy media, or network-bound loader.
  • High drop-off + short duration: Users bounce immediately (copy mismatch, aggressive ask, or technical fail).

Step 4: Segment before you blame the UI

Aggregate funnels hide mixed populations. Split completion by:

SegmentWhat it reveals
PlatformiOS vs Android layout or permission differences
LocaleTranslation quality or copy length overflow
App versionSDK bugs or old binaries missing fixes
Experiment variantWhether a test arm caused regression
Custom propertyCampaign, tier, or feature flags from your app

Use the completion heatmap to spot segments that lag the overall rate. A 60% global completion can mask 40% on one locale.

Attribution-sensitive flows

If the flow includes ATT or MMP-dependent decisions, check iOS segments separately. Low opt-in can truncate branches that look like UI drop-off.

Step 5: Reconstruct journeys for edge cases

Population charts are not enough for rare failures. Open Customers, filter to users who started but did not complete, and read individual timelines:

  • Did they hit failed on a RevenueCat paywall?
  • Did they dismiss at a permission prompt?
  • Did events stop mid-flow (crash or force quit)?

Even 10 timelines often explain a cliff faster than a week of debate.

Step 6: Form hypotheses tied to one step

Good hypotheses are falsifiable and local:

BadGood
"Onboarding is too long""31% exit between personalization and paywall because we ask for email on that screen"
"Paywall is ugly""Dismiss rate is 55% when users reach paywall in under 30 seconds"

Limit to one primary change per publish so the next week's funnel attributes movement correctly.

Step 7: Ship fixes OTA and re-measure

For Rheo teams:

  1. Edit the flow in the builder (copy, order, branch, loader, paywall Fallback).
  2. Publish a new version with a clear label.
  3. Pin the channel to the new version, or run an experiment against the old pin.
  4. Compare the same date-range length after traffic stabilizes.

Avoid changing multiple steps and the paywall offering on the same day unless you accept ambiguous attribution.

Common drop-off patterns and fixes

Pattern A: Step 1 to step 2 cliff

Causes: Slow first paint, unclear CTA, login wall too early.

Fixes: Reduce first-screen weight (image/video), strengthen single CTA, defer account creation.

Pattern B: Pre-paywall cliff

Causes: Survey fatigue, permission prompt, or sudden tone shift before billing.

Fixes: Move permissions, shorten quiz, add bridge screen that matches paywall promise.

Pattern C: Paywall arrival OK, purchase weak

Causes: Offer mismatch, price surprise, broken RC integration, dismiss with no Fallback.

Fixes: Align copy with onboarding, verify offering ids, branch dismissed to second chance.

Pattern D: Post-purchase drop-off

Causes: Premium welcome too long, account setup failure, missing entitlement sync in app UI.

Fixes: Shorten welcome, gate features with RevenueCat entitlements in host app, decision on onb_rc_last_event.

Diagnostic checklist (copy for your doc)

  1. Funnel filtered to correct environment and version
  2. Biggest cliff step identified with counts
  3. Duration on that step checked
  4. Platform and locale segments compared
  5. 5-10 incomplete customer timelines reviewed
  6. One hypothesis written
  7. Fix published and pin or experiment started
  8. Re-check funnel after equal calendar window

How this connects to experiments

Drop-off diagnosis feeds the experiment backlog. When you find a cliff, duplicate the flow, change one thing, and A/B test. Experiments without diagnosis wander. Diagnosis without OTA shipping is slow.

Rheo keeps both in one place: same graph for analytics and editing, same channel for assignment.

When to escalate to engineering

OTA fixes cover content, structure, and branches. Escalate when timelines show:

  • Consistent failed on paywall across devices (integration)
  • Events stop on a specific app version only (SDK bug)
  • Crashes correlated with a layer type (video, Lottie, OAuth)

Attach timeline exports and version ids to the ticket.

Worked example: from chart to shipped fix

Scenario: Meditation app, live channel, last 14 days.

  1. Funnel: 8,200 starts → 5,100 after "Choose goals" → 1,900 at paywall → 1,100 trial.
  2. Cliff: Choose goals → paywall (62% loss).
  3. Segments: Android loses 8 pts more than iOS on that step; Spanish locale matches average.
  4. Timelines: 8 users tapped through goals in under 5 seconds then disappeared before paywall (loader?).
  5. Hypothesis: Goals screen shows a 3s Lottie before continue; users abandon during animation.
  6. Fix: Publish version goals-no-lottie; experiment 50/50 for 10 days.
  7. Result: Paywall arrival +11% relative; trial starts +9% relative; promote variant.

Notice the fix was not "rewrite paywall." Step-level diagnosis aimed engineering at one layer change.

Connecting to revenue, not just completion

Product teams sometimes over-optimize completion screens that do not monetize. Add a guardrail metric on every diagnosis sprint:

PrimaryGuardrail
Trial startsPaywall dismiss rate
CompletionMedian time (do not speed users into confusion)
ATT opt-inTrial starts (do not trade all revenue for IDFA)

If completion rises and trials fall, revert or branch by segment.

Tooling beyond Rheo

Rheo is the system of record for in-app steps. Pair it with:

  • RevenueCat for LTV and churn after trial
  • MMP for campaign quality into the funnel
  • Session replay (if you use it) for qualitative clips on the cliff step only

Do not duplicate event definitions across tools. Use Rheo correlation fields (flowId, versionId, variantId) when exporting to your warehouse.

Cadence: weekly onboarding review

DayAction
MondayPull 7-day funnel for active pin
TuesdayPick worst step or open experiment
WednesdayPublish candidate fix to test channel
ThursdayQA on device
FridayPin or start experiment on live

One rhythm beats quarterly hero redesigns.

Close the loop

Drop-off is not a one-time audit. Set a weekly review: same flow, rolling 7-day window, same version pin unless you shipped. Track completion and the worst step. Ship one improvement per week when traffic allows.

That cadence beats quarterly onboarding rewrites. Teams that treat onboarding as a living graph rather than a shipped feature consistently find revenue in steps competitors ignore.

Exporting for stakeholder reviews

Share a weekly PDF or slide with: funnel screenshot, worst step callout, one sentence hypothesis, and ship status. Rheo analytics stay the source of truth; the ritual keeps onboarding visible next to acquisition metrics in leadership meetings.

When drop-off diagnosis becomes habit, experiment ideas write themselves. Funnel analytics tell you what to test next; Rheo lets you ship that test before the next sprint planning meeting ends.

Start with yesterday's data. Fix the worst step this week. Repeat.

Start for free