Everything in Passback, screen by screen.

The web funnel and paywall builder for iOS apps, as it is. Every picture on this page is a capture of the product with a month of traffic in it, not a drawing of one.

A storyboard, a form, and a phone that renders as you type.

Every screen is a tile in the order a customer meets it. Select one and the form for it is on the left, the production component on the right. There is no separate preview to open, because the preview is the editor.

  • Seven screen types: question, value, testimonial, email, result, long-form and paywall.
  • Answers can be quoted later — a result screen turns the quiz into a plan before the price.
  • Reorder with two arrows that work on a keyboard and a touchscreen; the paywall is always last, and the editor will not let it be otherwise.
How funnels work
The screen editor: a storyboard of the screens and a live phone rendering the selected one.The screen editor: a storyboard of the screens and a live phone rendering the selected one.

Start from a template, or describe your app.

Five acquisition funnels — habit, sleep, language, finance and a general quiz — written as finished funnels rather than scaffolds, plus two retention starters. Or write two sentences about the app and get a first draft of every screen, in your words, to change.

  • Paste an App Store link: the name, icon, colour, screenshots and reviews come in with it.
  • Every template is tappable on the templates page before you start.
  • A draft is a draft — nothing is served until you publish it.
See the templates
Starting a funnel: the templates, or describing the app.Starting a funnel: the templates, or describing the app.

Plans are prices on your own Stripe account.

Monthly, yearly, a trial, a badge on the one you want chosen. Each plan is a real Stripe price on your connected account, created from here — so the customer, the subscription and the payout are yours, and stay yours if you leave.

  • Direct charges, no application fee, no revenue share.
  • Retire a plan and existing subscribers keep it; new visitors do not see it.
  • Trial terms are written out in a sentence on the paywall, never abbreviated.
How billing works
The paywall's form beside the phone rendering it.The paywall's form beside the phone rendering it.

Your brand, on your domain.

Light or dark, one accent, your logo. The button's text colour is computed for contrast so it is readable on whatever accent you choose, and the funnel is served from your own domain with no Passback branding on it.

  • The accent is pulled from the App Store icon when you import one.
  • A locale per funnel, so the words Passback adds are in the customer's language.
  • Pixels for Meta and TikTok are set once, per app.
The funnel's design: theme, accent and logo, previewed live.The funnel's design: theme, accent and logo, previewed live.

See it on four devices before anyone else does.

iPhone, a small phone, Android and a browser, with the flow and the plans beside it. When something is missing — no paywall, no plan, Stripe not connected — the preview says which tab holds the fix rather than leaving you to guess.

The funnel previewed on an iPhone.The funnel previewed on an iPhone.

Serve a second funnel to a share of visitors.

Pick a variant, pick a share, press the button. Visitors to the address are sent to A or B and the report shows opened, paid and conversion for each side in the same terms. Stop it and every visitor sees the original again; the numbers stay.

  • Ten, twenty-five, fifty or seventy-five per cent.
  • The paid event is filed under the address that was opened, so a test never splits the credit.
More on split tests
A split test: the variant and its share, with opened, paid and conversion for each side.A split test: the variant and its share, with opened, paid and conversion for each side.

Where they left, what they answered, where they came from.

Retention by screen, counted in distinct people. Every question's answers with their counts. Every source — utm parameters and the networks' click ids — with how many opened and how many paid. Seven, thirty or ninety days.

  • Purchases are posted back to Meta and TikTok server-side, so the campaign learns.
  • Numbers are computed in the database; a busy funnel is as fast as an empty one.
More on analytics
Analytics: the retention curve, the paywall's numbers, and where visitors came from.Analytics: the retention curve, the paywall's numbers, and where visitors came from.

See exactly where a screen loses people.

A month of taps, drawn as heat on the real screen — the production component, not a mockup. A dead tap landed on nothing; a tap in anger is somebody who tried twice. Both are counted, and both are a reason to look.

  • Every phone in the funnel, side by side, with what was under the finger on each — the headline, an answer, the button — and its share of the taps.
  • A recommendation names what looks wrong in a sentence and writes the fix. "Fix it for me" shows the screen as it is and as it would be, before anything changes.
  • Apply it and the change is tracked against the numbers it was made to move, so the next visit says whether it helped.
A funnel's screens with a month of taps drawn as heat, and a recommendation beside them naming what looks wrong and a button to fix it.A funnel's screens with a month of taps drawn as heat, and a recommendation beside them naming what looks wrong and a button to fix it.

Every customer, one timeline.

The list down the left — active, trialling, past due, ended — and the selected person on the right: plan, state, renewal, the funnel they came through, and everything since. A failed payment is a card with what Stripe will do next and one button to mark it handled.

  • Failing payments are counted in the sidebar and emailed to you once.
  • Each person is one click from their record on your Stripe account.
  • Leads who typed an address and stopped are reminded once, and appear here when they return.
Subscribers: the list, and one person's plan, state and activity.Subscribers: the list, and one person's plan, state and activity.

Evidence is written at purchase time, not dispute time.

Passback holds provenance no checkout has — the screens seen, the answers given, the exact paywall text at the tap, the token exchange proving the app opened, every launch after. So the dispute layer is built around it: prevent before fight, record at purchase, one tap and never a form, never in the money path.

  • Consent record: the paywall as rendered, its hash, the plan, the terms sentence verbatim, the trail of screens, every answer — keyed to the session, immutable.
  • Delivery record: first opened, last seen, launches, app version. A purchase where the app was never opened after it is recommended for acceptance, because fighting it loses and costs ratio.
  • Reminders before every trial converts and every yearly renewal — the exact amount and date, one-tap cancel and refund — with delivery and opens logged.
  • A hosted cancel and refund page from every receipt, with an optional save step and a refund policy you set. A visit with no action is evidence too.
  • Descriptor guard on publish, 3-D Secure where the issuer wants it, early fraud warnings refunded inside the window, and a rolling risk gauge with the trend.
  • When a dispute lands: the packet, a one-page PDF narrative with the paywall the customer tapped, mapped into Stripe's evidence fields, and one button — Fight or Accept.
A dispute with its recommendation, one button either way, and the record written at purchase time beneath.A dispute with its recommendation, one button either way, and the record written at purchase time beneath.

Keys, the test, and the snippets with your ids filled in.

An API key per app, the passback test that creates a marked subscriber so you can see the whole trip before a customer makes it, and the integration in Swift and Kotlin with your bundle id, scheme and funnel address already in place.

  • PassbackKit for iOS; a handful of lines of plain HTTP for Android.
  • The entitlement API never answers 500 to a valid request — no subscription is a 200 with found: false.
Read the documentation
API keys for an app.API keys for an app.

Paid on the web, subscribed in the app, no account to create.

The return into the app is the part most web funnels leave to you. Here it is three steps, and your app is involved in one of them.

  1. 1

    The customer pays

    On your Stripe account, with Apple Pay or a card, on the phone they are already holding.

  2. 2

    Passback opens your app

    Immediately, with a single-use token on the link. No email to confirm, no password to create.

  3. 3

    Your app makes one request

    It receives the plan and the renewal date, and shows the customer what they paid for.

Step three is a single HTTP request. There is nothing to install and no library to keep updated; the exact request, with your identifiers filled in, is on your settings page from the moment you sign up.

Your trial is live

Confirmed for you@example.com.

First payment on November 9, 2026

Open Streak and sign in with the address you paid with to pick up where you left off.

The payment settles

One flat rate. Every funnel, every subscriber.

No per-transaction fee, because Passback is never in the path of a payment.