Where a status comes from (precedence, top wins)
- User-configured — manually set status (with optional expiry) and status messages; beats everything until cleared/expired.
- App-driven states — In a call / In a meeting / Presenting come from actual service activity; Presenting also drives notification suppression.
- Calendar-driven — In a meeting from the Exchange calendar even if you never joined; Out of Office from automatic replies.
- Activity-driven — Available/Away from client input activity; Away after inactivity/lock, with mobile clients contributing their own (laggier) signal.
The aggregate publishes to subscribers — people whose client currently displays you. Subscription is on-view: your tile updates when someone is LOOKING at it; background contacts refresh lazily. That design choice is the root of half the mythology.
The honest lag table
| Transition | Typical feel |
|---|---|
| Available -> In a call | Seconds (service knows immediately) |
| Meeting start (calendar) | Around the start time, minute-ish granularity |
| Away on idle/lock | Minutes-scale by design (avoids flapping) |
| Mobile-only state changes | Laggiest; the phone's background limits apply |
| Cross-tenant (federated) viewers | Slower still; subscription hops tenants |
'Dave shows Available but he's gone' = activity-driven Away hasn't fired, or his phone is keeping him fresh — both by design. 'Shows In a meeting, isn't' = calendar-driven state from a meeting he declined to attend but not in calendar.
Presence as a control surface
Presence-based routing (call queues) and Do-Not-Disturb interplay make presence OPERATIONAL: a queue agent stuck on DND receives nothing; a boss's delegate setup changes who rings when Busy. When 'the queue skips me' arrives, presence precedence is the first suspect (see call-queues concept).
What to watch (proofs)
- The service's belief RIGHT NOW: Graph
GET /users/{id}/presence— availability- activity, bypassing every client cache; two calls a minute apart demonstrate propagation live.
- Who's overriding: the same payload distinguishes user-set (manual) states — 'perpetually Busy' users have usually pinned it themselves with no expiry.
- Calendar coupling: the calendar item vs presence at start time — the minute-level correlation proves layer 3.
- Queue interplay: agent presence at the moment a call skipped them (Queues app real-time view / analytics) — the skip explains itself.