# Set up a Call Flow from an Existing Flow

You don't have to design every call flow from a blank canvas. Reuse work you (or someone else) already did by cloning a flow that's on your system, or by importing a flow that was exported to a JSON file. Once the copy exists, you edit its components and enable it like any other flow.

:::note
Two starting points, one result. Both methods create a brand-new flow (they do not change the original) and drop you on the configuration page ready to edit:

- **Clone** when the flow you want to reuse already lives on this system.
- **Import** when you have a JSON file to load. JSON (JavaScript Object Notation) is a plain-text file format, and here the file should be a call flow that was previously exported from Cloud Voice.
:::

## Step 1. Create the flow from an existing one

Sign in to your Cloud Voice portal and open **Call Flow Designer**. Then use whichever of the two methods below fits what you're starting from.

### Clone a flow already on the system

Cloning copies the entire flow: every component, connection, and setting from the original. You start with a working structure and change only what needs to differ.

1. Find the flow you want to copy in the list, and click the clone icon ![Clone icon](/images/pbx/role%20management_copy.png) at the end of its row.

   ![Clone icon shown at the end of a call flow's row in the list](/images/pbx/clone-cfd.png)

2. In the dialog, give the copy a **Name** and, if you like, a **Remark**, then click **Save**.

   ![Naming a cloned call flow and adding an optional remark](/images/pbx/edit-cloned-cfd.png)

   Cloud Voice creates the flow and opens its configuration page.

### Import a flow from a JSON file

1. At the top of the list, click **Add**.

   
   ![Cloud Voice, Add button above the call flow list](/images/pbx/add-cfd.png)

2. Complete the dialog, then click **Save**:

   - **Name**: A label that makes the flow easy to recognize.
   - **Remark**: A short description (optional).
   - **Create Method**: Choose **Import from File**.
   - **Upload Call Flow File**: Click **Upload** and choose the JSON file to import.

   ![Import dialog with Create Method set to Import from File and a file uploaded](/images/pbx/import-cfd.png)

   Cloud Voice creates the flow and opens its configuration page.

## Step 2. Edit the components

:::tip
If you need to set up other Cloud Voice features while you work on the flow, click **Open in a new tab** in the top-right corner and keep editing in a separate browser tab.

![Open in a new tab control in the top-right of the editor](/images/pbx/new-tab-cfd.png)
:::

1. Click any component on the canvas to open its settings. The table below describes what each component does and links to its full reference.

   | Component | What it does |
   | --- | --- |
   | [Initial Action](/pbx/call-flow-designer-guide/initial-action/) | The flow's entry point. Sets the number(s) callers dial to start the flow and can play an opening prompt that greets them or gives instructions. |
   | [Prompt](/pbx/call-flow-designer-guide/prompt/) | Plays one or more audio files, or a text-to-speech message, to the caller. |
   | [Business Hours](/pbx/call-flow-designer-guide/business-hours/) | Routes calls to different destinations depending on the time of day. |
   | [Menu](/pbx/call-flow-designer-guide/menu/) | Presents callers with a set of keypad options and routes each call by the DTMF digit pressed. DTMF (Dual-Tone Multi-Frequency) is the touch-tone signal a phone sends when a key is pressed. |
   | [User Input](/pbx/call-flow-designer-guide/user-input/) | Collects DTMF digits from the caller, usually paired with a **Condition** component that acts on what was entered. |
   | [Language](/pbx/call-flow-designer-guide/language/) | Changes the system-prompt language for the components that come after it. |
   | [Record](/pbx/call-flow-designer-guide/record/) | Starts recording once the caller is connected to another party, with optional prompts to announce the recording. It can also disable recording for calls that would otherwise be recorded. |
   | [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. 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 hands the caller off to a chosen destination, with optional prompts about 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. |
   | [Condition](/pbx/call-flow-designer-guide/condition/) | Routes calls based on logical expressions. |
   | [Loop](/pbx/call-flow-designer-guide/loop/) | Runs a group of components repeatedly, a fixed number of times, or until a condition is met. |
   | Internal Data Ops | Queries and updates data in the built-in Cloud Voice database. See [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/), and [Get Company Contact Info](/pbx/call-flow-designer-guide/get-company-contact-info/). |
   | [Email Sender](/pbx/call-flow-designer-guide/email-sender/) | Sends email, useful for real-time notifications, alerts, or delivering caller-specific details. |
   | [Database Access](/pbx/call-flow-designer-guide/database-access/) | Interacts with a database during the flow, running SQL operations (Structured Query Language, the standard way to read and write database records) to retrieve or update data. |
   | [HTTP Request](/pbx/call-flow-designer-guide/http-request/) | Sends HTTP requests (HyperText Transfer Protocol, the standard protocol of the web) to external web servers to exchange data with third-party services. |

2. **Optional**: To add a component, click the add icon ![Add branch icon](/images/pbx/add-branch.png) on a branch, then pick the component you want.

   ![Adding a component to a branch on the call-flow canvas](/images/pbx/cfd-tempate-add-components.png)

3. Click **Save** in the top-right corner.

## Step 3. Enable the flow

1. Back on the call flow list, toggle on the switch for your flow.

   ![Enable switch next to a call flow in the list](/images/pbx/enable-template-call-flow.png)

2. Confirm by clicking **OK** in the dialog.

   ![Confirmation dialog for enabling a call flow](/images/pbx/confirm-enable-cfd.png)

:::caution
Enabling a flow puts it live. From that moment, real inbound calls to the numbers set in the flow's **Initial Action** follow this flow. Review those numbers and the flow's destinations before you switch it on, so callers are not routed somewhere unexpected.
:::
