Creating Funnels
Use the Funnel Editor to design multi-step web experiences with customizable screens, branching logic, and seamless checkout integration.
Funnels require a payment provider (RevenueCat Web Billing or Paddle) to be configured. Make sure you've completed the payment configuration before creating your first funnel.
Creating a new funnelβ
To create a new funnel, navigate to your project's Web section in the RevenueCat Dashboard and click Create web funnel. You'll have two options:
- From scratch: Start with a blank funnel and build it step by step
- Using template: Choose from pre-built funnel templates as a starting point
Using templatesβ
Templates provide pre-configured funnel structures that you can customize. When you select Using template, you'll see a gallery of available templates. Each template includes:
- Pre-configured steps with sample content
- Example flow logic and connections
- Suggested component layouts
Selecting a template creates a new funnel as a copy of that template, named Copy of [template name]. You can customize any aspect of a template after selecting it β templates are just starting points to help you get up and running quickly.
Understanding the Funnel Editorβ
The Funnel Editor has two main modes:
Interaction modeβ
Interaction mode is where you design the flow of your funnel. In this mode, you can:
- See all steps in your funnel as visual nodes
- Connect steps together to define the user journey
- Add new steps (screens or checkout)
- Configure which step is the initial entry point
- Set up branching logic based on user actions
Design modeβ
Design mode is where you customize the content and appearance of individual screens. When you select a screen step and enter Design mode, you'll see the familiar Paywall Editor interface where you can:
- Add and arrange components (text, images, buttons, etc.)
- Configure component properties and styling
- Set up localizations
- Preview how the screen looks on different devices
Adding steps to your funnelβ
Steps are the building blocks of your funnel. There are four types of steps:
Screen stepsβ
Screen steps are customizable pages built using RevenueCat's Paywall UI builder. To add a screen:
- Click Add page in the left sidebar
- Choose one of the following options:
- Blank page: Start with an empty screen
- From template: Use a paywall template as the starting point
- From your paywalls: Copy an existing paywall from your project
- From your funnels: Copy a screen from another funnel
Once added, you can click on the screen node in Interaction mode and switch to Design mode to customize its content.
For web funnels, you can add the Express checkout paywall component on a screen step to show Apple Pay and Google Pay (and related wallet UI) before visitors reach checkout. See Express checkout in the Paywalls components guide for behavior, layout options, and requirements.
Authentication stepsβ
Authentication steps allow you to redirect users to your own authentication system and bring them back to the funnel once they've logged in. This is useful when you need users to authenticate before proceeding to checkout or accessing certain content.
To add an authentication step:
- Click Add page in the left sidebar
- Select Authentication
Setting up the redirect flowβ
After adding an authentication step, configure where users will be sent to authenticate:
- Click on the authentication step in the editor
- In the right panel, enter your External authentication URL
- This should be the URL of your authentication page (e.g.,
https://auth.example.com/login)
If your external authentication URL includes query parameters (e.g., https://auth.example.com/login?tracking_id=123), they will be preserved when RevenueCat appends the redirect_uri and state parameters. This is useful for passing tracking information or other data to your authentication system.
When a user reaches this authentication step, RevenueCat will redirect them to your external authentication URL with two query parameters:
redirect_uri: The callback URL where you must redirect users after authenticationstate: A token used to tie the session together (you must return this unchanged)
Example redirect URL your authentication page will receive:
https://auth.example.com/login?redirect_uri=https%3A%2F%2Fsignup.cat%2Ffunnel%2Fcallback&state=eyJub25jZSI6IjEyMyIsIndvcmtmbG93X2xpbmtfaWQiOi4uLn0=
Redirecting back to the funnelβ
After a user successfully authenticates, your authentication system must redirect back to the redirect_uri with two required query parameters:
state: The exact same state value you received (required)app_user_id: The authenticated user's ID from your system (required)
Example callback URL you should redirect to:
https://signup.cat/funnel/callback?state=eyJub25jZSI6IjEyMyIsIndvcmtmbG93X2xpbmtfaWQiOi4uLn0=&app_user_id=user_12345
You must include the state parameter exactly as you received it. Do not modify this value or RevenueCat validation will fail.
The redirect_uri parameter will always point to /funnel/callback on the appropriate domain (https://signup.cat/funnel/callback by default, or your custom domain if configured). For security, we recommend allowlisting these callback URLs in your authentication system. You can either use the redirect_uri parameter dynamically in your redirect or hard-code the callback URL if you know your domain configuration.
Auto-advance for authenticated usersβ
If a user who is already authenticated reaches an authentication step, they will automatically advance to the next step without being redirected. This prevents unnecessary re-authentication when users navigate back through your funnel.
Branch nodesβ
Branch nodes are dedicated routing steps that evaluate conditions and direct users to different steps based on rules you define. Use a branch node when you need to split your funnel flow based on user data, UTM parameters, survey answers, or any other conditions β without tying that logic to a specific screen or button.
To add a branch node:
- Click Add page in the left sidebar
- Select Branch
Configuring routing rulesβ
After adding a branch node, click on it to open the Branch settings panel. Click Edit to open the rule editor.
Branch nodes can be setup to always navigate to a given step, or navigate to different steps depending on conditional rules you configure. Each conditional rule consists of:
- A condition: based on user inputs, UTM parameters, URL parameters, or other context available in your funnel
- A destination: the step to navigate to when the condition is met
You can add as many rules as needed. Rules are evaluated top to bottom, so order matters.
Experiment stepsβ
Experiment steps let you A/B test different paths through your funnel. When a visitor reaches an experiment step, they are randomly assigned to one of the configured variants, and each variant routes them to a different downstream step.
To add an experiment step:
- Click Add page in the left sidebar
- Select Experiment
The experiment step is created with a default A/B split. Connect each variant's output to the step where that branch should begin. You can configure up to 4 variants.
When you publish a funnel containing an experiment step, the experiment starts running automatically. For full details on configuring experiments, viewing results, and rolling out a winner, see Experimenting with funnels.
Checkout stepsβ
Checkout steps handle the payment flow. To add a checkout:
- Click Add page in the left sidebar
- Select Checkout
Checkout steps are automatically configured to use your configured payment provider (Web Billing or Paddle) and will display the appropriate payment interface based on your project's configuration.
Checkout steps use the app configuration and offering settings from your funnel's settings. Make sure your funnel is associated with the correct app and offering before adding checkout steps.
Ending a funnel without checkout (beta)β
Funnels can also be ended without a checkout step if your intention is to have the user checkout elsewhere.
This may be useful in cases like:
- An anonymous marketing funnel that ends with a button to download your app.
- A funnel that hands off to your existing checkout system, passing the App User ID so you can associate the funnel session with the resulting purchase.
- Replacing RevenueCat's Redemption Link button with a custom deep link (for example, a deferred deep link from an attribution provider), with the App User ID appended.
This feature is available on request. Contact RevenueCat support describing your use case so we can help you setup your funnel.
Connecting stepsβ
Steps are connected via triggers and actions. A trigger is an event that occurs on a step (like a button press), and an action defines what happens next (like navigating to another step).
Connecting steps visuallyβ
In Interaction mode, you can connect steps by:
- Hovering over a step node to see available trigger handles
- Dragging from a trigger handle to another step's target handle
- The connection will be created automatically
Supported triggersβ
Different components on your screens can trigger navigation:
| Trigger | Description | Can connect to |
|---|---|---|
| Button press | When a user clicks a button component | Any screen or checkout step |
| Purchase button press | When a user clicks a purchase button | Checkout steps only |
| Option selection | When a user selects an option in an input component that's setup to immediately advance them | Any screen with an option component |
Configuring trigger actionsβ
When you connect a trigger to a step, you can configure the action:
- Click on the connection (edge) between two steps
- In the settings panel, you can configure:
- Target step: Which step to navigate to
- Conditional logic: Determine which step to navigate to based on conditions like UTM parameters, visitor demographics, other URL parameters, or visitor inputs
Customizing screen contentβ
When you select a screen step and enter Design mode, you'll use the same powerful editor that powers RevenueCat Paywalls. This means you have access to all the same components:
Available componentsβ
| Component | Description | Use case |
|---|---|---|
| Text | Customizable text strings | Headlines, descriptions, instructions |
| Image | Uploaded images | Branding, illustrations, screenshots |
| Video | Uploaded videos | Product demos, testimonials |
| Icon | Pre-built icons | Visual indicators, feature highlights |
| Stack | Container for other components | Layout organization |
| Button | Interactive buttons | Navigation, actions, links |
| Purchase Button | Purchase call-to-action | Direct users to checkout |
| Input: Single Choice | Select a single option from a list | Survey questions, preference selection |
| Input: Multiple Choice | Select a configurable number of options from a list | Multi-select questions |
| Input: Text | Free-form text field | Email capture, name collection, open-ended survey answers |
| Package | Product/package display | Show available products |
| Carousel | Swipeable content pages | Feature showcases |
| Timeline | Sequential item display | Process steps, milestones |
| Tabs | Tabbed content sections | Organize multiple packages into groups |
| Countdown | Live countdown timer | Urgency, deadlines |
Input componentsβ
Input components let you collect data from visitors as they move through your funnel. Three types are available:
- Single Choice β visitor picks one option from a list
- Multiple Choice β visitor picks multiple options from a list
- Text Input β visitor enters free-form text (e.g. an email address, a name, or an open-ended survey answer)
Single Choice and Multiple Choice structureβ
Choice components have a hierarchical structure:
-
Single Choice or Multiple Choice component: The container component that all child components are nested within
- Identifier: A unique identifier for the field (required for publishing). This ID is used to reference the field's value in conditional logic.
- Required: Whether the user must make a selection on this input before being allowed to proceed
- Selection Range (Multiple Choice only): Constrains how many options can be selected:
- Unlimited: Users can select any number of options
- Exact: Users must select exactly a specified number (e.g., exactly 2)
- Range: Users must select between a minimum and maximum number (e.g., 1-3 options)
-
Options: Individual selectable options nested inside the input component
- Option ID: A unique identifier for the option (required for publishing)
- Option Value: The value that will be stored when this option is selected (required for publishing)
- Stack: Contains other components (like text or images) that define how the option appears visually
Text Input structureβ
A Text Input component has a single field that visitors type into. Configurable properties include:
- Identifier: A unique identifier for the field (required for publishing). Used to reference the field's value in conditional logic and when retrieving the response.
- Required: Whether the visitor must enter a value before being allowed to proceed.
- Keyboard type: Hint for the on-screen keyboard and browser validation. Supported values:
text,email,tel,numeric,decimal, andurl. - Text capitalization: Controls automatic capitalization on supported devices. Options:
none,sentences,words,characters. - Placeholder: Localized placeholder text shown inside the empty field, with its own font and color settings.
Using input responses in funnelsβ
Input components are particularly powerful because:
-
Trigger navigation: When a visitor selects an option in a Single Choice or Multiple Choice, it can immediately trigger navigation to another step. Configure this by connecting the option's trigger handle to a target step in Interaction mode.
-
Conditional logic: Input values can be referenced in conditional expressions to determine which step a visitor navigates to next. Reference the field's value using the field identifier you configured.
Every value a visitor enters into an input component is saved to their RevenueCat profile as a customer attribute and is visible in the Responses tab on the funnel's details page. This applies to Single Choice selections, Multiple Choice selections, and Text Input values. See Analyzing Funnels for details.
Analytics breakdown by response values and the ability to reference response values as screen content variables are coming soon.
For detailed information about each component and its properties, see the Paywalls Components documentation.
Configuring funnel settingsβ
The Settings panel allows you to configure funnel-wide options:
Initial stepβ
The initial step is the first page users see when they access your funnel. To set the initial step:
- Open the Settings panel from the left sidebar
- Under Initial step, select the step you want to use as the entry point
You can change the initial step at any time, and the change will be saved as part of your draft.
Parametersβ
Funnels support custom parameters that can be passed via URL and used throughout your funnel. Parameters are useful for:
- Including custom tracking data
- Personalizing the experience based on the source
To add a parameter:
- Open the Settings panel
- Under Parameters, click Add parameter
- Configure:
- Name: The parameter name (e.g.,
utm_source) - Type: The data type (
string,string[],number, orboolean)
- Name: The parameter name (e.g.,
Parameters can be referenced in your funnel's components using variables, similar to how paywall variables work.
Standard UTM parameters are automatically captured and made available to your funnel, you do not need to manually add them as URL parameters.You can use them in your funnel's components to personalize the experience based on the source of the visitor.
Saving and publishingβ
Funnels have two states:
| State | Description |
|---|---|
| Draft | Your work-in-progress funnel. Changes are automatically saved as you work. Draft funnels are not accessible via public URLs. |
| Published | Your live funnel that's accessible via shareable URLs. Published funnels can be viewed by users. |
Auto-saveβ
The Funnel Editor automatically saves your changes as you work. You'll see an indicator showing when your last changes were saved.
Publishingβ
To make your funnel live:
- Ensure your funnel has at least one step
- Click Publish in the top-right corner
- Confirm the publish action
Once published, your funnel will be available via shareable URLs for both production and sandbox environments.
When you publish a funnel, the current draft becomes the live version. Users accessing your funnel URL will see the published version. You can continue editing after publishingβchanges will be saved as drafts until you publish again.
Next stepsβ
- Learn how to deploy and share your funnel
- Understand analytics and performance metrics
- Explore Paywalls components for more design options