---
title: 'Call flow steps'
summary: 'Visual reference for the step types inside a call flow: Dial, Queue, IVR, Announcement, Hang up, and the rest. Grouped by family, with key fields and gotchas.'
section: features
tags:
  - telephony
  - routing
  - reference
updated: '2026-08-12'
---

> A **call flow step** is one action inside a [call flow](call_flows.md). Each step has a type (Dial, Queue, IVR, Announcement, Call flow, and so on) and a configuration that controls exactly what it does.

## Overview

Each step is one row in the editor, and its type picks which fields apply. Some step types are terminal, so the editor does not allow another step after them. How the steps are carried out at call time is handled by the telephony platform, not inside Cockpit.

## What it does

Every step belongs to one of four families:

| Family | What you configure | Step types |
|---|---|---|
| **Answering** | Connect the caller to a destination | Dial, Queue, External number, Conference room, AI Assistant |
| **Navigation** | Send the call to another flow or extension | Call flow, IVR, IVR extension |
| **Audio** | Play something to the caller | Announcement, Answer |
| **Side-effect** | Perform an action without rerouting | Start recording, Change ringtone and label, Send to email, Webhook, Multicast, Hang up |

The Call flow step takes an optional schedule and is skipped outside its active periods. Audio and side-effect steps do not connect a caller to anyone, so they are commonly placed before an answering step.

## See also

- [Call flows](call_flows.md) - the conceptual model, worked examples, where call flows are assigned.
- [IVRs](ivrs.md) - building the menu that an *IVR* step references.
- [Queues](queues.md) - configuring the queue that a *Queue* step references.
- [Announcements](announcements.md) - sound files that an *Announcement* step references.
- [Schedules](schedules.md) - the time gate for *Call flow* steps.

