# Call Flow Designer Overview

Call Flow Designer is a visual editor for building the path an incoming call takes through your phone system. Instead of chaining together separate features, you assemble a flow on a canvas by dragging in prebuilt components and connecting them, giving you a single place to design greetings, menus, business-hours routing, and destinations that match how your organization answers calls.

## Requirements

Confirm the following before you start:

| Item | Requirement |
| --- | --- |
| Firmware | 84.22.0.17 or later |
| Plan | Ultimate Plan |

:::note
Individual components become available at different firmware versions. For the minimum version tied to each capability, see the [Firmware Dependency Reference](/pbx/call-flow-designer-guide/firmware-dependency-reference/).
:::

## Limitations

Keep these ceilings in mind as you design:

- Up to **80** call flows on the system.
- Up to **200** components and branches in a single call flow.
- Up to **50** steps in a single call flow.

:::caution
These are hard limits. If a single flow grows past 200 components and branches or 50 steps, or you try to add an 81st call flow, the system will not let you continue. Keep large designs modular (split logic across flows and connect them) so you do not hit a ceiling partway through a build.
:::

## Ways to create a call flow

There are three starting points for a new flow. Pick whichever gets you closest to the result you want.

| Method | When to use it |
| --- | --- |
| [From a template](/pbx/call-flow-designer-guide/set-up-a-call-flow-from-template/) | Start from a ready-made layout that covers a common scenario, then adjust it for your business. |
| [From scratch](/pbx/call-flow-designer-guide/set-up-a-call-flow-from-scratch/) | Build on an empty canvas with full control over every component. |
| [From an existing flow](/pbx/call-flow-designer-guide/set-up-a-call-flow-from-existing-flow/) | Reuse work you already have by cloning a flow or importing a JSON (JavaScript Object Notation) file, then modifying it. |

:::tip
If your goal matches a common scenario (for example a simple welcome menu or after-hours routing), start from a template. You get a working layout to adjust, which is faster and less error-prone than wiring every component yourself.
:::

## Components

Each component is a building block you place on the canvas and connect to others to define what happens at that point in the call. The following components are available.

### Call handling and prompts

| Component | What it does |
| --- | --- |
| [Initial Action](/pbx/call-flow-designer-guide/initial-action/) | The entry point of every flow. Sets the phone number(s), also called DID (Direct Inward Dialing) numbers, that callers dial to trigger the flow and, optionally, a welcome or instructional prompt. |
| [Prompt](/pbx/call-flow-designer-guide/prompt/) | Plays one or more audio prompts, or a text-to-speech message, to the caller. |
| [Business Hours](/pbx/call-flow-designer-guide/business-hours/) | Sends the call to different destinations depending on the time of day. |
| [Menu](/pbx/call-flow-designer-guide/menu/) | Presents a set of options and routes the call based on the DTMF (Dual-Tone Multi-Frequency, the tone a phone keypad sends when a key is pressed) digit the caller presses. |
| [User Input](/pbx/call-flow-designer-guide/user-input/) | Collects DTMF digits from the caller, usually paired with a Condition component to evaluate the entry and route accordingly. |
| [Language](/pbx/call-flow-designer-guide/language/) | Switches the system prompt language for the components that follow it in the flow. |
| [Record](/pbx/call-flow-designer-guide/record/) | Starts recording once the caller is connected to another party, with optional prompts announcing the recording. You can also use it to turn recording off for calls that would otherwise be recorded. |

### Reaching a destination

| Component | What it does |
| --- | --- |
| [Dial by Number](/pbx/call-flow-designer-guide/dial-by-number/) | Lets callers dial a number directly to reach a destination. |
| [Dial by Name](/pbx/call-flow-designer-guide/dial-by-name/) | An end component that lets callers reach an extension user by entering the first three letters of that user's name. |
| [Transfer](/pbx/call-flow-designer-guide/transfer/) | An end component that transfers the caller to a chosen destination, with an optional prompt announcing the transfer. |
| [Hang Up Call](/pbx/call-flow-designer-guide/hang-up-call/) | An end component that disconnects the call when the caller reaches it. |

### Logic and flow control

| Component | What it does |
| --- | --- |
| [Condition](/pbx/call-flow-designer-guide/condition/) | Routes the call according to logical expressions. |
| [Loop](/pbx/call-flow-designer-guide/loop/) | Runs a group of components repeatedly, either a set number of times or until a condition is met. |

### Data and integrations

The **Internal Data Ops** component reads from and writes to the phone system's built-in database. Its operations are documented individually:

- [Get Extension Presence Status](/pbx/call-flow-designer-guide/get-extension-presence-status/)
- [Set Extension Presence Status](/pbx/call-flow-designer-guide/set-extension-presence-status/)
- [Get Queue Agent](/pbx/call-flow-designer-guide/get-queue-agent/)
- [Get Queue Info](/pbx/call-flow-designer-guide/get-queue-info/)
- [Get Agent Status](/pbx/call-flow-designer-guide/get-agent-status/)
- [Set Agent Status](/pbx/call-flow-designer-guide/set-agent-status/)
- [Get System Info](/pbx/call-flow-designer-guide/get-system-info/)
- [Get System Capacity](/pbx/call-flow-designer-guide/get-system-capacity/)
- [Get Extension Info](/pbx/call-flow-designer-guide/get-extension-info/)
- [Get Company Contact Info](/pbx/call-flow-designer-guide/get-company-contact-info/)

For working with external systems, use these components:

| Component | What it does |
| --- | --- |
| [Email Sender](/pbx/call-flow-designer-guide/email-sender/) | Sends emails from within a flow for real-time notifications, alerts, or delivery of caller-specific information. |
| [Database Access](/pbx/call-flow-designer-guide/database-access/) | Runs SQL (Structured Query Language) operations against a database mid-call to retrieve or update data. |
| [HTTP Request](/pbx/call-flow-designer-guide/http-request/) | Sends HTTP (HyperText Transfer Protocol) requests to external web servers to exchange data with third-party services. |
