Funnel variables
For anyone personalizing funnel content or routing. You'll have a way to capture an answer and reuse it anywhere in the funnel. You need a funnel with at least one question.
Common use cases:
- Display the user's name on later pages.
- Conditionally show or hide text based on a selected answer.
- Compute values such as future dates, totals, or BMI.
- Customize pages and paywalls based on user intent.
Types of variables#
- Simple — bound directly to a question or a system-provided field (email,
app_user_id). Use these for the common case: name-based greetings, copy that swaps based on a single-choice answer, displaying a value the user typed. - Advanced — computed with logic. Use these to combine multiple variables in conditions, run calculations, generate dynamic values like a future date, or fetch data from an external source via JavaScript.
Simple variables#
Every question has an output variable named after its key. Ask "What's your age" with key age; reference it as {{age}} anywhere downstream.
System-provided simple variables include email, app_user_id, and payment-provider ids like _stripeCheckoutSessionId.
Advanced variables#
Define an expression that computes from other variables, constants, or external data. Example: a displayName that falls back to "friend" if firstName isn't set, a goalDate that adds 30 days to today, or a value fetched at runtime from your own API.
Using variables in content#
Drop {{variableName}} into any text field: headings, body copy, button labels, Deep Link Button URLs, advanced-condition logic.
Why variables matter#
Variables are the bridge between what the user told you and what the page looks like. They also feed into flow conditions, which pick the next page based on the values.
Component IDs and the webhook payload#
Variables drive what you display or compute inside the funnel — placeholder text, advanced expressions, flow conditions. They do not control the Registration webhook payload.
The webhook keys each answer off the question's Component ID, set on the question component in the builder. To get stable, readable keys in the payload (gender instead of answer_42), set a Component ID on every question whose answer your backend depends on.
For choice questions, the webhook value is an auto-generated option ID (sequential numeric strings: "1", "2", "3", …). Each answer entry also includes an optional label with the chosen option's display text, so you usually don't need to resolve IDs at all. When you do need a full per-option mapping (e.g. to render every answer label in a multi-select array), export the Variables Schema from the top-right of the Variables tab. Option IDs are stable — deleting an option doesn't renumber the others, and new options get the next available ID.