Authentication & access control
Funnels protect access at two levels. Funnel availability. A funnel can be gated behind an availability window or date range. When access is denied, the contact is routed to the funnel’s fatalistic layer. Availability supports either a reusable publishing window or an explicit start/end range. Per-layer authentication. Each layer can require an authenticated contact:| Field | Meaning |
|---|---|
requires_auth | The layer requires an authenticated contact. |
unauthenticated_target_layer | Where to send an unauthenticated contact. |
authenticated_target_layer | Where to send an already authenticated contact (e.g. to skip a login layer). |
Skip conditions
Skip conditions let a layer be bypassed automatically when its data is already known (typically after autofill). Each condition reads a value from the session by its slug and compares it; all conditions on a layer must pass for it to be skipped.| Operator | Passes when |
|---|---|
not_empty / empty | The value is / isn’t present. |
== / != | Loose equality / inequality. |
> >= < <= | Numeric comparison. |
contains / not_contains | Substring match. |
must_be_true / must_be_false | The value normalizes to a boolean. |
input_type | The value’s detected type matches (text/number/boolean/file/media/location). |
Allow skip
allow_skip is the master switch. A layer is skipped only when allow_skip is on,
auto_fill is on, and its skip conditions all pass. A layer the contact already
skipped is shown again if they navigate back, so a previously skipped answer can be
edited.
Layer jump & jump conditions
Navigation between layers is driven by navigation buttons. A button either goes to the previous layer or jumps to a layer. A jump can carry ordered conditions grouped by target: the funnel walks the targets in order and goes to the first target whose conditions all pass, falling back to the button’s default target if none match. A condition can compare:- Session data — a session field against a fixed value or another session field, using the operators above.
- Contact match — whether the current contact matches a query (for example, belongs to a given segment or has a given attribute).
Autofill
Autofill pre-populates inputs so the contact doesn’t re-enter known data. It’s enabled per layer (auto_fill) and configured per input with a source:
| Source | Pulls from |
|---|---|
| Attribute | A contact attribute (e.g. identifiers.email). |
| Previous session | The value from the contact’s most recent completed session. |
| Initial data | A value supplied as the funnel’s initial data when it started. |
allow_overwrite is off and the field already has a value, autofill leaves it
alone. Autofilled values are validated against the input’s rules; a value that
fails validation is dropped.
Subfunnels
A subfunnel layer delegates to another funnel and maps data in and back out:- Entering — the target funnel must exist, have a published version and a result layer, and not create a loop. Values are mapped from the parent session into the child’s initial data and pre-validated against the child’s start layer.
- Exiting — when the child completes, selected values are copied back into the parent session, and the parent jumps to the subfunnel layer’s default target.
Action layers
An action layer runs one or more server-side actions and then forwards automatically — it’s never shown to the contact. Available actions:| Action | Purpose |
|---|---|
| API call | Call an external API with custom headers and parameters. |
| Auth | Run an authentication flow — login, register, register a lead (no password), send an OTP / magic link, or verify a contact. |
| Checkpoint | Fire an event automation with the session data collected so far. |
| Endpoint | Call an internal endpoint and map the response into the session. |
| Handoff | Transfer the conversation to another template and funnel. |
| Reverse handoff | Close the current conversation and reactivate the parent. |
| Close session | Close another funnel’s active session for the contact. |
Sensitive fields (passwords, OTPs, tokens) are never stored in the session —
they’re read from the live submit at execution time.
Related
Engagement Funnels
Back to the funnel overview.
Funnel components
The components these rules act on.
Events & Automation
What checkpoints and result layers trigger.