---
title: Queues
summary: 'A queue holds inbound callers in a virtual line and offers each call to your team according to rules you set - who rings, in what order, for how long.'
section: features
tags:
  - crud
  - telephony
  - routing
updated: '2026-08-12'
---

> A **queue** holds inbound callers in a virtual line and offers each call to your team by rules you set: who rings, in what order, for how long. Reach for one when more callers can arrive than there are people free to answer.

## Overview

Use a queue when more callers can arrive than people are free to answer. Calls usually enter a queue from a call flow's *Enter queue* step. The settings here are stored configuration: the actual ringing, timing, and routing happen on the telephony platform at call time.

Membership is the union of five pickers (Users, Pickup lines, Groups, Pools, Statuses). Statuses is the exception: it filters the other sources rather than adding members of its own.

![The queue members section, with the Users picker and the Statuses picker highlighted](queues-images/member-sources.png)

| Outline | Picker | What it does |
|---|---|---|
| <span style="color:#34c759">Green</span> | Users, Pickup lines, Groups, Pools | Each one adds members. |
| <span style="color:#ff9500">Orange</span> | Statuses | Filters the pickers above. On its own it adds nobody. |

## What you configure

The ring strategy is a choice you set, and the platform decides who rings based on it:

| Strategy | Intent |
|---|---|
| **Ring all** | Offer the call to every available member at once. Best for small teams. |
| **Round robin** | Offer to members one at a time, cycling in order. |
| **Fewest calls** | Favor the member who has answered the fewest calls. Balances workload. |
| **Least recent** | Favor whoever has been idle longest. |
| **Random** | Pick an available member at random. |

> [!IMPORTANT]
> Always set a fallback call flow. Without one, callers who time out, press the exit key, or hit an empty queue have nowhere to land.

## How to stand up a queue

1. Decide how members are selected. Users for a fixed list, Groups or Pools when the roster should track the team as it changes. The pickers add together, with one exception: **Statuses filters the others rather than adding anybody**, so a queue with only Statuses set has no members at all.
2. Create the queue, add the members, and pick a ring strategy from the table above.
3. Set the fallback call flow before you finish. Timeouts, the exit key, and an empty queue all send the caller there, and without one those callers have nowhere to go.
4. Set the ring duration and retry delay, then decide whether an empty queue holds calls (**Ring empty queue** on) or drops them to the fallback immediately.
5. Route calls in by adding an *Enter queue* step to the [call flow](call_flows.md) that answers the number.
6. Test it twice: once staffed, and once with every member unavailable. The second test is the one that exercises the fallback, and the one people otherwise discover in production.

## See also

- [Call flows](call_flows.md) - route incoming calls into a queue via an *Enter queue* step, and handle calls that exit it.
- [Groups](groups.md) and [Pools](pools.md) - the dynamic member-list sources.
- [Music on hold](music_on_holds.md) - the audio callers hear while waiting.
- [Pickup lines](pickup_lines.md) - shared line appearances that can be queue members.

```yaml fields
name:
  label: Name
  tab: General
  hint: 'Identifies the queue in lists and call-flow steps. No effect on routing.'
musicOnHold:
  label: 'Music on hold'
  tab: General
  hint: 'Audio callers hear while they wait. Only sound files of type Music are available.'
users:
  label: Users
  tab: General
  hint: 'Specific named users who ring as queue members.'
fake_pickupLines:
  label: 'Pickup lines'
  tab: General
  hint: 'Shared line appearances (BLF-monitored) added as members.'
groups:
  label: Groups
  tab: General
  hint: 'Adds every user in the selected groups as members.'
pools:
  label: Pools
  tab: General
  hint: 'Adds users that dynamically match a pool definition (tag, location, language).'
statuses:
  label: Statuses
  tab: General
  hint: 'Filter: only members whose Tempus status matches receive calls. Pair with Users, Groups, or Pools.'
ring_strategy:
  label: 'Ring strategy'
  tab: General
  hint: 'How incoming calls are shared among queue members.'
  values:
    -
      value: ring_all
      label: 'Ring all'
      text: 'Every available member rings at once, first to answer wins. Best for small teams.'
    -
      value: round_robin
      label: 'Round robin'
      text: 'Members ring one at a time, cycling in order. Fair, but slowest pick-up.'
    -
      value: fewest_calls
      label: 'Fewest calls'
      text: 'The member with the fewest answered calls rings first. Balances workload.'
    -
      value: least_recent
      label: 'Least recent'
      text: 'Whoever has been idle longest rings first. Smooth across long shifts.'
    -
      value: random
      label: Random
      text: 'A random available member each attempt.'
weight:
  label: 'Queue priority'
  tab: General
  hint: 'When a member belongs to several queues, the lowest number is offered first.'
  text: 'Example: a user in a VIP queue (priority 1) and a General queue (priority 5) gets VIP calls first. General calls reach them only when the VIP queue is empty. Leave default when members belong to one queue.'
ring_busy_members:
  label: 'Busy members'
  tab: General
  hint: 'When on, rings members already on a call (needs call waiting). Usually off.'
ring_twinnings:
  label: Twinnings
  tab: General
  hint: "When on, also rings each member's configured mobile twinning. For field workers reachable on mobile."
ring_empty:
  label: 'Ring empty queue'
  tab: General
  hint: 'When on, calls wait even with no members available. When off, they drop to the fallback flow immediately.'
ring_duration:
  label: 'Ring duration'
  tab: General
  hint: 'How long one member rings before the queue tries the next. Unlimited rings until answered or hang-up.'
interval:
  label: 'Retry delay'
  tab: General
  hint: 'Pause between attempts, so members are not hammered with rapid-fire rings.'
wrap_up_time:
  label: 'Wrap up time'
  tab: General
  hint: 'How long a member is held out of rotation after a call, to finish notes.'
exit_key:
  label: 'Exit key'
  tab: General
  hint: 'DTMF digit a waiting caller presses to leave the queue and follow the fallback flow (0 is conventional).'
callFlow:
  label: 'Call flow'
  tab: General
  hint: 'Fallback flow for calls that exit the queue (timeout, exit key, or no members). Always set one.'
enable_caller_position:
  label: 'Announce caller position'
  tab: General
  hint: 'When on, waiting callers hear their position in the queue.'
caller_position_announce_frequency:
  label: Frequency
  tab: General
  hint: 'How often, in seconds, the position is announced to waiting callers.'
caller_position_language:
  label: Language
  tab: General
  hint: 'The language used for the position announcement.'
fake_users:
  label: Users
  hint: 'The users who answer calls to this queue.'
```