```yaml fields
type:
  label: Step
  tab: General
  hint: 'The action this step performs.'
  values:
    -
      value: ring_user
      label: Dial
      text: 'Rings users, groups, tags, pools, or statuses. Falls through on no answer.'
    -
      value: enter_queue
      label: Queue
      text: 'Places the caller in a queue. Falls through when the queue gives up.'
    -
      value: go_to_ivr
      label: IVR
      text: 'Plays an IVR menu and routes based on the key the caller presses.'
    -
      value: ring_external_number
      label: 'Dial number'
      text: 'Dials an outside number through your outbound trunks.'
    -
      value: conference_room
      label: 'Conference room'
      text: 'Drops the caller into a conference bridge at the chosen extension.'
    -
      value: ai_assistant
      label: 'AI integration'
      text: 'Hands the call to a configured AI voice assistant.'
    -
      value: call_flow
      label: 'Call flow'
      text: 'Jumps to another call flow or extension, with an optional schedule gate.'
    -
      value: ivr_extension
      label: 'Extension selection'
      text: 'Waits for the caller to dial an extension number and routes to the match.'
    -
      value: text_to_speech
      label: Announcement
      text: 'Plays a sound file or text-to-speech message, then falls through.'
    -
      value: answer
      label: Answer
      text: 'Picks up the call without connecting a person, so audio steps play before any ring.'
    -
      value: start_recording
      label: 'Start recording'
      text: 'Begins call recording from this point. No disclosure is played automatically.'
    -
      value: change_ringtone_and_label
      label: 'Call settings'
      text: 'Overrides the ringtone and display label on the receiving phone for subsequent steps.'
    -
      value: send_to_email
      label: Voicemail
      text: 'Emails a notification (typically the recording) to selected recipients.'
    -
      value: webhook
      label: Webhook
      text: 'POSTs a JSON payload to a URL. Fire-and-forget - flow continues regardless of response.'
    -
      value: multicast
      label: Multicast
      text: 'Sends the call as a one-way audio page to a multicast group.'
    -
      value: hang_up
      label: 'Hang up'
      text: 'Ends the call immediately.'
is_active:
  label: Enabled
  tab: General
  hint: 'When off, this step is skipped during call flow execution.'
duration:
  label: Duration
  tab: User
  when: 'Type is Dial, External number or Queue'
  hint: 'How long (in seconds) to ring before falling through to the next step.'
also_ring_dialed_extension:
  label: 'Dial user'
  tab: User
  when: 'Type is Dial'
  hint: 'When turned on, the extension the caller originally dialed also rings alongside the selected users.'
also_ring_everyone_in_the_user_group:
  label: 'Dial group'
  tab: User
  when: 'Type is Dial'
  hint: "When turned on, all members of the user's group ring at the same time."
dial_mobile_twinnings:
  label: Twinnings
  tab: User
  when: 'Type is Dial'
  hint: "When turned on, users' mobile twinning destinations ring alongside their PBX extensions."
missed_calls:
  label: 'Missed calls'
  tab: User
  when: 'Type is Dial'
  hint: 'When turned on, a call that rings here without being answered is recorded as a missed call for the targets. On by default.'
music_on_hold:
  label: 'Music on hold'
  tab: User
  when: 'Type is Dial, External number or Change ringtone and label'
  hint: 'The music on hold played to the caller while waiting.'
dial_select:
  label: 'Dial select'
  tab: User
  when: 'Type is Dial'
  hint: 'Choose how to pick the users to ring - by specific users, groups, tags, locations, languages, pools, or statuses.'
users:
  label: Users
  tab: User
  when: 'Type is Dial'
  hint: 'The specific users to ring.'
sip_devices:
  label: 'Phones / SIP devices'
  tab: User
  when: 'Type is Dial'
  hint: 'Specific SIP devices to ring directly.'
groups:
  label: Groups
  tab: User
  when: 'Type is Dial'
  hint: 'Ring all users in the selected groups.'
tags:
  label: Tags
  tab: User
  when: 'Type is Dial'
  hint: 'Ring users matching the selected tags.'
locations:
  label: Locations
  tab: User
  when: 'Type is Dial'
  hint: 'Ring users at the selected locations.'
languages:
  label: Languages
  tab: User
  when: 'Type is Dial'
  hint: 'Ring users with the selected languages.'
pools:
  label: Pools
  tab: User
  when: 'Type is Dial'
  hint: 'Ring users in the selected pools.'
statuses:
  label: Statuses
  tab: User
  when: 'Type is Dial'
  hint: 'Ring users with the selected Tempus statuses.'
pickup_lines:
  label: 'Pickup lines'
  tab: User
  when: 'Type is Dial'
  hint: 'Ring the selected pickup lines.'
number:
  label: 'Phone number'
  tab: 'External number'
  when: 'Type is External number'
  hint: 'The external phone number to dial.'
call_flow_or_extension:
  label: Option
  tab: 'Call flow'
  when: 'Type is Call flow'
  hint: 'Choose whether to jump to a call flow or a specific extension.'
call_flow:
  label: 'Call flow'
  tab: 'Call flow'
  when: 'Type is Call flow'
  hint: 'The call flow to jump to. Visible when set to Call Flow.'
extension:
  label: Extension
  tab: 'Call flow'
  when: 'Type is Call flow or Conference room'
  hint: 'The extension to dial. Visible when set to Extension. Also used by Conference Room.'
schedule:
  label: Schedule
  tab: 'Call flow'
  when: 'Type is Call flow'
  hint: 'An optional schedule that gates this step - outside its active periods the step is skipped.'
ivr:
  label: IVR
  tab: IVR
  when: 'Type is IVR'
  hint: 'The IVR menu to play to the caller.'
queue:
  label: Queue
  tab: Queue
  when: 'Type is Queue'
  hint: 'The queue to place the caller in.'
announcement_type:
  label: 'Announcement type'
  tab: 'Text to speech'
  when: 'Type is Announcement'
  hint: 'Whether to use a pre-recorded sound file or generate speech via text to speech.'
sound_file:
  label: Announcement
  tab: 'Text to speech'
  when: 'Type is Announcement, Send to email or IVR extension'
  hint: 'The pre-recorded announcement to play. Also used by Call to Email and IVR Extension types.'
language:
  label: Language
  tab: 'Text to speech'
  when: 'Type is Announcement, Send to email or IVR extension'
  hint: 'Auto plays the announcement in the language detected earlier in the call; if none was detected, the default announcement is played. Pick a language to force that variant here.'
tts_tag:
  label: 'TTS API tag'
  tab: 'Text to speech'
  when: 'Type is Announcement'
  hint: 'A cache identifier for this text-to-speech message.'
tts_message:
  label: 'Dynamic TTS message'
  tab: 'Text to speech'
  when: 'Type is Announcement'
  hint: 'The text to convert to speech and play to the caller.'
ringtone:
  label: Ringtone
  tab: 'Ringtone & label'
  when: 'Type is Change ringtone and label'
  hint: 'The ringtone to use on the receiving phone for the steps that follow.'
label:
  label: Label
  tab: 'Ringtone & label'
  when: 'Type is Change ringtone and label'
  hint: 'The text shown on the receiving phone display for the steps that follow.'
url:
  label: URL
  tab: Webhook
  when: 'Type is Webhook'
  hint: 'The URL to POST to when this step runs.'
email:
  label: 'Email address'
  tab: 'Call to email'
  when: 'Type is Send to email'
  hint: 'The email address to send the recording to.'
email_user:
  label: 'Notify users'
  tab: 'Call to email'
  when: 'Type is Send to email'
  hint: 'Users whose email addresses should receive the recording.'
email_to_called_user:
  label: 'Notify user'
  tab: 'Call to email'
  when: 'Type is Send to email'
  hint: 'When turned on, also sends the recording to the user who was originally called.'
multicast_group:
  label: 'Multicast group'
  tab: Multicast
  when: 'Type is Multicast'
  hint: 'The multicast group to page when this step runs.'
multicast_pin:
  label: PIN
  tab: Multicast
  when: 'Type is Multicast'
  hint: 'An optional PIN required to start the multicast page.'
ai_provider:
  label: Provider
  tab: 'AI phone assistant'
  when: 'Type is AI Assistant'
  hint: 'The AI voice assistant provider.'
famulor_agent:
  label: 'AI integration'
  tab: 'AI phone assistant'
  when: 'Type is AI Assistant'
  hint: 'The AI assistant that handles the call. Configure its SIP carrier on the assistant record under Telephony - AI phone assistants.'
```
