
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.
| Strength | Subscription use case |
|---|---|
| Flexible event model | Custom steps beyond SDK defaults |
| Cohort breakdown | Compare organic vs paid |
| Retention and paths | Post-trial engagement |
| Session replay (where enabled) | Watch confusion on a screen |
| Self-host or cloud | Data residency choices |
Typical subscription funnel in PostHog:
app_installedorfirst_openonboarding_step_completed(with step index property)signup_completedpaywall_viewedtrial_startedorpurchase_completedsubscription_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.
| Event | Properties to include | Pitfall |
|---|---|---|
onboarding_step_viewed | step_id, step_index, flow_version | Missing version breaks A/B readouts |
onboarding_step_completed | Same as viewed | Counting skip as complete |
paywall_viewed | offering_id, placement | No placement = cannot fix timing |
trial_started | product_id, source | Duplicate fire from SDK + server |
purchase_failed | error_code | Swallowing 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 pattern | Likely cause | Fix layer |
|---|---|---|
| Cliff after step 2 | Value prop weak or too early | Onboarding copy / order |
| Gradual bleed steps 3-6 | Flow too long | Shorten journey |
| Spike at permission step | ATT or push timing | Branch or pre-prompt |
| High reach paywall, low trial | Journey qualified users poorly | Upstream messaging |
| High trial, low D7 retention | Product, not funnel | Outside 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:
- PostHog funnel shows 35% drop at onboarding step 4.
- PM writes spec for shorter path.
- Engineering implements new navigation branch.
- Release train + store review.
- 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:
| Phase | Tool | Output |
|---|---|---|
| Diagnose | PostHog funnel | Step id with worst conversion |
| Hypothesize | Growth doc | One change per experiment |
| Deploy | Rheo (or equivalent) | Publish variant without store |
| Verify | PostHog + Rheo step analytics | Variant 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.
| Question | Best source |
|---|---|
| Which variant won step 5 this week? | Rheo experiment view |
| D30 retention by install cohort | PostHog |
| Cancel flow completion rate | Rheo lifecycle channel |
| Feature usage after trial | PostHog |
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 funnel | Why it lies |
|---|---|
| Install → paid in one chart | Hides onboarding leaks |
| Paywall viewed → trial only | Ignores qualification path |
| No experiment property | Blends variants |
| Calendar time windows too short | Mobile installs are bursty |
Build stage funnels aligned to your journey:
- Activation funnel: install through first value action
- Monetization funnel: value action through trial start
- 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.
| Approach | Best for | Limitation |
|---|---|---|
| PostHog feature flags | Simple A/B on existing screens | Both variants must exist in binary |
| Remote flow platform | Multi-step structure, copy, order | Requires SDK integration |
| PostHog experiments + custom code | Engineers own variants | Slow 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
| Metric | PostHog | Rheo |
|---|---|---|
| Install to signup | Yes | Step funnel |
| Onboarding step drop-off | If instrumented | Native per step |
| Experiment assignment | If property sent | Built-in |
| Trial / purchase | Yes (from billing events) | Via integration node |
| Paywall UI variant | If RC events forwarded | Placement only |
| Win-back flow | Custom events | Lifecycle channel |
Practical workflow for subscription growth teams
- Weekly funnel review in PostHog on activation and monetization stages.
- Pick one leak with enough volume to detect change.
- Ship journey fix via Rheo when the change is order, copy, branch, or placement.
- Ship paywall UI fix via RevenueCat / paywall vendor when the change is pricing presentation only.
- 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_versionandexperiment_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.