DocsAutomation & Flow Builder
Back to Docs

Automation & Flow Builder

Build powerful WhatsApp automation flows with our visual drag-and-drop editor.

Creating Your First Flow

1. Go to Dashboard β†’ Automations β†’ New Automation.
2. Give your automation a name and select a Trigger Type.
3. Select the WhatsApp instance this automation will run on.
4. Click Open Flow Builder to start designing your flow.
5. Drag nodes from the right panel onto the canvas.
6. Connect nodes by dragging from one node's output to the next node's input.
7. Click Save and then set the automation to Active.

Trigger Types

β€’ Exact Match β€” Flow starts when user sends exactly your keyword (e.g. "hi").
β€’ Message Contains β€” Flow starts when message contains your keyword anywhere.
β€’ First Message β€” Triggers on the very first message from this contact ever.
β€’ Fallback β€” Catches any message not matched by other automations. Use as a catch-all.
β€’ Webhook β€” External system (Shopify, WooCommerce, API) triggers the flow.

Tip: Keyword matching is case-insensitive.

All Available Nodes Detailed Guide

Here is a complete, in-depth breakdown of every automation node in the Flow Builder and how to use them:

πŸ“¨ Send Message Node:
β€’ Purpose: Sends a text message to the contact.
β€’ Text Formatting: Use standard WhatsApp formatting: *bold*, _italic_, ~strikethrough~, and ```monospace```.
β€’ Personalization: Insert variables anywhere using double curly braces (e.g. "Hello {{contact_name}}").
β€’ System variables available: {{contact_name}} and {{contact_phone}}.

