Overview
An Engagement Funnel is a structured, multi-step interactive flow that guides a contact through data collection, decisions, and engagement. It’s the engine behind landing-page flows, lead forms, quizzes, and conversational (WhatsApp / web chat) bots. A funnel is an ordered graph of layers (steps); each layer holds components (messages, inputs, buttons, endpoint calls, auth forms). As a contact moves through it, a session records every answer, the path taken, and completion. For how Funnels fit the platform, see Core concepts.Where to find it
Engagement Funnels live under Orchestration → Engagement Funnels, built on a visual canvas where layers are nodes and navigation between them is the edges.Layers
A funnel is a sequence of typed layers. Each layer’stype determines its role:
| Type | Purpose |
|---|---|
| Start | The entry point — the first layer the contact sees. Carries the funnel’s initial data. |
| Intermediate | A normal step that collects data and/or shows content, then navigates on. |
| Result | Completion / exit. Reaching it completes the session and can trigger an automation. |
| Fatalistic | A dead-end response (error or access denied) with no outbound navigation. |
| Action | Runs server-side actions (auth, API call, checkpoint, …) then forwards automatically — never shown to the contact. See Funnel rules. |
| Subfunnel | Delegates to another funnel and maps data in and back out. See Funnel rules. |
Channels
The same funnel model renders across channels. Conversational channels render one component at a time; web renders the whole layer at once:| Channel | Conversational | Notes |
|---|---|---|
| Web | No | Full component palette and navigation buttons. |
| SMS | No | Text-only, with a limited set of message and input appearances. |
| Yes | One component at a time; structured message formats. Authentication is implicit (the phone number is proven by the channel). | |
| Web chat | Yes | One component at a time; same component set as WhatsApp. |
Multi-channel rule: if any layer uses a feature a channel doesn’t support, that
channel is disabled for the whole funnel unless an alternative is configured for it
in every layer. For example, a file-upload input needs an SMS-friendly alternative
for the funnel to remain available on SMS.
Initial data
A funnel’s start layer can define the structure of its initial data — fields that can be provided when the funnel starts, to pre-populate the session from external sources. Those values are then available throughout the funnel, including in conditions. Common sources:- URL parameters — query/
GET/POSTvalues such as UTM tags or referral codes. - Prior session — data from the contact’s previous run.
- Device & locale — language, device type, OS, browser.
- Custom context — values you pass in, such as affiliate or campaign IDs.
utm_source = "facebook", or adjust
the layout when device_type = "mobile".
Versioning & publishing
Every funnel is versioned by language × environment × status (draft /
published):
- Structure is shared across the languages of an environment — editing a layer’s type, order, or rules propagates to every language draft of that environment.
- Content is language-specific — only the components’ text/content varies per language.
- Publish copies a draft to published (after validation) and records an immutable release; unpublish removes the published version but keeps the draft.
- Contacts are only ever served the published version for their resolved language/environment.
Sessions
A session tracks one contact’s run through a funnel. It records the cumulative data submitted and autofilled, the current layer, the history of visited layers, and a status:| Status | Meaning |
|---|---|
in_progress | The contact is still moving through the funnel. |
completed | The contact reached a result layer. |
closed | Closed by a user or by a system action. |
abandoned | Left without completing. |
Statistics
Funnels track engagement events — visits, conversions, completions, per-layer completions, and button clicks — which roll up into metrics:- Conversion rate — conversions ÷ sessions.
- Completion rate — completed sessions ÷ sessions.
- Layer-to-layer rate — how many sessions reached each layer (drop-off analysis).
- Multi-channel performance — conversion rates per channel.
Properties
| Property | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Display name. |
slug | string | Yes | Identifier. |
description | string | No | Optional description. |
channel | enum | No | web, whatsapp, web_chat, or sms. Default web. |
config | object | No | Funnel-level config — availability/access control and the start and fatalistic layers. |
versions | array | Auto | The language/environment/status versions. |
Seeds
Funnels travel between environments as structural Seeds. Afunnels item carries the funnel plus its
versions, and each version carries its layers and their components:
Governance & permissions
Only a super admin or Master can create, edit, publish, and delete funnels.API access
Funnels have two API surfaces: a User API for the builder (CRUD on funnels, layers, and components, plus versioning and publish/unpublish), and a Contact API for the runtime player (fetch the published funnel, submit answers, and navigate). See the API reference.In depth
Funnel components
The full catalog — messages, inputs, buttons, endpoint, and auth.
Funnel rules
Access control, skip conditions, jump conditions, autofill, subfunnels, and action layers.
Related
Events & Automation
What a result layer or checkpoint triggers.
Conversations
The conversational runtime for WhatsApp and web chat.
Contacts
Who moves through a funnel, and where its data lands.