> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # Call Flow Builder ## Docs - [Variables](https://signalwire.com/docs/call-flow-builder/guides/variables.md) - [Versioning](https://signalwire.com/docs/call-flow-builder/guides/version.md) - [Overview](https://signalwire.com/docs/call-flow-builder/reference/nodes.md) - [AI Agent](https://signalwire.com/docs/call-flow-builder/reference/ai-agent.md): Call Flow Builder node to connect to an AI Agent - [Answer Call](https://signalwire.com/docs/call-flow-builder/reference/answer-call.md): Call Flow Builder node to answer an incoming call. - [Conditions](https://signalwire.com/docs/call-flow-builder/reference/conditions.md): Call Flow Builder node to add conditions to your call flow. - [Execute SWML](https://signalwire.com/docs/call-flow-builder/reference/execute-swml.md): Call Flow Builder node to execute a remote SWML document and return to the current document. - [Forward to Phone](https://signalwire.com/docs/call-flow-builder/reference/forward-to-phone.md): Call Flow Builder node to forward the call to a phone number. - [Gather Input](https://signalwire.com/docs/call-flow-builder/reference/gather-input.md): Call Flow Builder node to gather input from the caller. - [Handle Call](https://signalwire.com/docs/call-flow-builder/reference/handle-call.md): Call Flow Builder node to handle an incoming call. - [Hang Up Call](https://signalwire.com/docs/call-flow-builder/reference/hangup-call.md): Call Flow Builder node to hang up a call. - [Play Audio or TTS](https://signalwire.com/docs/call-flow-builder/reference/play-audio-or-tts.md): Call Flow Builder node to play audio or TTS to the caller. - [Request](https://signalwire.com/docs/call-flow-builder/reference/request.md): Call Flow Builder node to make an HTTP request - [Send SMS](https://signalwire.com/docs/call-flow-builder/reference/send-sms.md): Call Flow Builder node to send an SMS - [Set Variables](https://signalwire.com/docs/call-flow-builder/reference/set-variables.md): Call Flow Builder node to set variables in the call flow. - [Start Call Recording](https://signalwire.com/docs/call-flow-builder/reference/start-call-recording.md): Call Flow Builder node to start recording a call. - [Stop Call Recording](https://signalwire.com/docs/call-flow-builder/reference/stop-call-recording.md): Call Flow Builder node to stop recording a call. - [Unset Variables](https://signalwire.com/docs/call-flow-builder/reference/unset-variables.md): Call Flow Builder node to unset variables in the call flow. - [Voicemail Recording](https://signalwire.com/docs/call-flow-builder/reference/voicemail-recording.md): Call Flow Builder node to record voicemail messages. > **Note:** This page contains both a page directory (above) and the landing page content (below). The page directory is generated for agent use and does not appear on the landing page. > Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # Call Flow Builder > Learn about the Call Flow Builder, a visual tool for creating and managing call flows. ## Introduction Call Flow Builder is a no-code visual tool for creating and managing voice applications directly in the Dashboard. It features a simple drag-and-drop interface for creating complex call flows with multiple branches and decision points. All elements of the call flow are represented as nodes in a tree structure. You can easily add, remove, and rearrange elements in the call flow using the visual interface. Sample topology: **Handle Call** → **Answer Call** → **Gather Input**. Pressing `1` plays a busy message and records voicemail; pressing `2` connects to AI Agent `Ally`; **Unknown** and **No Input** route to another voicemail recording. Both voicemail paths and the AI Agent end at **Hang Up Call**. Add or remove any element from the call flow by dragging it into the desired location, and define links between them using the connection lines. Extend each flow by integrating external APIs, or by using SignalWire Markup Language (SWML). Call Flow Builder also offers built-in versioning to streamline testing multiple configurations. > **Tip** > > Under the hood, Call Flow Builder generates valid > [SWML (SignalWire Markup Language)](/docs/swml), > meaning all the power of SWML is available whenever you need more control over your call flows. --- ## Get started To get started with Call Flow Builder, open the **Tools** tab in the left menu of your SignalWire Dashboard. Check out this brief demo to see how to add, configure, and connect nodes in Call Flow Builder. The [Call Flow Builder demonstration](https://www.youtube.com/watch?v=ZPnwEKOhYH4) shows how to add, configure, and connect nodes on the canvas. ### Creating a New Call Flow To create a new call flow, click on the `Add New` button in the Call Flow Builder section of the Dashboard. From here, you can give your call flow a name, and then click `Save` to create the new call flow. After creating the call flow, the Call Flow will show up in the list of call flows in the Dashboard. In the Dashboard, open **Tools** > **Call Flow Builder**, select **Add New**, enter a name, and select **Save**. --- ### Create a Call Flow Once a Call Flow has been created, you can click on the `More Options` button to open the Call Flow Builder interface. From here, click on the `Edit` option to open the Call Flow Builder page. On the Call Flow list, open the flow's **More Options** menu and select **Edit**. #### Add a node When you first open a new Call Flow, you will see a canvas with a single node: the [Handle Call](/docs/call-flow-builder/reference/handle-call) node. This node is the entry point for incoming calls and serves as the start of all Call Flows. From here the Call Flow Builder interface allows you to create and manage call flow nodes using a visual drag-and-drop interface. Every node has a single input connector on the left, and one or more output connectors on the right. These connectors allow you to connect nodes together to create flows and logical relationships. Add nodes to the Call Flow by dragging them from the left-hand panel and dropping them onto the canvas. Starting with the [Handle Call](/docs/call-flow-builder/reference/handle-call) node, you can connect a node by clicking and dragging from the output connector (right side of node) to the input connector (left side of node) of another node. You will see an arrow connecting the two nodes, indicating that they are connected. Drag a node from the left panel onto the canvas, then drag from an existing node's right-side output connector to the new node's left-side input connector. --- #### Configure nodes Some nodes have configuration options that can be set by clicking on the node. This will open a configuration panel where you can set the options for that node. For example, the [Play Audio or TTS](/docs/call-flow-builder/reference/play-audio-or-tts) node allows you to select an audio file or enter text to be played to the caller. Select a node on the canvas to open its configuration panel and edit its settings. --- #### Delete a node To delete a node, you can click on the delete icon located on the right side of the node. Additionally, you can delete a node if they have configuration options open by clicking the `Delete node` button in the configuration panel. Delete a node with the trash icon on the node or **Delete node** in its open configuration panel.