How to See Where Users Drop Off Before Your Paywall
If a quarter of your new users ever see your paywall, the paywall is not your problem. Onboarding is. Here is how to measure where people leave, with a few lines of code, and how to read the result.
Count people, not events
The useful question is: of everyone who installed this week, how many reached each step? Count unique devices per step, not total taps. A funnel built that way shows a single number per step, and the gap between two steps is the people you lost there.
Step 1: number your onboarding screens
Give each onboarding screen an index and a short id, and send one event when it appears. With the MetricNudge iOS SDK that is one line per screen; the Flutter SDK has the same call.
MetricNudge.onboardingStep(2, id: "goals", answer: "lose weight")
The optional answer is useful for question screens: you can then see which answer people give before they leave. Call onboardingCompleted() when the flow ends.
Step 2: mark the paywall moments
Send an event when the paywall appears, with a name for where it was shown (a placement such as "onboarding" or "settings"). Then add events for choosing a plan, buying and dismissing.
MetricNudge.paywallShown("onboarding")
MetricNudge.paywallPlanSelected("annual", placement: "onboarding")
MetricNudge.paywallPurchased("annual", placement: "onboarding", hasTrial: true)
MetricNudge.paywallDismissed(placement: "onboarding")
Use a placement name for every paywall so a purchase is credited to the right one when you have more than one.
Step 3: read the funnel
Open the funnel and read it from the top. Look for the one step with a much bigger drop than the rest. Typical culprits:
- A permission prompt or sign-up wall early in the flow.
- A question screen that feels like work, with no visible reason for asking.
- A screen that loads slowly or looks broken on small phones.
- Too many screens before the value appears.
Step 4: see what people did last
Funnels show where the line drops. The more direct view is: for people who installed at least two days ago and never came back, what was the last thing they did? If one screen or paywall dominates that list, you have found where they give up. MetricNudge shows this as the last action of one-visit users.
Step 5: read the paywall funnel by placement
For each paywall, the numbers to compare are: saw it, chose a plan, tapped buy, bought. Then the reasons people stop: they cancelled at the store's payment sheet, the purchase failed, or they dismissed the paywall.
- Many views and few plan choices: the offer or price page is unclear.
- Many plan choices and few buys: the price or the trial terms put people off at the last step.
- Many cancels at the store sheet: people were curious but not convinced; test a free trial or a lower entry price.
- Failures at checkout: check the product setup before changing anything else.
Step 6: change one thing and compare
Fix the biggest drop first, release, and compare the next week's cohort of new installs with the last. Compare installs from the same period length, because the weekend is not the same as a Tuesday. Avoid changing the onboarding and the paywall in the same release, or you will not know which one worked.
Doing it with MetricNudge
MetricNudge draws the onboarding funnel, the paywall funnel per placement and the last action of one-visit users from these events, and its plan turns the biggest gap into a suggested next step. The numbers come only from the events your app sends: if you add no onboarding calls, there is no funnel to show. To follow what happens after the purchase, read Reading subscription metrics from RevenueCat.
Try it on your own app
MetricNudge tracks your keyword rankings in every storefront, shows your app's analytics, and writes a plain-words plan of what to do next. The free plan needs no card.