Skip to content

How to Set Up Auto Attendant in Microsoft Teams

Set up a Teams auto attendant the right way: resource accounts, the free virtual user license, business hours, holidays, dial-by-key menus, and call queue routing.

MGMCSA Guru Team June 11, 2026 10 min read
Teams auto attendant call flow showing a resource account routing callers through a business-hours menu to operators and call queues

An auto attendant is the automated menu callers hear when they ring your main number: “Press 1 for sales, 2 for support, or stay on the line for the operator.” In Microsoft Teams it’s a Teams Phone feature, and setting one up is mostly about getting two things right before you touch the menu — the resource account and its license. Skip those and the auto attendant either won’t accept a phone number or won’t route calls at all.

This walkthrough builds a working auto attendant from scratch: create and license the resource account, set business hours and holidays, build the menu with dial-by-key options, and hand callers off to people or call queues. Most of it happens in the Teams admin center, with PowerShell shown where it’s faster or where the portal hides an option.

Before you start

  • You're a Teams Administrator or Global Administrator
  • Your tenant has at least one paid Teams Phone license (this unlocks the free virtual user licenses)
  • You've decided which number callers will dial — and whether it's a Calling Plan, Operator Connect, or Direct Routing number
  • You know the menu structure: how many options, what each one does, and who answers
  • Any people or call queues the menu routes to already exist and are voice-enabled

How the pieces fit together

A Teams auto attendant is not a standalone object you can dial. It always sits on top of a resource account — a special, disabled user account in Microsoft 365 that represents the service instead of a person. The resource account holds the license and, when needed, the phone number. The auto attendant is then associated with that account.

The call path usually looks like this: a caller dials a service number on a resource account, the auto attendant answers and plays a menu, and each menu choice routes to a person, an external number, a voicemail, a call queue, or another auto attendant. Larger setups nest auto attendants and queues several layers deep.

Typical auto attendant flow
flowchart LR
C[Caller dials main number] --> RA[Resource account]
RA --> AA[Auto attendant menu]
AA -->|Press 1| Q1[Sales call queue]
AA -->|Press 2| Q2[Support call queue]
AA -->|Press 0 or timeout| OP[Operator]

Step 1: Create the resource account

Create a resource account for the auto attendant before you do anything else. In the Teams admin center, go to Voice > Resource accounts > Add. Give it a display name like AA-MainLine, a UPN, and set the account type to Auto attendant.

If you prefer PowerShell, connect with the Microsoft Teams module and create the account with the auto attendant application ID:

Connect-MicrosoftTeams

New-CsOnlineApplicationInstance `
  -UserPrincipalName "[email protected]" `
  -DisplayName "AA Main Line" `
  -ApplicationId "ce933385-9390-45d1-9512-c8d228074e07"

The GUID ce933385-9390-45d1-9512-c8d228074e07 is the fixed application ID for auto attendants. Call queues use a different ID (11cd3e2e-fccb-42ad-ad00-878b93575e07), so don’t mix them up — the account type can’t be changed cleanly after creation.

Step 2: Assign the virtual user license

This is the step people miss, and it’s why a brand-new auto attendant often refuses a phone number. The resource account needs a Microsoft Teams Phone Resource Account license — the virtual user license. It’s free, but it only becomes available once your tenant owns at least one paid Teams Phone license.

Assign it in the Microsoft 365 admin center under the resource account’s Licenses and apps, or with Graph/PowerShell. Give it a usage location first if the account doesn’t have one.

Step 3: Assign a phone number (only where it’s needed)

Only the auto attendant that callers reach from outside needs a phone number. Nested auto attendants and the call queues behind them route internally, so they run on a licensed resource account with no number at all.

Where the number comes from depends on your voice setup:

Where the service number comes from

Calling Plan Get or port a number through Microsoft, then assign it to the resource account in the admin center
Operator Connect Acquire the number from your carrier in the admin center, then assign it
Direct Routing Assign an on-premises number and a voice routing policy with PowerShell (Set-CsPhoneNumberAssignment)

If you’re still deciding which of those to run, the differences in cost, control, and setup are covered in Calling Plan vs Operator Connect vs Direct Routing. For Direct Routing, assigning a number looks like this:

Set-CsPhoneNumberAssignment `
  -Identity "[email protected]" `
  -PhoneNumber "+15551234567" `
  -PhoneNumberType DirectRouting

Step 4: Build the auto attendant

With the account created and licensed, go to Voice > Auto attendants > Add. The wizard walks through general settings, call flows, hours, and dial scopes.

General settings. Name the auto attendant, pick the operator (a person, queue, or another auto attendant that callers reach by pressing 0 or asking for the operator), set the time zone, and choose the language. The time zone matters more than it looks — business hours and holidays are evaluated against it, so a wrong zone sends callers to the after-hours greeting at the wrong time.

Greetings. You can type a greeting for text-to-speech or upload an audio file (WAV or MP3). Text-to-speech is quicker to change and easy to keep consistent; a recorded file sounds more polished for a public main line. Keep the greeting short and put the menu options right after it.

Step 5: Set business hours and after-hours handling

The auto attendant evaluates three kinds of rules in priority order: holidays first, then after-hours, then business hours. Whatever matches the current date and time wins.

Define your business hours on the call flow screen — for example, Monday to Friday 9:00 to 17:00. Then set what happens during those hours (usually the main menu) and what happens outside them (an after-hours greeting that points to voicemail, a reduced menu, or an emergency option).

A common layout:

  • During business hours: play the greeting, then present the dial-by-key menu.
  • After hours: play a short “our office is closed” greeting, then send to voicemail or a single option.

Step 6: Add holiday schedules

