Skip to content

Paywall and onboarding design for subscription apps

A stipple ink drawing of an old subway turnstile with three bars and a coin slot, on warm off-white paper

The paywall is one screen. Its conversion rate is decided on the five screens before it. Teams spend weeks on the plan cards and ten minutes on the onboarding that leads to them, and then test the colour of the button.

I have designed and reviewed enough subscription flows, on client products and on my own, to have a short list of what I check before one ships. This is the list, in the order the user meets it.

Onboarding is the argument, the paywall is the ask

People pay for a result they believe the app will give them. The job of onboarding is to build that belief in the fewest steps, and the job of the paywall is to name the price once the belief is there.

So the sequence is fixed, and most problems come from breaking it:

  1. The promise. One screen, one sentence, what changes for them. "From the couch to your first 5K" is a promise. "Personalised training plans" is a feature.
  2. One quick win. Something the user does, rather than reads, that proves the app works for them. A first plan generated from their answers. A first scan. A first thing saved. The win is the moment the belief forms.
  3. Personalisation, visible. Two or three questions whose answers show up on the next screen. If the app asks eight questions and nothing changes, the questions were a survey.
  4. The ask. Now the paywall, with the promise repeated in the headline and the personal detail from step three on the screen.

Put the paywall before the win and you are asking a stranger for money. Put it after a long tour and the user has forgotten the promise. After the win, while it is fresh, is the moment.

What I check in the onboarding

Can it be finished in under a minute? Count the taps. A screen that does not change what the user sees next is a screen to cut.

Does each question earn its place? A question is allowed when its answer changes the product. Name, goal, current level: usually yes. Age, gender, how did you hear about us: usually a screen the user pays for and the product does not use.

Is the win real? A loading spinner with "Building your plan…" and then a generic plan is a fake win, and users feel it. If the plan is the same for each user, do not pretend to build it.

Does the permission ask come after the reason? Notifications, location, health data. Ask on the screen where the user sees why. The system dialog on launch gets denied, and a denied permission is hard to get back.

Is there a way out that is not the paywall? The user who is not ready today should be able to use something. A locked app after onboarding converts a few and loses the rest for good.

What I check on the paywall

The headline is the outcome. The same promise as the first screen, in the same words. The user did not come for "Premium".

Two plans, three at most. Monthly and yearly, one of them marked. More than three and the choice becomes the task, and a user who is deciding is not buying. The marked plan should be the one you want people on, and the mark should say why: "Save 40%", a real number.

The price per period is readable without maths. If the yearly plan is sold as a monthly price, the full charge is on the same line in the same size. If there is a trial, the end date and the amount charged after it are on the screen rather than in the footnote. Apple and Google require some of this. Users require all of it.

The trial terms are the biggest text after the headline. "7 days free, then €39.99/year, cancel anytime" is the sentence most people read. If it is hidden, they assume the worst and close.

Close is visible. A close button that appears after a delay, or sits in a corner at 20% opacity, is a dark pattern, and it gets your app flagged in reviews. Let people leave, and some of them come back.

The proof is real. One quote with a name beats the invented five-star row that each AI-generated paywall ships with. If you have no quotes yet, show the number of plans built, or the first result users got, or nothing. I listed the invented proof problem among the 12 signs a screen was made by AI, and paywalls are where it shows most.

Restore purchases is one tap. Required on iOS, and the first thing a returning user looks for.

The states that get skipped

A paywall has more states than the one in the mockup.

  • Trial running. Where does the user see how many days are left? A quiet line in settings is enough. Silence is not.
  • Trial ending. The reminder before the charge. Apps that send it get fewer refunds and fewer one-star reviews than apps that hope nobody notices.
  • Lapsed. The subscription ended. What does the app look like now? Usually it should look like the free version with a calm way back, rather than a wall across the whole app.
  • Purchase failed. A real message, a retry, and a way to contact someone.
  • Already subscribed. The paywall should not show to a paying user. It does, more often than teams think, after a reinstall.

The tricks that cost more than they make

Each of these lifts conversion in the first week and lowers it over the year.

  • A countdown timer that resets when the app restarts.
  • The yearly plan pre-selected with the monthly price shown large.
  • The close button that appears after three seconds.
  • A "no thanks, I don't want to get fit" decline link.
  • A free trial that needs a card to start, when the product does not need the card.
  • A cancellation flow longer than the purchase flow.

They work on the first visit. They are also why the subscription category has the refund rates it has, and why app stores keep adding rules. A paywall that respects the user converts slower in week one and better over the year.

How I test it

One thing at a time, and the thing is rarely the button colour. The order of onboarding screens. Whether the quick win is before or after the ask. Monthly first or yearly first. The headline as the outcome versus the headline as the plan name. Each of those has moved conversion more than any visual change I have made, in both directions.

And the metric is not "paywall views to trial starts". It is trial starts to paid, and paid to still paid at day 90. A paywall that converts and a product that retains are two different problems, and a dark pattern solves the first by making the second worse.

Open your paywall and read only the biggest text on it. Does it say what the user gets, or what the user pays?

Get my next post by email

One email when a post goes up. Nothing else.