> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getflowpilot.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Paywalls overview

> Design subscription paywalls as FlowPilot flows and let RevenueCat handle the purchase.

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.

<CardGroup cols={2}>
  <Card title="FlowPilot owns" icon="pen-ruler">
    The paywall UI, remote editing, placements, audience targeting, experiments, publishing, and the conversion funnel. All of it updates over the air.
  </Card>

  <Card title="RevenueCat owns" icon="credit-card">
    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.
  </Card>
</CardGroup>

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:

<CodeGroup>
  ```swift iOS theme={null}
  FlowPilot.shared?.registerPurchaseProvider(FlowPilotRevenueCatProvider())
  ```

  ```tsx Expo theme={null}
  FlowPilot.registerPurchaseProvider(new FlowPilotRevenueCatProvider());
  ```
</CodeGroup>

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

<Steps>
  <Step title="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](/paywalls/connect-revenuecat).
  </Step>

  <Step title="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](/paywalls/building-a-paywall).
  </Step>

  <Step title="Wire up the SDK">
    Register the RevenueCat provider in your app, then present the paywall placement like any other flow. See [iOS integration](/paywalls/ios) or [Expo integration](/paywalls/expo).
  </Step>

  <Step title="Measure and go live">
    Watch the funnel, connect webhooks for authoritative revenue, and pass App Review. See [Analytics and revenue](/paywalls/analytics-and-revenue) and [App Store review](/paywalls/app-review).
  </Step>
</Steps>

## 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.

## Related pages

* [Connect RevenueCat](/paywalls/connect-revenuecat)
* [Build a paywall](/paywalls/building-a-paywall)
* [iOS integration](/paywalls/ios)
* [Expo integration](/paywalls/expo)
* [Analytics and revenue](/paywalls/analytics-and-revenue)
* [App Store review](/paywalls/app-review)
