Flow Builder Guide
The Flow Builder is the visual drag-and-drop interface within the App Builder where you design call flows by placing and connecting applets on a canvas. This guide covers all the features and techniques for building effective call flows.
Flow Builder Interfaceβ
Canvas Navigationβ
| Action | Mouse | Keyboard |
|---|---|---|
| Pan | Click and drag on empty canvas | Arrow keys |
| Zoom in | Scroll wheel up | Ctrl/Cmd + + |
| Zoom out | Scroll wheel down | Ctrl/Cmd + - |
| Fit to screen | Double-click empty canvas | Ctrl/Cmd + 0 |
| Select applet | Click on applet | Tab to cycle through applets |
| Multi-select | Shift + click, or drag selection box | Ctrl/Cmd + A (select all) |
| Delete | Select + Delete key | Backspace |
| Undo | -- | Ctrl/Cmd + Z |
| Redo | -- | Ctrl/Cmd + Shift + Z |
Canvas Layoutβ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Toolbar: [Save] [Validate] [Undo] [Redo] [Zoom] [Settings] β
βββββββββββββ¬βββββββββββββββββββββββββββββββββββ¬ββββββββββββββββ€
β β β β
β Applet β Flow Canvas β Properties β
β Palette β β Panel β
β β ββββββββββ ββββββββββ β β
β Greeting β βGreetingβββββΊβ IVR βββββΊ β [Config β
β IVR β ββββββββββ ββββββββββ β fields β
β Connect β β for β
β Passthru β β selected β
β SMS β β applet] β
β Transfer β β β
β ... β β β
β β β β
βββββββββββββ΄βββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ€
β Status Bar: β Flow valid | 5 applets | Last saved 2 min ago β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Placing Appletsβ
Drag from Paletteβ
- In the Applet Palette (left sidebar), find the applet you need
- Click and hold the applet
- Drag it onto the canvas
- Release to place it at the desired position
Applet Indicatorsβ
Each applet on the canvas displays:
| Element | Meaning |
|---|---|
| Applet icon | Visual identifier for the applet type |
| Applet name | The configured name (e.g., "Welcome Greeting") |
| Input connector (top/left circle) | Where incoming flow connects |
| Output connector(s) (bottom/right circle) | Where outgoing flow connects |
| Status indicator | Green (configured), Yellow (incomplete), Red (error) |
Connecting Appletsβ
Creating Connectionsβ
- Hover over the source applet to reveal output connectors
- Click and drag from an output connector
- Drag the connection line to the target applet's input connector
- Release to create the connection
Connection Typesβ
| Connection Type | Applets | Description |
|---|---|---|
| Sequential | Most applets | Single output to single input; flow proceeds in order |
| Branching | IVR, Passthru | Multiple outputs, each leading to a different path |
| Fallback | Connect, Passthru | Secondary output for error/timeout conditions |
Removing Connectionsβ
- Click on the connection line to select it
- Press
DeleteorBackspace - The connection is removed; both applets remain on the canvas
Branching Logicβ
IVR Branchingβ
The IVR applet creates branches based on caller DTMF input:
ββββββββββββββββββΊ [Sales Connect] (Press 1)
β
[IVR Menu] βββΌβββββββββββββββββΊ [Support Connect] (Press 2)
β
ββββββββββββββββββΊ [Billing Connect] (Press 3)
β
ββββββββββββββββββΊ [Replay IVR] (No input / invalid)
Each IVR option corresponds to a separate output connector. Connect each to the appropriate next applet.
Passthru Branchingβ
The Passthru applet branches based on the HTTP response:
ββββββββββββββββΊ [VIP Agent] (HTTP 200 + VIP flag)
β
[Passthru] βββββββΌβββββββββββββββΊ [Regular Queue] (HTTP 200 + regular flag)
β
ββββββββββββββββΊ [Default Queue] (HTTP error / timeout)
Time-Based Branchingβ
Create business-hours routing using the Passthru applet:
- Add a Passthru applet at the start of the flow
- Configure it to call your server endpoint that returns the current time status
- Branch to "Business Hours" flow (e.g., Connect to agents) or "After Hours" flow (e.g., Voicemail)
Configuring Appletsβ
Configuration Workflowβ
- Click an applet on the canvas to select it
- The Properties Panel opens on the right
- Fill in the required fields (marked with an asterisk)
- Optionally configure advanced settings
- Click Apply to save the applet configuration
Common Configuration Fieldsβ
| Field | Found In | Description |
|---|---|---|
| Applet Name | All applets | Custom label for identification on the canvas |
| Audio File | Greeting, IVR | Audio to play (upload, record, or TTS) |
| Phone Number | Connect | Number or group to route calls to |
| URL | Passthru | HTTP endpoint to call during the flow |
| Timeout | Connect, IVR | Seconds to wait before moving to next step |
| Retries | IVR, Passthru | Number of retry attempts on failure |
Flow Validationβ
Automatic Validationβ
The Flow Builder continuously validates your flow and shows issues in the status bar:
| Severity | Icon | Description |
|---|---|---|
| Error | Red circle | Must be fixed before saving (e.g., disconnected applet, missing required field) |
| Warning | Yellow triangle | Should be reviewed (e.g., dead-end path, unusually long timeout) |
| Info | Blue circle | Suggestions for improvement (e.g., consider adding a greeting) |
Common Validation Errorsβ
| Error | Cause | Fix |
|---|---|---|
| "Disconnected applet" | Applet not connected to any flow path | Connect it or remove it from the canvas |
| "Missing required field" | A required configuration field is empty | Click the applet and fill in the missing field |
| "Dead-end path" | A branch does not terminate with Hangup or Connect | Add a Hangup applet at the end of the path |
| "Circular reference" | Flow creates an infinite loop | Break the loop by redirecting the connection |
| "No entry point" | No applet is marked as the first step | Ensure the first applet has no incoming connections |
Advanced Flow Patternsβ
Sequential Flowβ
The simplest pattern -- applets execute one after another:
Greeting βββΊ Connect βββΊ Hangup
Menu-Based Routingβ
Caller selects options via DTMF:
Greeting βββΊ IVR βββΊ (1) Connect Sales
βββΊ (2) Connect Support
βββΊ (3) Greeting (account info)
βββΊ (*) Replay IVR
Dynamic Routing with HTTPβ
Use Passthru to make routing decisions based on external data:
Greeting βββΊ Passthru (check CRM) βββΊ (VIP) Connect to VIP agent
βββΊ (Regular) Connect to queue
βββΊ (Error) Connect to default
Multi-Level IVRβ
Nested IVR menus for complex menu trees:
Greeting βββΊ IVR Level 1 βββΊ (1) IVR Level 2 (Sales) βββΊ (1) Connect Sales India
βββΊ (2) Connect Sales APAC
βββΊ (2) IVR Level 2 (Support) βββΊ (1) Connect Tech Support
βββΊ (2) Connect Billing
βββΊ (0) Connect Operator
Fallback with Voicemailβ
Handle cases where agents are unavailable:
Greeting βββΊ Connect Agent βββΊ (answered) [call proceeds]
βββΊ (busy/no-answer) Greeting ("Please leave a message")
βββΊ Voicemail βββΊ Email Notify βββΊ Hangup
Best Practicesβ
- Keep flows readable -- Arrange applets left-to-right or top-to-bottom for visual clarity
- Name your applets -- Use descriptive names like "Welcome Greeting" instead of "Greeting 1"
- Limit IVR depth -- Maximum 2 -- 3 levels of IVR menus to avoid caller frustration
- Always handle errors -- Every branching applet should have a fallback/default path
- Test all branches -- Walk through every possible path during testing
- Use the mini-map -- For large flows, enable the mini-map to navigate quickly
- Save frequently -- The builder supports auto-save, but manual saves create version checkpoints
Related Topicsβ
- App Builder -- Overall app creation guide
- Greeting Applet Guide -- Configure audio greetings
- IVR Applet Guide -- Build IVR menus
- Connect Applet Guide -- Route calls to agents
- Passthru Applet Guide -- HTTP integrations in call flows