Holidays are reusable schedules you create once and attach to any auto attendant. Build them under Voice > Holidays, listing the dates for each holiday (you can add several years at once). Then, in the auto attendant’s call flow, add a holiday rule that links the schedule to its own greeting and routing.

Because holidays take top priority, a date that falls on a holiday ignores the business-hours and after-hours rules entirely. That’s what you want — a public holiday during a normal weekday should play the holiday message, not the standard menu.

Step 7: Build the menu and dial-by-key options

The menu is where callers press a key to get somewhere. Each option maps a key (0–9) to an action:

Menu option targets

Key 1 Route to the Sales call queue
Key 2 Route to the Support call queue
Key 3 Transfer to a specific person (voice-enabled user)
Key 4 Play an announcement (e.g. address or hours), then return to the menu
Key 0 Operator
No input / invalid key Repeat the menu, then fall back to the operator

Set the directory search options on the same screen if you want callers to reach people by name. Dial by name lets them spell or speak a person’s name; dial by extension routes by number. You control who’s reachable with dial scopes — include the whole directory or limit it to specific groups, which is the clean way to keep ex-employees or shared mailboxes out of the search.

Auto attendants and call queues are designed to work together: the auto attendant greets and sorts callers, and the call queue rings a group of agents and holds people in line with music. A menu option that points to “Sales” almost always routes to a Sales call queue, not a single person.

To wire this up, the call queue must already exist on its own resource account. Then, in the auto attendant menu option, choose Redirect to > Call queue and pick it. The queue handles agent ringing, overflow, and timeout from there.

If you haven’t built the queues yet, set those up first — the menu can only point to a queue that exists. The companion guide Set up call queues in Microsoft Teams covers agent assignment, routing methods, and overflow handling.

Step 9: Test the flow end to end

Before you publish the number, test every path:

  • Call the service number during business hours and walk each menu option to its destination.
  • Call after hours (or temporarily narrow the business hours) to confirm the after-hours greeting and routing.
  • Add today as a temporary holiday to verify the holiday greeting plays, then remove it.
  • Press nothing and press an invalid key to confirm the fallback lands on the operator.
  • Try dial-by-name if you enabled it, and confirm excluded users aren’t reachable.

If calls reach the auto attendant but routing to a person fails, that target user usually isn’t voice-enabled or is missing a number — fix the destination, not the auto attendant.

Common setup mistakes

A few problems come up again and again:

  • No virtual user license, so the resource account can’t take a number. Assign the free Teams Phone Resource Account license and wait for it to apply.
  • Number assigned to the wrong account. The number belongs on the resource account, not on a real user.
  • Wrong time zone, so business hours fire at the wrong local time and callers get the after-hours message during the day.
  • Menu points to an empty or unlicensed queue. Build and license the queue’s resource account first.
  • Dial scope left wide open, exposing every account in the directory through dial-by-name.

If callers report broader problems like dropped audio or one-way audio once they’re connected, that’s a media/network issue rather than auto attendant config — the Teams meeting and call troubleshooting guide covers those paths.

Wrapping up

The auto attendant itself is the easy part. The setup that trips people up is upstream: create a resource account, give it the free virtual user license, then assign a number only where callers dial in directly. Once that foundation is in place, building the menu, hours, holidays, and queue hand-offs is straightforward, and you can nest attendants and queues as deep as your org needs.

Start simple — a single menu with two or three options and a clear operator fallback — get it tested end to end, then layer on holidays and nested routing. For more on the voice features around it, browse the Microsoft Teams guides.

Frequently asked questions

Does a Teams auto attendant need a license?

Yes. The auto attendant runs on a resource account, and that account needs a Microsoft Teams Phone Resource Account license. The license itself is free, but your tenant has to own at least one paid Teams Phone license to unlock the free virtual user licenses. You only need a phone number on the resource account if callers will dial the auto attendant directly from the outside world.

What is a resource account in Teams?

A resource account is a disabled user object in Microsoft 365 that represents an auto attendant or call queue instead of a person. It holds the virtual user license and, optionally, a service phone number. Every auto attendant and call queue is tied to exactly one resource account.

Can an auto attendant transfer calls to a person?

Yes. Menu options and the operator can route to a person in your organization, an external phone number, a voicemail, another auto attendant, or a call queue. To reach a specific internal person they need to be voice-enabled with a Teams Phone license and a number or an online voice routing policy.

Do I need a phone number for every auto attendant?

No. Only the auto attendant that callers reach directly needs a service number. Nested auto attendants and call queues behind it route internally, so they don't need their own external numbers — they just need a resource account with the virtual user license.

How do holidays work in a Teams auto attendant?

You create holiday schedules under Teams admin center > Voice > Holidays, then attach them to the auto attendant with their own greeting and call handling. Holiday rules take priority over business-hours and after-hours rules on the dates they cover.

Can callers dial a person by name in a Teams auto attendant?

Yes. The auto attendant supports dial by name (directory search by spelling or speaking a name) and dial by extension. You control which users are reachable with dial scopes, so you can include or exclude specific groups from the directory.

Sources & further reading

Official vendor documentation referenced while writing this guide.

MG

MCSA Guru Team

IT & Systems Administration

We are working IT pros and system administrators who spend our days in Windows Server, Microsoft 365, and the wider Microsoft stack. MCSA Guru is where we write down the fixes and walkthroughs we wish we had found the first time.

MCSA Guru provides independent, educational IT guidance. Microsoft, Windows, Windows Server, Microsoft 365, Exchange, and Microsoft Teams are trademarks of Microsoft Corporation; Docker is a trademark of Docker, Inc. MCSA Guru is not affiliated with or endorsed by Microsoft or Docker. Always test changes in a safe environment before applying them in production.

Related guides

Fixing something right now?

Jump straight into the guide library or search for the exact error or task you are dealing with.