Skip to main content
FlowPilot measures paywalls at two levels. Out of the box you get a conversion funnel built from what the device reports, attributed to the exact flow and variant the user saw. Connect RevenueCat webhooks and FlowPilot adds authoritative revenue on top: real renewals, trial conversions, and refunds that a device alone cannot see.

The conversion funnel

Every paywall flow has a funnel card in its analytics, built from events the SDK sends as the user moves through the paywall:
  • Impressions: the paywall was shown.
  • Plan selected: the user tapped a plan.
  • Purchase started: the user tapped buy and the store sheet opened.
  • Purchased: the purchase completed and the entitlement went active.
You get a conversion rate at each step, and because the events carry the flow, flow version, placement, and experiment variant, the funnel splits cleanly across an A/B test.
TODO: screenshot of the paywall funnel card on a flow’s analytics page, showing the four steps and the conversion rate.
This funnel is client-reported. It is device truth, near real time, and it is exactly what you want for comparing paywall designs and variants. What it cannot do is see anything that happens after the purchase, since renewals, refunds, and trial-to-paid conversions all happen on the store’s side, over time. For those you need webhooks.

Connect RevenueCat webhooks

Webhooks let RevenueCat tell FlowPilot about the full subscription lifecycle, so the dashboard can show authoritative revenue attributed to your paywalls.
RevenueCat webhooks are available on RevenueCat’s paid plan. Everything above (the funnel and client conversions) works without them. Webhooks add authoritative revenue, renewals, and refunds.
1

Get your webhook URL

In the dashboard, open Settings, then Monetization, and enable the webhook. FlowPilot generates a unique webhook URL and an Authorization value for you.
2

Add it in RevenueCat

In RevenueCat, add a webhook pointing at the FlowPilot URL, and set the Authorization header to the value FlowPilot generated. Optionally enable RevenueCat’s request signing for an extra layer of verification.
3

Confirm delivery

Send a test event or trigger a sandbox purchase. The Monetization tab shows delivery stats so you can confirm events are arriving.
TODO: screenshot of the webhook setup card showing the generated URL, the Authorization value with a reveal control, and delivery stats.

Client truth versus store truth

FlowPilot keeps the two clearly separate, and labels them so, so you never accidentally treat a device-reported purchase as recurring revenue.
SignalSourceUse it for
Funnel and client conversionsThe device, in real timeComparing paywall designs and experiment variants
Revenue, renewals, refunds, trial conversionsRevenueCat webhooksAuthoritative revenue and lifetime value
With webhooks connected, the Monetization tab shows a revenue rollup: FlowPilot-attributed revenue versus total, renewals, trial conversions, and refunds. Refunds subtract, so the numbers stay honest.

How attribution works

When a user buys through a FlowPilot paywall, the SDK stamps FlowPilot identifiers (flow, flow version, placement, experiment, variant, and a per-attempt id) onto the purchase as RevenueCat subscriber attributes. These carry no personal data, only FlowPilot identifiers. They ride along into RevenueCat’s webhooks and data exports, which is how a renewal months later still attributes to the paywall that drove the original purchase. Revenue that did not come through a FlowPilot paywall (a pre-existing subscriber, a purchase from your own native screen, an import) is counted separately and is never folded into FlowPilot-attributed revenue. The attribution is built so that number can never be silently overstated.

Sandbox versus production

RevenueCat events are tagged as sandbox or production, and FlowPilot keeps them separate throughout. Your sandbox and Test Store purchases show up distinctly and never inflate production revenue.