Skip to main content

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’s type determines its role:
TypePurpose
StartThe entry point — the first layer the contact sees. Carries the funnel’s initial data.
IntermediateA normal step that collects data and/or shows content, then navigates on.
ResultCompletion / exit. Reaching it completes the session and can trigger an automation.
FatalisticA dead-end response (error or access denied) with no outbound navigation.
ActionRuns server-side actions (auth, API call, checkpoint, …) then forwards automatically — never shown to the contact. See Funnel rules.
SubfunnelDelegates to another funnel and maps data in and back out. See Funnel rules.
Each layer carries an ordered list of components — the building blocks the contact interacts with. The full catalog (messages, inputs, buttons, endpoint, auth) lives on the Funnel components page.

Channels

The same funnel model renders across channels. Conversational channels render one component at a time; web renders the whole layer at once:
ChannelConversationalNotes
WebNoFull component palette and navigation buttons.
SMSNoText-only, with a limited set of message and input appearances.
WhatsAppYesOne component at a time; structured message formats. Authentication is implicit (the phone number is proven by the channel).
Web chatYesOne 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/POST values 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.
For example, show a different welcome message when 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:
StatusMeaning
in_progressThe contact is still moving through the funnel.
completedThe contact reached a result layer.
closedClosed by a user or by a system action.
abandonedLeft without completing.
Resumption lets a contact pick up where they left off — via browser storage or cookies (web), phone number or contact id (messaging), or a magic link (email / SMS). When resumption is active, a contact can navigate back to review or edit earlier answers. A session timeout is configurable per funnel; after inactivity, the session expires.

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

PropertyTypeRequiredDescription
titlestringYesDisplay name.
slugstringYesIdentifier.
descriptionstringNoOptional description.
channelenumNoweb, whatsapp, web_chat, or sms. Default web.
configobjectNoFunnel-level config — availability/access control and the start and fatalistic layers.
versionsarrayAutoThe language/environment/status versions.

Seeds

Funnels travel between environments as structural Seeds. A funnels item carries the funnel plus its versions, and each version carries its layers and their components:
[
  {
    "object_type": "funnels",
    "data": {
      "title": "Quote your car",
      "slug": "quote-your-car",
      "description": "Lead capture for a car-backed loan.",
      "channel": "web",
      "versions": [
        {
          "language": "en",
          "environment": "production",
          "status": "draft",
          "layers": [
            {
              "title": "Quote your car",
              "slug": "quote-your-car",
              "type": "start",
              "requires_auth": false,
              "components": [
                {
                  "title": "Instructions",
                  "slug": "instructions",
                  "type": "message",
                  "message_type": "compound",
                  "content": {
                    "message": { "header": "Quote your car!", "body": "<p>Tell us what car you have.</p>" }
                  }
                },
                {
                  "title": "Year",
                  "slug": "year",
                  "type": "input",
                  "input_type": "text",
                  "config": { "appearance": "short", "mandatory": true }
                },
                {
                  "title": "Continue",
                  "slug": "continue",
                  "type": "button",
                  "button_type": "navigation",
                  "config": { "action": "jump_to_layer", "default_target": "enter-your-number" }
                }
              ]
            }
          ]
        }
      ]
    }
  }
]

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.

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.