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

Learn more
PostHog funnel analysis connected to in-app journey fixes
Product

PostHog mobile funnels for subscription apps: find the leak, then fix it in-app

Use PostHog funnels to find subscription funnel leaks, then fix onboarding and journey steps in-app without waiting on releases.

PostHog mobile funnels are excellent at answering where users drop off. Install to signup to trial start to paid: the chart turns red at the step that hurts. What PostHog does not do by itself is ship a fix on Tuesday without an App Store release.

The gap between diagnosis and deployment is where subscription teams lose weeks. You find the leak in PostHog on Wednesday. Engineering picks up the ticket the following sprint. QA blocks on a build. Review adds days. The funnel you measured is not the funnel users see when the fix ships.

This post covers how to use PostHog funnels for subscription apps, which events to instrument, how to read mobile-specific drop-offs, and how to close the loop by fixing onboarding and journey steps in-app without waiting on releases.

What PostHog funnels do well on mobile

PostHog aggregates events from your iOS, Android, or React Native app into funnel steps. You define the sequence. PostHog calculates conversion and time between steps.

StrengthSubscription use case
Flexible event modelCustom steps beyond SDK defaults
Cohort breakdownCompare organic vs paid
Retention and pathsPost-trial engagement
Session replay (where enabled)Watch confusion on a screen
Self-host or cloudData residency choices

Typical subscription funnel in PostHog:

  1. app_installed or first_open
  2. onboarding_step_completed (with step index property)
  3. signup_completed
  4. paywall_viewed
  5. trial_started or purchase_completed
  6. subscription_renewed

The leak between steps 3 and 5 is where most growth teams live.

Instrumentation checklist for mobile subscription funnels

Garbage in, garbage out. Before trusting funnel colors, confirm event quality.

EventProperties to includePitfall
onboarding_step_viewedstep_id, step_index, flow_versionMissing version breaks A/B readouts
onboarding_step_completedSame as viewedCounting skip as complete
paywall_viewedoffering_id, placementNo placement = cannot fix timing
trial_startedproduct_id, sourceDuplicate fire from SDK + server
purchase_failederror_codeSwallowing failures hides leaks

Identity: merge anonymous pre-signup events with identified post-signup users. PostHog alias patterns matter for mobile where install id differs from account id.

Flow version: when you run experiments, every event should carry flow_variant or experiment_id. Otherwise PostHog blends control and variant into one misleading funnel.

Reading mobile funnel drop-offs

Not every red bar needs a paywall redesign. Common mobile patterns:

Drop-off patternLikely causeFix layer
Cliff after step 2Value prop weak or too earlyOnboarding copy / order
Gradual bleed steps 3-6Flow too longShorten journey
Spike at permission stepATT or push timingBranch or pre-prompt
High reach paywall, low trialJourney qualified users poorlyUpstream messaging
High trial, low D7 retentionProduct, not funnelOutside funnel scope

PostHog tells you where. It does not tell you which variant of a multi-step native flow to ship without either feature flags in code or a remote flow platform.

The diagnosis-to-deployment gap

A typical workflow today:

  1. PostHog funnel shows 35% drop at onboarding step 4.
  2. PM writes spec for shorter path.
  3. Engineering implements new navigation branch.
  4. Release train + store review.
  5. Two weeks later, measure again.

During those two weeks, ad spend sent users through the broken step 4. Funnel analytics aged out of relevance.

What teams need is a closed loop:

PhaseToolOutput
DiagnosePostHog funnelStep id with worst conversion
HypothesizeGrowth docOne change per experiment
DeployRheo (or equivalent)Publish variant without store
VerifyPostHog + Rheo step analyticsVariant comparison

PostHog remains the system of record for product-wide analytics, retention, and cross-platform views. Rheo owns the native journey graph and step-level experiment assignment for onboarding and lifecycle flows.

Connecting PostHog to journey fixes

You do not need to replace PostHog. You need events from both systems to tell a coherent story.

Option A: Rheo events forwarded to PostHog

Fire Rheo step events into PostHog with the same step_id and experiment_id properties you use in dashboards. Build funnels in PostHog that mirror Rheo flow structure.

Option B: Dual read

Use Rheo for step completion during active experiments (fast, flow-native). Use PostHog for longer retention and revenue cohorts. Align on naming conventions in a shared tracking plan.

QuestionBest source
Which variant won step 5 this week?Rheo experiment view
D30 retention by install cohortPostHog
Cancel flow completion rateRheo lifecycle channel
Feature usage after trialPostHog

Example: fixing a subscription leak end to end

Symptom: PostHog shows 50% drop between signup_completed and paywall_viewed. Only 40% of signups reach paywall within session one.

Diagnosis: Step analytics (Rheo or granular PostHog events) show users exit on a permissions screen between signup and paywall.

Hypothesis: Moving push permission after paywall increases paywall reach without hurting trial rate.

Deploy: Publish variant B in Rheo with reordered steps. No App Store release. Assign 50/50 on the first-launch channel.

Verify: Compare paywall_viewed rate by experiment_id in PostHog. Confirm trial start rate did not collapse.

Note on paywall: Rheo changed when users arrive at the paywall step. RevenueCat or your paywall integration still owns paywall UI and purchase. If trial rate moves after reach improves, run a separate paywall UI test in your billing tool.

Funnel definitions that mislead subscription teams

Bad funnelWhy it lies
Install → paid in one chartHides onboarding leaks
Paywall viewed → trial onlyIgnores qualification path
No experiment propertyBlends variants
Calendar time windows too shortMobile installs are bursty

Build stage funnels aligned to your journey:

  1. Activation funnel: install through first value action
  2. Monetization funnel: value action through trial start
  3. Retention funnel: trial through paid renewal

PostHog can chart all three. Fix leaks in the stage that actually moved.

PostHog feature flags vs flow changes

PostHog feature flags can toggle boolean gates in your app: show screen A vs B if you already built both in code. That still requires engineering to merge both paths and release the flag infrastructure.

ApproachBest forLimitation
PostHog feature flagsSimple A/B on existing screensBoth variants must exist in binary
Remote flow platformMulti-step structure, copy, orderRequires SDK integration
PostHog experiments + custom codeEngineers own variantsSlow for growth-led iteration

For subscription onboarding with five or more steps and frequent copy tests, remote flows outperform flag-only setups. Flags remain valuable for product features outside the journey.

Metrics map: PostHog and Rheo together

MetricPostHogRheo
Install to signupYesStep funnel
Onboarding step drop-offIf instrumentedNative per step
Experiment assignmentIf property sentBuilt-in
Trial / purchaseYes (from billing events)Via integration node
Paywall UI variantIf RC events forwardedPlacement only
Win-back flowCustom eventsLifecycle channel

Practical workflow for subscription growth teams

  1. Weekly funnel review in PostHog on activation and monetization stages.
  2. Pick one leak with enough volume to detect change.
  3. Ship journey fix via Rheo when the change is order, copy, branch, or placement.
  4. Ship paywall UI fix via RevenueCat / paywall vendor when the change is pricing presentation only.
  5. Document in tracking plan so next quarter's analyst sees the same step ids.

Summary

PostHog mobile funnels find the leak. They do not close the loop alone. Subscription teams win when diagnosis in PostHog connects to in-app journey fixes without store review:

  • Instrument step events with flow_version and experiment_id
  • Read drop-offs by stage, not only install-to-paid
  • Publish onboarding and lifecycle changes through a remote flow SDK
  • Keep paywall UI and billing in your integration layer
  • Verify fixes in PostHog with variant-aware funnels

Start for free and close the gap between your PostHog funnel and your next in-app fix.