πŸ–Ό Send Media Node:
β€’ Purpose: Sends files like images, videos, audio clips, or documents.
β€’ Configuration:
  - Media URL: Paste a public, direct URL to your file (e.g. https://yoursite.com/image.jpg).
  - Caption: Write a caption for images/videos (supports variables).
β€’ Limits: Ensure files are under 16MB and hosted on a fast public server.

πŸ”˜ Button Message Node:
β€’ Purpose: Sends a message containing up to 3 interactive tap-to-reply buttons.
β€’ Configuration: Fill in the Header (optional), Body Text, Footer Text (optional), and add 1 to 3 buttons.
β€’ User Interaction: When a user taps a button, its text is sent back to the chat, triggering subsequent connected nodes.

πŸ“‹ List Message Node:
β€’ Purpose: Sends a structured menu of choices that pops up on tap.
β€’ Configuration:
  - Button Text: The title of the menu button (e.g., "Select Option").
  - Sections & Items: Create up to 10 items. Each item must have a Title (max 24 characters) and an optional Description.
β€’ Best Use: Ideal for complex choices, product catalogs, or FAQs.

πŸ“Š Poll Node:
β€’ Purpose: Asks a question using native WhatsApp poll choices.
β€’ Configuration: Set the Question and define the list of choices. You can toggle "Allow multiple selections" on or off.

☰ Menu Options Node:
β€’ Purpose: Builds traditional text-based numbered menus (e.g., "Reply 1 for Sales, 2 for Support").
β€’ Setup: Define the options list. The flow builder will create corresponding numbered output paths automatically.

πŸ“₯ Collect Input Node:
β€’ Purpose: Asks a question and saves the customer's answer in a custom variable.
β€’ Configuration:
  - Question: The text sent to the user (e.g., "Please enter your email").
  - Variable Name: Save input to a variable (e.g., customer_email).
  - Validation: Choose validation rules (Text, Number, Email, Date, or Custom Regex). If the user inputs an invalid answer, the bot will retry the question automatically.

⏳ Delay Node:
β€’ Purpose: Pauses the execution of the flow for a set duration.
β€’ Configuration: Enter a duration in seconds (1 to 60).
β€’ Best Practice: Use a 1-3 second delay between consecutive messages to make the bot look natural and human.

πŸ”€ Condition Node:
β€’ Purpose: Branches the flow into "True" and "False" paths based on logic.
β€’ Configuration: Define rules using conditions:
  - Variables: Compare variables (e.g., {{age}} is greater than 18).
  - CRM: Check contact status (e.g. has tag "VIP", or is in funnel stage "Closed-Won").
  - Operators: Equals, Contains, Starts With, Is Empty, Exists, Less Than, Greater Than.

πŸ’Ύ Save Contact Node:
β€’ Purpose: Instantly registers the customer in your built-in CRM database.
β€’ Configuration: Assign contact name, marketing/pipeline Tags, assign a default Owner/Agent, and set the Funnel Stage.

πŸ€– AI Control Node:
β€’ Purpose: Dynamically hand over the conversation to the AI Agent or turn it off.
β€’ Configuration: Select "Enable AI" or "Disable AI".
β€’ Best Practice: Turn AI OFF when starting a structured form flow, and turn AI back ON when the form is finished so the AI handles subsequent queries.

🌐 HTTP Request Node:
β€’ Purpose: Integrates with external APIs (databases, CRMs, WooCommerce, Zapier, n8n).
β€’ Configuration:
  - Method: GET, POST, PUT, DELETE, PATCH.
  - URL: The target endpoint.
  - Headers & Body: Send authentication tokens or JSON payloads using variables.
  - Save Response: Extract JSON values from the API response and map them to variables for use later in the flow.

πŸ”š End Chat Node:
β€’ Purpose: Closes the current active automation session for this user.
β€’ Action: Resets their session state so that the next message they send will trigger a brand new automation trigger.
β€’ Best Practice: Always place an End Chat node at the end of completed flows.

Using Variables

Variables store user responses so you can personalize messages.

Step 1 β€” Collect a variable:
β€’ Add a Collect Input node.
β€’ Set the question (e.g. "What is your name?").
β€’ Set the variable name β€” letters only (e.g. name, phone, email).

Step 2 β€” Use the variable:
β€’ In any message node, type {{variable_name}}.
β€’ Example: Hello {{name}}! How can I help you?

Step 3 β€” Send to API:
β€’ In an HTTP Request node, include {{name}} in your request body.
β€’ Save the API response in a new variable (e.g. order_status).

System variables available:
β€’ {{contact_name}} β€” Contact's saved name
β€’ {{contact_phone}} β€” Contact's phone number

Variable Helper (Ctrl+H)

Finding and typing variable names manually can be slow. The Variable Helper makes it instant!

How to use it:
1. Open any of your automation flows in the Flow Builder.
2. Press Ctrl + H on your keyboard at any time.
3. A modal will pop up showing every variable available in your current flow.
4. Click the copy icon next to any variable to copy it to your clipboard.
5. Paste it right into your message or API node.

What it finds automatically:
β€’ Custom Variables β€” From your "Collect Input" nodes.
β€’ CRM Variables β€” From your "Save Contact" nodes.
β€’ HTTP Response β€” Extracting JSON paths from your "HTTP Request" setup.
β€’ Webhook Payload β€” If your flow starts with a Webhook Trigger, it fetches your latest test request logs and builds a variable map automatically.

Google Sheets Integration Node

Automatically sync data between your automation flows and Google Sheets in real-time.

Prerequisites:
β€’ Connect your Google Account on the Dashboard β†’ Integrations page first.

How to configure the Google Sheets node in the Flow Builder:
1. Drag the Google Sheets node from the node panel onto the canvas.
2. Connect it at the desired stage in your flow.
3. Click the node to open the settings panel on the right.
4. Choose an Action:
   β€’ Append Row: Add a new row to the end of the sheet.
   β€’ Update Row: Search for an existing row and update specific columns.
   β€’ Read Row: Search for a row and load its data into flow variables.
5. Enter the Spreadsheet ID:
   β€’ Open your Google Sheet in a browser.
   β€’ Copy the long string of letters and numbers from the URL:
     https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID_HERE]/edit
   β€’ Paste this ID into the Spreadsheet ID input box.
6. Select the Sheet Name (Tab):
   β€’ The system will automatically fetch available tabs (e.g. Sheet1). Select the correct one.

Action Configuration:
β€’ Append Row & Update Row:
  - The first row (Row 1) of your sheet MUST contain column names (Headers).
  - The node settings panel will display these headers.
  - Map each header to a flow variable (e.g. for a Name column, map it to {{name}}).
β€’ Update Row & Read Row (Search Row setup):
  - Lookup Column: Select the column you want to search (e.g. Phone).
  - Lookup Value: Set the value to search for (e.g. {{contact_phone}}).
β€’ Read Row (Save to Variable):
  - Enter a variable name (e.g. user_data).
  - Access these fields later in any message or HTTP request node as {{user_data.ColumnName}}.
    Example: "Hi {{user_data.Name}}, your balance is {{user_data.Balance}}."
Automation & Flow Builder β€” Docs