Skip to main content
A paywall in FlowPilot is a normal flow with a purchase attached. You build the screen the way you build any onboarding flow, using the same editor, placements, experiments, and analytics. RevenueCat handles the store side: products, prices, purchases, receipts, and entitlements. FlowPilot renders the paywall and reports how it ended. Because a paywall is just a flow, everything you already know carries over. You target it with a placement, A/B test it with an experiment, preview it live, and publish a new version without shipping an app update.

Who owns what

The split is deliberate, and it keeps your billing setup entirely yours.

FlowPilot owns

The paywall UI, remote editing, placements, audience targeting, experiments, publishing, and the conversion funnel. All of it updates over the air.

RevenueCat owns

StoreKit, your offerings, packages, and products, the purchase itself, receipts, customer identity, and entitlements. You configure RevenueCat in your app, exactly as you would without FlowPilot.
FlowPilot never configures RevenueCat, never signs users in or out, and never reads a StoreKit receipt. It asks your app’s RevenueCat instance for the current offering, renders it, and calls purchase or restore when the user taps. Prices and trial eligibility always come from the store on the device, never from anything you type in the editor.

The seam: a purchase provider

The connection between the two is a small object called a purchase provider. Your app hands FlowPilot a provider, and FlowPilot uses it to fetch the offering and run purchases. For RevenueCat, we ship a ready-made adapter, so wiring it up is one line:
FlowPilot.shared?.registerPurchaseProvider(FlowPilotRevenueCatProvider())
FlowPilot.registerPurchaseProvider(new FlowPilotRevenueCatProvider());
Your app keeps ownership of RevenueCat and of who is signed in. FlowPilot only ever reads through the provider you give it.

What you get

  • Remote paywalls. Change copy, pricing layout, plan order, or the whole design and publish it without an app release.
  • Dynamic, compliant pricing. Plan cards read the live, localized price and trial terms from the store, so what the user sees is always what they will be charged.
  • Experiments and holdouts. Run the same A/B testing and sticky bucketing you use for onboarding on your paywalls.
  • A conversion funnel out of the box. Impressions, plan selections, purchases started, and purchases completed, attributed to the exact flow and variant the user saw.
  • Authoritative revenue when you want it. Connect RevenueCat webhooks and FlowPilot adds real subscription revenue, renewals, trial conversions, and refunds on top of the client funnel.

How to ship one

1

Connect RevenueCat

Paste a read-only RevenueCat API key into the dashboard so FlowPilot can read your catalog for authoring and preview. See Connect RevenueCat.
2

Build the paywall

Create a paywall flow, drop in the Offers blocks, bind each plan card to a package, and preview every state. See Build a paywall.
3

Wire up the SDK

Register the RevenueCat provider in your app, then present the paywall placement like any other flow. See iOS integration or Expo integration.
4

Measure and go live

Watch the funnel, connect webhooks for authoritative revenue, and pass App Review. See Analytics and revenue and App Store review.

Platform support

Paywalls ship first on Apple in-app purchase, through RevenueCat, on the iOS and Expo SDKs. Android and other stores are on the roadmap. Because the design is provider-neutral, adding a store later does not change your paywall flows.