Design conversation flows with a visual drag-and-drop editor featuring branching logic, input types, and reusable templates.
The Flow Builder lets you create guided conversation flows without writing any code. Access it from your WordPress admin dashboard by navigating to Helpon → Flows. From there you can create new flows, edit existing ones, duplicate flows, and organize them into folders.
Flows are ideal for structured interactions where you need to collect information step by step, qualify leads, triage patient inquiries, book appointments, or walk visitors through a decision tree. Each flow consists of connected nodes that define what the chatbot says, what it asks, and how it responds to user input.
Flows provide deterministic, scripted conversations while AI Chat handles open-ended questions. You can combine both by using a flow to collect initial data and then handing off to AI for follow-up. Flows always take priority when a trigger condition matches.
The visual editor is a drag-and-drop canvas where you design your conversation flows. Nodes are placed on the canvas and connected with lines to define the conversation path. The editor supports the following controls:
| Action | Mouse | Keyboard Shortcut |
|---|---|---|
| Pan canvas | Click and drag on empty space | Hold Space + drag |
| Zoom in/out | Scroll wheel | Ctrl + / Ctrl - |
| Fit to screen | Double-click empty space | Ctrl 0 |
| Select node | Click on node | Tab to cycle through nodes |
| Multi-select | Hold Shift + click |
Ctrl A to select all |
| Delete node | Right-click → Delete | Delete or Backspace |
| Duplicate node | Right-click → Duplicate | Ctrl D |
| Undo / Redo | Toolbar buttons | Ctrl Z / Ctrl Shift Z |
| Connect nodes | Drag from output port to input port | — |
| Toggle mini-map | Click mini-map icon | Ctrl M |
Enable the mini-map for complex flows with many nodes. It provides a bird's-eye view of the entire canvas and lets you quickly navigate to any section by clicking on the mini-map.
Each node in the Flow Builder serves a specific purpose. Drag nodes from the left panel onto the canvas to build your conversation path.
| Node | Icon | Description | Use Case |
|---|---|---|---|
| Message | 💬 | Sends a text message, image, or rich card to the visitor. Supports Markdown formatting and dynamic variables. | Welcome greetings, information delivery, confirmation messages |
| Question | ❓ | Asks the visitor a question and waits for a response. Supports various input types (text, buttons, date pickers, etc.). | Collecting names, emails, selecting services, gathering symptoms |
| Condition | 🔀 | Evaluates an expression and branches the flow based on the result. Supports multiple output paths. | Routing based on visitor answers, checking business hours, validating input |
| Action | ⚡ | Performs a background operation such as setting a variable, sending an email, creating a contact, or triggering a webhook. | Saving data to CRM, sending notifications, booking appointments, API calls |
| Delay | ⏳ | Pauses the flow for a specified duration before continuing to the next node. Simulates natural typing speed. | Adding realistic typing delays, waiting for external processes, timed follow-ups |
| Transfer | 👥 | Hands the conversation to a live agent, a specific department, or another flow. Includes queue and fallback options. | Escalating to human support, routing to specialists, jumping to sub-flows |
| End | ⏹ | Terminates the flow. Optionally displays a closing message and marks the conversation status (resolved, abandoned, etc.). | Completing a booking, ending a support session, closing a survey |
A Start node is automatically created when you build a new flow. You must connect at least one End node to ensure the conversation closes properly. Flows without an End node will leave sessions open indefinitely.
Question nodes support multiple input types that control how visitors provide their answers. Choose the input type that best fits the data you need to collect.
| Input Type | Description | Example |
|---|---|---|
| Text Input | Free-form text field. Supports validation rules such as minimum length, maximum length, and regex patterns. | "What is your full name?" |
| Buttons | Clickable button options. Each button can have a label, a value, and an optional icon. Maximum of 10 buttons per question. | "Select a department:" with buttons for Dental, Orthodontics, Cosmetic |
| Quick Replies | Horizontal pill-shaped options that disappear after selection. Ideal for short, single-choice answers. | "Are you a new or existing patient?" with pills: New Patient, Existing Patient |
| Date Picker | Calendar widget for selecting dates. Supports min/max date ranges, disabled days of the week, and blocked specific dates. | "Choose your preferred appointment date:" |
| File Upload | Allows visitors to upload files. Configurable allowed file types (images, PDFs, documents), max file size, and max number of files. | "Please upload your insurance card (image or PDF):" |
| Slider | Numeric range slider with configurable min, max, step, and default values. Shows current value in real time. | "Rate your pain level (1-10):" |
| Rating Stars | Star-based rating input (1 to 5 stars). Useful for collecting satisfaction scores and feedback. | "How would you rate your experience?" |
| Carousel | Horizontally scrollable cards with image, title, description, and action button. Each card acts as a selectable option. | "Browse our available services:" with cards showing each service |
{
"type": "buttons",
"question": "What service are you interested in?",
"options": [
{ "label": "General Dentistry", "value": "general", "icon": "tooth" },
{ "label": "Orthodontics", "value": "ortho", "icon": "braces" },
{ "label": "Cosmetic", "value": "cosmetic", "icon": "sparkle" },
{ "label": "Emergency", "value": "emergency", "icon": "alert" }
],
"variable": "selected_service"
}
Branching logic lets you create dynamic conversations that adapt based on visitor responses, data conditions, and external factors. Use Condition nodes to split the flow into multiple paths.
Drag a Condition node from the node panel onto the canvas. Connect it to the output of the node whose result you want to evaluate.
Click the Condition node to open its settings panel. Select the variable to evaluate (e.g., {{selected_service}}), choose an operator (equals, contains, greater than, etc.), and enter the comparison value.
Each condition has at least two output ports: True (green) and False (red). Drag connections from these ports to the next nodes in each branch path. For switch cases, each case value creates its own output port.
Always connect the Default (else) output to a fallback node. This catches any input that does not match your defined conditions, preventing the flow from getting stuck.
Every branch must eventually lead to an End node or loop back to another part of the flow. Unconnected branches will cause the flow to hang, leaving the visitor without a response.
Variables store data collected during the flow and can be used in messages, conditions, and actions. Helpon supports several variable types that you can reference using double-curly-brace syntax.
| Variable Type | Prefix | Description | Example |
|---|---|---|---|
| Session Variables | session. |
Data collected from the current flow session (question answers, action results). | {{session.selected_service}} |
| Visitor Data | visitor. |
Information about the visitor: browser, location, referrer, page URL, visit count. | {{visitor.city}} |
| Contact Data | contact. |
CRM contact fields for returning visitors: name, email, phone, tags, custom fields. | {{contact.first_name}} |
| Custom Variables | custom. |
User-defined variables set via Action nodes. Can store computed values, API responses, or transformed data. | {{custom.total_cost}} |
| System Variables | system. |
Built-in values: current date/time, business hours status, agent availability, flow name. | {{system.current_time}} |
Hi {{contact.first_name | default:"there"}}! Thanks for choosing
{{session.selected_service}}. Your appointment is confirmed for
{{session.appointment_date | date:"F j, Y"}} at {{session.appointment_time}}.
We'll send a confirmation to {{session.email}}.
| Operator | Symbol | Description |
|---|---|---|
| Equals | == |
Exact match (case-insensitive for strings) |
| Not Equals | != |
Does not match the given value |
| Contains | contains |
String includes the given substring |
| Starts With | starts_with |
String begins with the given prefix |
| Ends With | ends_with |
String ends with the given suffix |
| Greater Than | > |
Numeric comparison, value is greater |
| Less Than | < |
Numeric comparison, value is less |
| Is Empty | is_empty |
Variable has no value or is null |
| Is Not Empty | is_not_empty |
Variable has a value assigned |
| Matches Regex | matches |
Value matches a regular expression pattern |
You can combine multiple conditions using AND and OR logic groups within a single Condition node. Click the Add Condition button to add more rules and toggle between AND/OR grouping.
IF (
{{session.selected_service}} == "emergency"
AND
{{system.business_hours}} == false
)
THEN → After-Hours Emergency Path
ELSE → Standard Booking Path
Templates are pre-built flows that you can import and customize for your needs. They save time by providing proven conversation structures for common use cases.
| Template | Description | Nodes |
|---|---|---|
| Appointment Booking | Collects service type, preferred date/time, patient information, and confirms the booking. Integrates with the Appointments module. | 12 |
| Lead Capture | Qualifies visitors by collecting name, email, phone, interest area, and budget range. Saves data to the CRM automatically. | 8 |
| FAQ Navigator | Presents categorized FAQ topics with quick reply buttons and serves answers from the Knowledge Base. Offers agent escalation. | 15 |
| Symptom Checker | Guides patients through a symptom assessment with branching questions, severity ratings, and provides next-step recommendations. | 22 |
Go to Helpon → Flows and click New Flow. Select the Templates tab to browse available templates. Use the category filter to narrow results.
Click Preview on any template to see the flow structure and node configuration. When ready, click Use Template to import it into a new draft flow.
Edit the imported flow to match your business. Update message text, adjust question options, modify conditions, and connect action nodes to your integrations (CRM, calendar, etc.).
Once you have built a flow you want to reuse, click Save as Template in the toolbar menu. Give it a name and description. Your custom templates appear in the My Templates tab alongside the pre-built ones.
You can export any flow as a JSON file by clicking Export in the flow toolbar. Share the JSON file with other Helpon users or import it into another site via Flows → Import.
Before publishing a flow to your live site, use the built-in testing tools to verify every path works correctly.
Click the Test Flow button in the editor toolbar. A chat preview panel opens on the right side of the canvas, simulating the visitor experience.
Interact with the flow as a visitor would. Type responses, click buttons, select dates, and upload test files. The active node is highlighted on the canvas in real time so you can see exactly where the flow is executing.
Enable Debug Mode by toggling the bug icon in the tester panel. This pauses the flow at each node and displays the current variable state, condition evaluations, and action results. Click Next Step to advance manually.
Click the Test Data tab in the tester panel to pre-fill visitor and contact variables. This lets you simulate returning visitors, specific locations, or existing CRM contacts without needing real data.
Click Reset Session at the bottom of the tester panel to clear all variables and restart the flow from the beginning. You can also jump to any specific node by right-clicking it on the canvas and selecting Start Test Here.
Test Mode runs the flow inside the editor with debugging tools. Preview Mode (accessible from the flow list page) opens a full-screen chat widget simulation that closely mirrors the actual visitor experience on your site, including styles and animations.
When a visitor enters a flow, Helpon creates a session to track their progress, store collected data, and allow resumption if the visitor leaves and returns. Session behavior is configurable per flow.
| Setting | Description | Default |
|---|---|---|
| Session Timeout | How long a session remains active after the visitor's last interaction. After timeout, the session is marked as expired. | 30 minutes |
| Resume on Return | When enabled, returning visitors continue from where they left off. When disabled, a new session starts from the beginning. | Enabled |
| Data Persistence | Controls whether session variables are saved after the flow ends. Persistent data is available in the CRM contact record and future flows. | Enabled |
| Max Sessions per Visitor | Limits how many times the same visitor can start this flow. Set to 0 for unlimited. Useful for preventing duplicate form submissions. | 0 (unlimited) |
| Clear on Complete | Automatically clears the session data when the flow reaches an End node. Useful for privacy-sensitive flows. | Disabled |
| Session Storage | Where session data is stored: Browser (localStorage, per-device), Server (database, cross-device), or Both. | Both |
When a visitor triggers a flow (via widget, URL trigger, or automation), a new session is created. The session stores a unique ID, the current node position, and all collected variables.
As the visitor progresses through Question and Action nodes, their answers and results are saved to session variables in real time. Variables persist even if the visitor refreshes the page.
The session ends when the flow reaches an End node (completed) or when the timeout is reached (expired). Completed sessions transfer data to the CRM. Expired sessions can be configured to trigger a follow-up message.
{
"session": {
"timeout": 1800,
"resume_enabled": true,
"data_persistence": true,
"max_sessions": 0,
"clear_on_complete": false,
"storage": "both",
"expired_action": "send_followup",
"followup_delay": 3600
}
}
All session variables from completed flows are automatically attached to the visitor's CRM contact record. You can view the full session history under Helpon → Contacts → [Contact] → Flow Sessions.
Common issues and their solutions when working with the Flow Builder:
{{session.email}} will not find a variable named Email.session. for flow-collected data, contact. for CRM fields, visitor. for browser/device data, and custom. for Action-set values.Ctrl M.The Flow Builder auto-saves your work every 60 seconds. However, if you experience a browser crash while editing a large flow, use Helpon → Flows → [Your Flow] → Revisions to restore a previous version. The last 20 revisions are stored.