Skip to content

📥 Question Node (Capture Input)

Purpose

The Question node (also called "Capture Input") asks the customer a question and saves their answer into a variable. This variable can then be used in later nodes — in messages, conditions, email bodies, or API calls.


Business Scenario

Use the Question node when you need to:

  • Collect customer information — name, email, phone number, company name
  • Gather lead details for follow-up by your sales team
  • Capture preferences — product interest, appointment date, budget range
  • Build forms — chain multiple Question nodes to create a multi-step form

Configuration

Field Description
Question The message sent to the customer asking for input (e.g., "What's your name?")
Save as Variable The variable name where the answer is stored. Uses {{variable_name}} format. Must be lowercase letters, numbers, and underscores.
Input Type Validates the customer's response format
Required Whether the customer must answer (or can skip after a few tries)
Validation Pattern Advanced: a regex the answer must match
Variable Scope How long the variable is remembered
Node Title Internal name (visible only to you)

Input Types

Type Description Validation at runtime
Text Any free-form text Accepted as-is
Number Numeric values only Digits with optional decimal point and minus sign
Phone Phone number format Optional +, 7–15 digits; spaces and dashes are tolerated
Email Email address format Standard [email protected] shape
Choice List (Select) Customer picks from a predefined list Reply must match one of your options (case-insensitive — the saved value is canonicalised to your exact option text)

Choice List

When Input Type is Select, an extra field appears where you enter one option per line. These are shown to the customer as a tappable WhatsApp list. The selected value is saved to the variable.

What Happens on Invalid Input

The assistant validates every answer against the input type (and your regex, if set). An invalid answer gets a retry prompt. After 3 invalid attempts, the customer is shown a recovery menu instead of being stuck in a loop:

Recovery option Shown when What it does
Try Again Always Re-asks the question with a fresh attempt counter
Skip This Field Only if the field is not required Leaves the variable empty and moves to the next node
Talk to Human Always Hands the conversation off to a live agent (see Human Handoff)

Variable Scope

Scope Description
Conversation The variable resets every time a new conversation starts. Best for temporary data like menu selections.
Contact The variable persists across all conversations with this customer. Best for name, email, and other permanent data.

Contact scope is not active yet

The Contact scope can be selected in the designer, but the runtime currently stores all captured variables per conversation. Cross-conversation persistence is planned — until then, treat every variable as Conversation-scoped.


Properties

Property Type Required Default Description
title Text No "" Internal node name
prompt Text Yes "" The question shown to the customer
variableName Text Yes input Variable name (lowercase, underscores)
inputType Select Yes text Expected input format
required Boolean No true Whether the customer must answer
options List Only if type = select — Choice options (one per line)
validationRegex Text No — Regex pattern the answer must match
scope Select Yes conversation Variable persistence
label Text No — Optional display label

Inputs

Handle Type Description
Top (↑) Target Receives a connection from any preceding node

Outputs

Handle Type Description
Bottom (↓) Continue Connects to the next node (runs after the customer answers)

Connection Rules

  • ✅ Can receive connections from any node type
  • ✅ Can connect to any node type
  • ✅ Commonly followed by another Question (form chain), a Condition, or a confirmation Message
  • ⚠️ No outgoing connection means the conversation stops after the answer (dead end warning)

Example Flow Diagram

Lead Capture Form

flowchart TD
    A["📋 Menu"] -->|"Get a Quote"| B["📥 Ask Name<br/><em>What's your name?</em><br/>→ {{name}}"]
    B --> C["📥 Ask Email<br/><em>What's your email?</em><br/>→ {{email}}"]
    C --> D["📥 Ask Phone<br/><em>What's your phone number?</em><br/>→ {{phone}}"]
    D --> E["💬 Confirmation<br/><em>Thanks {{name}}! We'll contact you at {{email}}.</em>"]
    E --> F["✉️ Send Email<br/><em>New lead: {{name}}</em>"]

    style B fill:#cffafe,stroke:#22d3ee,stroke-width:2px
    style C fill:#cffafe,stroke:#22d3ee,stroke-width:2px
    style D fill:#cffafe,stroke:#22d3ee,stroke-width:2px
    style E fill:#dbeafe,stroke:#60a5fa,stroke-width:2px
    style F fill:#ccfbf1,stroke:#2dd4bf,stroke-width:2px

Using Captured Variables

Any later node that renders text — Message bodies, Menu text, Question prompts, Send Email subject/body, Document/Image captions — can include {{variable_name}} and it is replaced with the captured value when the message is sent.

  • An undefined variable renders as an empty string — the raw {{...}} token is never shown to the customer.
  • Whitespace inside the braces is tolerated: {{ name }} works the same as {{name}}.

Built-in Variables

These are always available without a Question node:

Variable Value
{{customerName}} The customer's WhatsApp profile name
{{customerPhone}} The customer's phone number
{{tenantName}} Your business name
{{timestamp}} The current date/time
{{conversationId}} Internal conversation reference (useful in emails to agents)

Best Practices

  • ✅ Use descriptive variable names — customer_name is better than input1.
  • ✅ Set the right input type — this adds validation and improves the customer experience (e.g., phone keyboards appear for phone type).
  • ✅ Use Contact scope for permanent data — name, email, and phone should persist across conversations.
  • ✅ Use Conversation scope for temporary data — menu selections, quote quantities, etc.
  • ✅ Keep questions short and clear — "What's your email?" is better than "Could you please provide us with your email address so we can get back to you?"
  • ✅ Follow up with a confirmation — show the customer what you captured.

Common Mistakes

Mistake What Happens Fix
Variable name with spaces or capitals Validation error Use lowercase with underscores: customer_name
Forgetting to connect to next node Dead end — conversation stops Connect to a Message, Menu, or next Question
Using {{variable}} before it's captured The placeholder renders as empty text (e.g. "Thanks !") Make sure the Question node appears before any node that uses its variable
Select type with no options listed Customer sees an empty list Add at least one option

  • 💬 Message — Use after a Question to confirm the captured value
  • 🔀 Condition — Check the captured value to branch the flow
  • ✉️ Send Email — Include captured variables in email notifications
  • ⚡ API Action — Send captured data to an external system
  • 📋 Menu — Often precedes a Question (e.g., "Get a Quote" → capture details)