Call queues route callers to people in your organization who can help with a particular issue or question. Calls are distributed one at a time to the people in the queue, who are known as agents.
The steps outlined in the article create Call queues using the Teams admin center. For instructions to create Call queues using PowerShell, see Creating Call queues with PowerShell cmdlets.
To set up a Call queue, in the Teams admin center, expand Voice, select Call queues, and then select Add.
Type a name for the Call queue in the box at the top.
Add an existing resource account
Before you can create and manage resource accounts, you must do the following actions:
All Call queues that directly answer calls must have an associated resource account. All resource accounts must be assigned a Microsoft Teams Phone Resource Account license. If you wish, you can assign several resource accounts to a Call queue.
Nested Auto attendants and Call queues that receive calls from an auto attendant or call queue that has already answered the call don't require a resource account. For more information, see Nested Auto attendants and Call queues.
For details on how to create resource accounts and ready them for use with auto attendants or call queues, see Manage Teams resource accounts.
Agents see the resource account name or call queue name when they receive an incoming call.
Assign a calling ID (optional)
Assign outbound caller ID numbers for the agents by specifying one or more resource accounts with a phone number. Agents can select which outbound caller ID number to use with each outbound call they make. Within the Calls App, agents can use their Call Queue (CQ) / Auto Attendant (AA) number or their own personal Direct InWard Dial (DID).
Note
The resource account used for calling ID purposes must have a Microsoft Teams Phone Resource Account license and one of the following assigned:
- A Calling Plan license and a phone number assigned
- An Operator Connect phone number assigned
- An online voice routing policy (phone number assignment is optional when using Direct Routing)
- Under Assign calling ID, select the Add button.
- On the Add accounts pane, search for one or more resource accounts you want to allow agents to use for outbound caller ID purposes.
- Select the Add button next to the resource account with an assigned phone number.
- Select the Add button at the bottom of the pane.
If you don't have a resource account with an assigned phone number, you must create a resource account. For more information, see Create a Teams resource accounts.
After you create this new resource account for calling ID, you still need to:
Set the Service level threshold
Service level measures the efficiency and responsiveness to incoming customer requests within a specific Service level threshold.
You can set the threshold target to any value from 0 to 40 minutes (2,400 seconds). The value must be less than the value set for Call timeout. Setting the value to blank (empty) disables the service level metric calculation for the call queue.
Note
Service level metrics are not currently available in historical reporting.
Set the Call queue language
Choose a supported language.
This language is used for system-generated voice prompts and voicemail transcription, if you enable them.
After you select a language, select the Next button at the bottom of the Add a Call queue page.
Step 2: Add a greeting and on-hold music
Specify if you want to play a greeting to callers when they arrive in the queue.
- If you select Play an audio file, you must upload an MP3, WAV, or WMA file containing the greeting that you want to play. See Supported audio file formats.
- If you select Type a greeting message, the system reads the text that you type (up to 1,000 characters) when the Call queue answers a call.
Note
When using Text to Speech, the text must be entered in the selected language as the system doesn't perform translation.
All words are pronounced in the selected language.
Teams provides default music to callers while they're on hold in a queue.
- The default music supplied in Teams Call queues is free of any royalties payable by your organization.
- If you want to play a specific audio file, choose Play an audio file and upload an MP3, WAV, or WMA file. See Supported audio file formats.
Important
You are responsible for independently clearing and securing all necessary rights and permissions to use any music or audio file with your Microsoft Teams service, which may include intellectual property and other rights in any music, sound effects, audio, brands, names, and other content in the audio file from all relevant rights holders, which may include artists, actors, performers, musicians, songwriters, composers, record labels, music publishers, unions, guilds, rights societies, collective management organizations and any other parties who own, control or license the music copyrights, sound effects, audio and other intellectual property rights.
After you select a greeting and on-hold music, select the Next button at the bottom of the Add a Call queue page.
Step 3: Set up who answers incoming calls
Review the prerequisites for adding agents to a Call queue.
Teams channel
You can add up to 200 agents via a Teams channel. You must be a member of the team or the creator or owner of the channel to add a channel to the queue.
Using a Teams channel to manage the queue:
- Select the Choose a team radio button and select Add a channel.
- Search for the team that you want to use, select it, and select Add.
- Select the channel that you want to use (only standard channels are fully supported) and select Apply.
The following clients are supported when using a Teams channel for Call queues:
- Microsoft Teams Windows client
- Microsoft Teams Mac client
Note
If you use this option, it can take up to 24 hours for the Call queue to be fully operational.
If there are more than 200 members in the team, only the first 200 members, in alphabetical order, are added as agents to the Call queue.
Users and groups
You can add up to 20 agents individually and up to 200 agents via groups.
If you want to add individual users or groups to the queue:
- Select the Choose users and groups radio button.
To add a user to the queue:
- Select Add users, search for the user, select Add, and then select Add.
To add a group to the queue:
- Select Add groups, search for the group, select Add, and then select Add.
- You can use distribution lists, security groups, and Microsoft 365 groups or Microsoft Teams teams.
Note
New users added to a group can take up to eight hours for their first call to arrive.
If there are more than 200 members in the group, only the first 200 members, in alphabetical order, are added as agents to the Call queue.
Important
Known issue: Assigning private channels to Call queues
When using a private channel, calls are be distributed to all members of the team even if the private channel only has a subset of team members. You may experience this problem when trying to assign a private channel to a Call queue. This problem may occur even if the Call queue previously had a private channel assigned or if the private channel was previously assigned to a Call queue. If you already have private channels assigned to Call queues, they will continue to work. This problem only affects new assignments. Support continues to work on identifying the root cause of this problem.
Conference mode
Conference mode reduces the amount of time it takes for a caller to be connected to an agent after the agent accepts the call.
Agents' Teams accounts must be set to TeamsOnly mode. Agents who don't meet the requirements aren't included in the call routing list.
Tip
Setting Conference mode to On is the recommended setting.
Once you select your call answering options, select the Next button at the bottom of the Add a Call queue page.
Keep the following in mind:
- Conference mode isn't supported for calls that are routed to the queue from a Direct Routing gateway that's enabled for Location Based Routing.
- Conference mode is required if Teams users need to consult/transfer calls with Call queues.
- Agents may hear the configured music on hold in queue for up to 2 seconds when first joining the call.
Important
Transfer mode (when conference mode is disabled) is now in legacy mode. Support for transfer mode is scheduled to be removed by the end of June 2025.
Step 4: Select your agent routing options
Important
Call presentation to agents may conflict with Location-Based Routing restrictions. In this case, the agent receives a call toast but can't answer the call. This condition continues until another agent is available to answer the call, the caller hangs up, or the Call queue timeout condition occurs. For more information on Location-Based Routing, see Plan Location-Based Routing for Direct Routing.
Routing method determines the order in which agents receive calls from the queue.
Choose from these options:
Attendant routing rings all agents in the queue at the same time. The first call agent to pick up the call gets the call.
Serial routing rings all call agents one by one in the order specified in the Call agents list. If an agent dismisses or doesn't pick up a call, the call rings the next agent. This cycle repeats until the call is answered, times out, or the caller hangs up.
Round robin balances the routing of incoming calls so that each call agent gets the same number of calls from the queue.
Longest idle routes each call to the agent who's been idle the longest. An agent is considered idle if their presence state is Available. Agents who aren't available don't receive calls until they change their presence to Available.
Tip
Setting the Routing Method to Round robin or Longest idle is the recommended setting.
Presence-based call routing
Presence-based call routing uses the availability status of call agents to determine whether an agent should be included in the call routing list for the selected routing method.
Call agents whose availability status is set to Available are included in the call routing list and can receive calls. Agents whose availability status is set to any other status are excluded from the call routing list and can't receive calls until their availability status changes back to Available.
You can enable presence-based call routing with any of the routing methods.
If an agent opts out of getting calls, they can't receive calls regardless of their availability status.
Tip
Setting the Presence-based routing to On is the recommended setting.
Note
When Longest idle is selected as the routing method:
- Presence-based routing is required and automatically enabled even though the Presence-based routing toggle is Off and grayed out.
- When there are fewer calls in the queue than available agents, only the first two longest idle agents are presented with calls from the queue.
If Presence-based routing isn't enabled and there are multiple calls in the queue, the system presents these calls simultaneously to the agents, regardless of their presence status. This action results in multiple call notifications to agents, particularly if some agents don't answer the initial call presented to them. For more information, see Configure Busy Options for Busy on Busy alternatives to presence-based routing.
When using Presence-based routing, there may be times when an agent receives a call from the queue shortly after becoming unavailable or a short delay in receiving a call from the queue after becoming available.
Agents who use the Skype for Business client aren't included in the call routing list when presence-based routing is enabled. If you have agents who use Skype for Business, don't enable presence-based call routing.
Call agents can opt out of taking calls
You can specify whether call agents have the ability to opt out of taking calls or not.
We recommend turning on Call agents can opt out of taking calls.
Agent alert time
Agent alert time specifies how long an agent's phone rings before the queue redirects the call to the next agent.
Tip
Setting the Agent alert time to a minimum 20 seconds is the recommended setting.
Once you select your agent call routing options, select the Next button at the bottom of the Add a Call queue page.
Step 5: Callback
Callback allows eligible callers waiting in a call queue to receive a callback to the number they're calling from when an agent becomes available.
A caller becomes eligible for callback based on any one of the following configured conditions coming true:
Wait time in queue - Once a caller in queue exceeds this configured wait time they become eligible for callback. This option applies to callers at the front of the queue.
Number of calls in queue - Once the number of callers in queue reaches this level, new callers arriving in the queue become eligible for callback. This option applies to callers arriving in the queue. Callers that arrived in the queue before this limit was reached aren't eligible for callback.
Calls to agent ratio - Once the number of callers waiting in queue exceeds the ratio, new callers arriving in the queue become eligible for callback. This option applies to callers arriving in the queue.
Additionally, for a call to become eligible for callback, its inbound phone number must be a publicly dialable, non-premium phone number in E.164 format, and it must not be presenting to an agent.
After the music on hold finishes playing, eligible callers receive an option to request callback.
As an admin, you can also set the messaging a caller hears, the key they need to press, and an email address to be notified at if the callback fails.
Callback and Call queue timeouts
In order for an eligible call to be offered callback, the Call timeout value must be set high enough to allow the call to become eligible for callback and for the music to finish playing after the call becomes eligible.
Consider the following call queue configuration:
- Call back wait time in queue: 60 seconds
- Call Queue Timeout: 120 seconds
- Call Queue Music: Default
After waiting in the queue for 60 seconds, the caller becomes eligible for callback. However, as the default music is two minutes long, the call queue timeout occurs first and callback isn't offered.
Once a caller has successfully requested a callback, the callback request is also subject to the call queue timeout configuration. If a callback request times out, the information about the caller is sent to the configured email notification address.
For a callback to be successful, the call queue timeout value must be high enough to allow for the call to become eligible, for the music to stop playing, for a caller to successfully request a callback, and for the callback to be queued until an agent becomes available and answers the call.
Note
For callers within the North American Numbering Plan, in addition to the eligibility requirements already listed and in order to become eligible for callback, the inbound phone number must not start with any of the following digits:
Starting Digits |
1-242, 246, 264, 268, 284 |
1-340, 345 |
1-441 , 473 |
1-500 |
1-600, 649, 658, 664, 670, 671, 684 |
1-700, 721, 758, 767, 784, 787 |
1-800, 811, 822, 833, 844, 855, 866, 877, 888 |
1-809, 829, 849, 868, 869, 876 |
1-900, 939 |
1-nnn-555-1212 |
1-nnn-555,0100-0199 |
Once you select your callback options, select the Next button at the bottom of the Add a Call queue page.
Callback via PowerShell
Expand to see PowerShell options and examples
PowerShell Examples
Calls become eligible after waiting 60 seconds
To create a new call queue, use the New-CsCallQueue cmdlet, as shown in the following example:
New-CsCallQueue -Name "Callback Eligible After 60 seconds" -UseDefaultMusicOnHold $true -LanguageID en-US -IsCallbackEnabled $true -CallbackRequestDtmf "Tone1" -WaitTimeBeforeOfferingCallbackInSecond 60 -CallbackOfferTextToSpeechPrompt "If you would like to have a callback when an agent becomes available, press 1" -CallbackEmailNotificationTarget <Team or DL GUID>
To modify an existing call queue, use the Set-CsCallQueue cmdlet, as shown in the following example:
Set-CsCallQueue -Identity <Call Queue GUID> -IsCallbackEnabled $true -CallbackRequestDtmf "Tone1" -WaitTimeBeforeOfferingCallbackInSecond 60 -CallbackOfferTextToSpeechPrompt "If you would like to have a callback when an agent becomes available, press 1" -CallbackEmailNotificationTarget <Team or DL GUID>
Calls become eligible for callback when there are more than 50 calls in queue
To create a new call queue, use the New-CsCallQueue cmdlet, as shown in the following example:
New-CsCallQueue -Name "Callback Eligible After 50 calls" -UseDefaultMusicOnHold $true -LanguageID en-US -IsCallbackEnabled $true -CallbackRequestDtmf "Tone1" -NumberOfCallsInQueueBeforeOfferingCallback 50 -CallbackOfferTextToSpeechPrompt "If you would like to have a callback when an agent becomes available, press 1" -CallbackEmailNotificationTarget <Team or DL GUID>
To modify an existing call queue, use the Set-CsCallQueue cmdlet, as shown in the following example:
Set-CsCallQueue -Identity <Call Queue GUID> -IsCallbackEnabled $true -CallbackRequestDtmf
"Tone1" -NumberOfCallsInQueueBeforeOfferingCallback 50 -CallbackOfferTextToSpeechPrompt "If you would like to have a callback when an agent becomes available, press 1" -CallbackEmailNotificationTarget <Team or DL GUID>
Calls become eligible for callback when there are 2 times more calls than agents
To create a new call queue, use the New-CsCallQueue cmdlet, as shown in the following example:
New-CsCallQueue -Name "Callback Eligible After 2x calls to agents" -UseDefaultMusicOnHold $true -LanguageID en-US -IsCallbackEnabled $true -CallbackRequestDtmf "Tone1" -CallToAgentRatioThresholdBeforeOfferingCallback 2 -CallbackOfferTextToSpeechPrompt "If you would like to have a callback when an agent becomes available, press 1" -CallbackEmailNotificationTarget <Team or DL GUID>
To modify an existing call queue, use the Set-CsCallQueue cmdlet, as shown in the following example:
Set-CsCallQueue -Identity <Call Queue GUID> -IsCallbackEnabled $true -CallbackRequestDtmf
"Tone1" -CallToAgentRatioThresholdBeforeOfferingCallback 2 -CallbackOfferTextToSpeechPrompt "If you would like to have a callback when an agent becomes available, press 1" -CallbackEmailNotificationTarget <Team or DL GUID>
Calls become eligible for callback after waiting 60 seconds or when there are more than 50 calls in queue
To create a new call queue, use the New-CsCallQueue cmdlet, as shown in the following example:
New-CsCallQueue -Name "Callback Eligible After 60s or 50 calls" -UseDefaultMusicOnHold $true -LanguageID en-US -IsCallbackEnabled $true -CallbackRequestDtmf "Tone1" -WaitTimeBeforeOfferingCallbackInSecond 60 -NumberOfCallsInQueueBeforeOfferingCallback 50 -CallbackOfferTextToSpeechPrompt "If you would like to have a callback when an agent becomes available, press 1" -CallbackEmailNotificationTarget <Team or DL GUID>
To modify an existing call queue, use the Set-CsCallQueue cmdlet, as shown in the following example:
Set-CsCallQueue -Identity <Call Queue GUID> -IsCallbackEnabled $true -CallbackRequestDtmf "Tone1" -WaitTimeBeforeOfferingCallbackInSecond 60 -NumberOfCallsInQueueBeforeOfferingCallback 50 -CallbackOfferTextToSpeechPrompt "If you would like to have a callback when an agent becomes available, press 1" -CallbackEmailNotificationTarget <Team or DL GUID>
Step 6: Exception handling
Exception handling determines how calls are handled when certain exceptions occur.
Each exception allows you to disconnect the call or redirect it to any of the call routing destinations.
For example, when Overflow occurs, you might send calls to a backup Call queue, but when Timeout or No Agents occurs, you might want the callers to leave a shared voicemail.
Overflow: Set how to handle call overflow
Maximum calls in the queue specifies the maximum number of calls that can wait in the queue at any given time.
The default is 50, but it can range from 0 to 200.
When this limit is reached, the call is handled as specified by the When the maximum number of calls is reached setting.
This limit applies only to calls that are waiting in queue to be answered.
Note
If the maximum number of calls is set to 0, the greeting message can't play.
Call timeout: Set how to handle call timeouts
Call Timeout: maximum wait time specifies the maximum time a call can be on hold in the queue before it's redirected or disconnected.
You can specify a value from 0 seconds to 45 minutes.
No Agents Opted/Logged In: Set how to handle calls when no agents are opted/logged into the queue
This call exception handling option handles calls when no agents are opted into the queue or all agents are logged out of the queue.
Apply to All or New Calls controls whether or not the no agents call treatment applies to:
- All Calls (default) - calls already in queue and new calls arriving to the queue, or
- New Calls Only - only new calls that arrive once the No Agents condition occurs, existing calls in queue remain in queue
Note
The No Agents handling exception occurs under the following conditions:
- Presence based routing off: No agents are opted into the queue.
- Presence based routing on: No agents logged in, or all agents are in Appear Offline.
If agents are logged in or opted in, then calls are queued.
Important
Known Issues:
- When Longest idle is selected as the routing method, the No Agents treatment will not work when New Calls Only is selected and new calls will be queued. The All Calls option works as expected. Support is investigating.
- Don't include any special characters in the greeting message when redirecting to Voicemail (shared) as these will not be spoken by the system.
Nested Auto attendants and Call queues
Nested Auto attendants and Call queues, or auto attendants and call queues that don't directly answer phone calls, no longer require a Resource Account and associated licensing.
Existing configurations that use Resource Accounts will continue to function and remain fully supported. A combination of both methods can be used at the same time.
When call queue Exception handling occurs, the Voice app
destination for Overflow, Timeout, and No Agents can refer to an auto attendant or call queue directly instead of the Resource Account for that auto attendant or call queue.
For more information, see Nested Auto attendant and Call Queue
Once you select your call overflow, call timeout, and no agents handling options, select the Next button at the bottom of the Add a Call queue page.
Nested auto attendants and call queues via PowerShell
Expand to see PowerShell options and examples
Overflow to another Auto attendant or Call queue
To modify an existing call queue, use the Set-CsCallQueue cmdlet, as shown in the following examples:
Overflow
Set-CsCallQueue -Identity <CallQueue GUID> -OverflowAction Forward -OverflowActionTarget <Auto Attendant or Call Queue GUID>
Timeout
Set-CsCallQueue -Identity <CallQueue GUID> -OverflowAction Forward -TimeOutActionTarget <Auto Attendant or Call Queue GUID>
No Agents
Set-CsCallQueue -Identity <CallQueue GUID> -OverflowAction Forward -NoAgentActionTarget <Auto Attendant or Call Queue GUID>
Additional messaging
The Overflow, Call timeout, and No Agents exception redirect options for Person in organization and Voicemail personal support additional prompting just like the other redirect options.
Additional messaging via PowerShell
Expand to see PowerShell options
Caution
These configuration options are currently only available through PowerShell cmdlets and they don't appear in Teams admin center. If these options are configured through PowerShell, any changes to the Call queue through Teams admin center erases these settings.
Step 7: Authorized users
Authorized users specifies the users who are authorized to make changes to this Call queue. You can determine the capabilities that the users have through Teams voice applications policies assigned to your users.
To add a user to the authorized users:
- Select Add, search for the user, select Add, and then select Add.
Important
A user must have a policy assigned that enables at least one type of configuration change and must also be assigned as an authorized user to at least one Auto attendant or Call queue.
A user can't make any configuration changes if:
- The user has a policy assigned but isn't assigned as an authorized user to at least one Auto attendant or Call queue.
- The user is assigned as an authorized user to at least one Auto attendant or Call queue but doesn't have a policy assigned.
Note
A maximum of 15 authorized users can be assigned to the Call queue.
For more information, see Set up authorized users.
Once you select your authorized users, select the Submit button at the bottom of the Add a Call queue page.
Hiding authorized users via PowerShell
Expand to see PowerShell options
Caution
These configuration options are currently only available through PowerShell cmdlets and they don't appear in Teams admin center. If these options are configured through PowerShell, any changes to the Call queue through Teams admin center erases these settings.
Hiding authorized users
Hidden authorized users are authorized users who shouldn't appear on the list of supervisors for the agents who are members of a particular call queue.
Hidden authorized users aren't visible to Queues app users.
If you're an administrator, you can use the following diagnostic tool to validate that a Call queue is able to receive calls: