Forum Discussion
How much should Teams presence influence call routing
One thing I've noticed recently is that many Teams Phone environments still treat presence as a destination state rather than a routing input.
A typical flow might look like:
Caller selects an option
Call is transferred
User is unavailable
Caller ends up in voicemail or another queue
Technically the routing worked.
From the caller's perspective, it often didn't.
I'm curious how others are approaching this.
Are you using Teams presence as part of your call-routing logic?
For example:
Available → transfer immediately
Busy → offer an alternative path
In a meeting → capture context
Offline → route elsewhere
Or are traditional queues and escalation paths still sufficient for most scenarios?
Interested to hear what people are doing in real deployments.
2 Replies
- koenigSSIG-ITCopper Contributor
Good question — and one that exposes a broader visibility gap.
Before optimizing routing *logic*, the precondition is often
that someone can actually see presence state for a meaningful
set of users at once. In most Teams Phone setups, presence is
per-user and buried in individual profile cards — you can't
get a real-time overview of who's actually available across
the team without clicking through each person.
The practical approaches I've seen in real deployments:
1. **Call queues with presence-based routing** (built-in):
Works reasonably well for dedicated queue agents, but
still doesn't give supervisors live visibility across the
whole team.
2. **External presence dashboard**: Read all users via Graph
API (`getPresencesByUserId`), display in a wall view.
Supervisors can then see "5 of 12 agents are Available
right now" before even touching routing config.
The second approach actually helped inform routing decisions
in a few environments I know — you see in real-time when
presence quality degrades (too many Away/unknown states)
and can investigate before it hits callers.
[I built a tool for #2 — teamsdashboard.com — disclosure since
it's directly relevant to the question]
Hi Mefteh_W,
Great topic! This is something many Teams Phone administrators wrestle with. Here is what I have seen in real deployments:
In practice, presence-based routing in Teams Phone is partially supported but with important caveats:
- Call Queues with Presence-Based Routing: Teams does support presence-based routing in Call Queues. When you enable the option Presence-based routing in the Call Queue settings in the Teams Admin Center, agents who are set to Busy, In a meeting, or Do Not Disturb will be skipped, and the call will ring only agents whose presence is Available. This is the most reliable native implementation.
2. Auto Attendants: Auto Attendants do not natively check presence when transferring to a user. If you transfer to an individual user in Busy state, it will still ring them (and they can decline or let it time out). The workaround here is to transfer to a Call Queue instead of a direct user, then use presence-based routing in the queue.
3. Direct Routing and Power Automate: Some organizations use Power Automate with the Microsoft Graph Presence API to build more sophisticated routing logic, reading presence states dynamically and adjusting routing behavior accordingly.
For your model (Available = transfer immediately, Busy = alternative path, In a meeting = capture context, Offline = route elsewhere), this is achievable with a combination of Call Queues with presence routing and a well-designed Auto Attendant hierarchy.
Traditional queues still work well for most scenarios, but presence routing adds meaningful value for high-availability teams.