Funnel Integrations
RevenueCat Funnels can send events to your analytics and advertising platforms alongside your other RevenueCat subscription events. This gives you a unified view of Customer behavior, from the moment someone enters your funnel to the moment they subscribe and beyond.
Supported integrations
| Integration | Use case |
|---|---|
| Amplitude | Analyze funnel step conversion alongside subscription lifecycle events in your Amplitude project |
| Mixpanel | Track funnel progression and purchases in your Mixpanel project for cohort and funnel analysis |
| Segment | Stream funnel step and purchase events into Segment alongside subscription events, then fan them out to your downstream destinations |
| Meta Ads | Send funnel purchase events to Meta for campaign optimization and conversion tracking |
| Google Tag Manager | Load a GTM container on published funnel pages and receive funnel events on dataLayer |
The Amplitude integration also supports cross-domain tracking. When a visitor reaches your funnel from a site running Amplitude's Browser SDK, RevenueCat reads the Amplitude device and session IDs that the SDK appends to the funnel link and forwards them on funnel events — so activity on your funnel and your other sites is attributed to the same Amplitude user.
Funnel interaction events
Each event-forwarding integration supports the same set of funnel-specific events, in addition to the standard RevenueCat subscription lifecycle events they already track:
| Event | Default name | Description |
|---|---|---|
| Workflow step started | rc_workflows_step_started_event | Fired when a Customer views a funnel step |
| Workflow step completed | rc_workflows_step_completed_event | Fired when a Customer completes a funnel step (e.g. clicks a button or exits) |
| Workflow non-checkout completion | rc_workflows_non_checkout_completion_event | Fired when a Customer ends the funnel through a configured exit without a purchase |
| Workflow purchase | rc_workflows_purchase_event | Fired when a purchase is made through a funnel |
You can customize the name for each event in the integration settings for Amplitude, Mixpanel, Segment, and Meta Ads. Google Tag Manager uses the default names above and does not have a mapping UI.
These events describe how Customers move through a funnel, including rc_workflows_purchase_event, which fires when a purchase happens in a funnel. They're interaction events for your own analytics and carry no revenue. Purchase revenue reaches your integrations through RevenueCat's standard subscription events; for how those reach Meta, see Meta Ads.
Enabling funnel interaction events
Funnel interaction event delivery is opt-in. After you have the integration set up (see the integration-specific docs linked above), enable funnel interaction events by:
- Navigate to Integrations in your project and open the relevant integration
- Click the Web Funnel Events tab
- Check Send Web Funnels events
- Optionally customize the event names
- Save your changes
For full setup instructions for each integration — including API keys, credentials, and other configuration — see the integration-specific documentation linked in the table above.
The Google Tag Manager only supports funnel events, and therefore no additional opt-in is needed.
Meta Ads
When a purchase is made through a funnel RevenueCat can deliver it to Meta as a conversion event through the Meta Conversions API & Meta Pixel. Simply set up the Meta Ads integration with the Conversions API and add your Dataset ID and Conversions API Token. RevenueCat uses those credentials both to send the conversion event server-side and to load the Meta Pixel on your funnel.
The conversion event
RevenueCat sends an initial purchase as the standard subscription event configured on your integration — Subscribe by default, or StartTrial for a trial start. See Event names for the full mapping. The event carries action_source: "website", the purchase revenue, and the identity parameters Meta matches on, and Meta uses it for attribution and campaign optimization like any other conversion event.
Identity parameters
RevenueCat sends the following user_data parameters with a funnel purchase. These are what Meta matches the conversion to a person and a campaign with, so they're the largest factor in your Meta event match quality.
| Parameter | What RevenueCat sends | Hashing |
|---|---|---|
em | The email address collected at funnel checkout | SHA-256, lowercased with spaces removed |
fbp | The visitor's _fbp browser cookie, set by the Meta Pixel | Not hashed |
fbc | The visitor's _fbc click cookie. When the cookie is absent and the funnel URL carries an fbclid parameter, RevenueCat builds the value as fb.1.<timestamp>.<fbclid> | Not hashed |
external_id | The App User ID of the Customer | SHA-256 |
client_ip_address | The Customer's IP address, resolved when the funnel page was served | Not hashed |
client_user_agent | The browser user agent observed when the funnel page was served | Not hashed |
ph | The phone number, when $phoneNumber is set on the Customer. Funnel checkout doesn't collect a phone number, so this is only present if you set the attribute yourself | SHA-256 of the E.164 number, without the leading + |
Every parameter is conditional. RevenueCat includes one only when a value is available for that Customer.
Revenue parameters
| Parameter | What RevenueCat sends |
|---|---|
value | The purchase amount in USD, using the revenue reporting mode set on the integration: gross, or net of commission and estimated taxes |
currency | USD |
content_ids | An array holding the purchased product identifier |
contents | An array holding the purchased product identifier with a quantity of 1 |
content_type | product |
order_id | An identifier derived from the store transaction, matching the event's event_id |
Because value follows your revenue reporting mode, use the same mode when you compare Meta-side return on ad spend (ROAS) against RevenueCat revenue metrics. See taxes and commissions.
Where the web identifiers come from
You don't need to add tracking code to your funnel. RevenueCat-hosted funnel pages collect the Meta identifiers for you:
_fbpand_fbc. The funnel page reads both cookies on the first step and keeps them for the rest of the session. Because RevenueCat loads the Meta Pixel with your Dataset ID on the funnel page itself, the Pixel sets_fbpfor first-time visitors there — a visitor doesn't need to land on one of your own pages first. If_fbcis absent, for example because the Pixel was blocked, RevenueCat reconstructs it from thefbclidparameter on the funnel URL, so an ad-to-funnel click still carries click attribution.- The email address comes from the checkout step.
- The user agent and IP address come from the request that served the funnel page.
RevenueCat stores these as Customer attributes — $fbp, $fbc, $userAgent, $pageUrl, and $email — and attaches them to the purchase event it sends to Meta.
RevenueCat delivers a web purchase to Meta only when the Customer has at least one of $fbp, $fbc, or an email address. A visitor who arrives with no Meta cookies and doesn't provide an email at checkout won't produce a Meta conversion event.
Deduplicating with the Meta Pixel
To ensure conversion events are always delivered, even when a client-side event cannot be delivered for some reason, the Meta Ads integration delivers both client-side events through the Meta Pixel and server-side events through the Conversions API. The client-side event uses the same event name and the same event_id as the server-side Conversions API event, so Meta collapses the pair into a single conversion.
Funnel interaction events in Meta
With Send Web Funnels events enabled, RevenueCat also sends the funnel interaction events to Meta as custom events for your own analytics. They carry funnel, step, and UTM context but no revenue, and Meta doesn't use them for ad attribution or campaign optimization unless you choose to use a custom event for that purpose; which is usually not recommended.