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.


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.


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.


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.


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.


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.


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.


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.


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.


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.


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.


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
The customer pays
On your Stripe account, with Apple Pay or a card, on the phone they are already holding.
- 2
Passback opens your app
Immediately, with a single-use token on the link. No email to confirm, no password to create.
- 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
The payment settles
One flat rate. Every funnel, every subscriber.
No per-transaction fee, because Passback is never in the path of a payment.
