Office
See where your team is and what is waiting on you, on a live office floor
Overview
The Office shows your workspace as an office floor. Each person on your staff sits at a desk in their team's pod, takes lunch in the break room and a break on the lounge sofa, and drives out when they head to a customer. The board, the TV, and your own desk show what is waiting.
Everything in the Office comes from data Core already has: timers, visits, approved time off, and the statuses people set for themselves. An admin can also connect Zoom, Microsoft 365, and Slack so calls, meetings, and lunch breaks show up on their own (see Automatic status). Core never tracks anyone's location.
Note: This feature is currently experimental. Some functionality may change as we refine the experience based on user feedback.
Turning it on
The Office is an experimental page, so an owner has to turn on experimental access first:
- For yourself (owners): go to Settings → Profile, find Experimental Features, and turn on Enable Experimental Features.
- For someone else: open their team member page (for example from Teams), find Experimental Access, and turn on Enable experimental pages. They may need to refresh or sign back in.
Office then appears in the sidebar under Experimental. Every staff role can open it. Customer portal users never see it.
The Office fills the window, without the app's sidebar or top bar; Back to the dashboard at the top of the tool rail on the right takes you back. The floor needs a screen at least 1024 pixels wide. On a phone, a tablet, or a narrower window, the Office opens as the list view.
Places and activities
Each person has a place (where they are) and an activity (what they are doing there).
| Place | When |
|---|---|
| Out | Approved out of office, vacation, company event, or company travel; they set their status to Away or Errand; or Teams or their Outlook calendar shows them out of office |
| Customer site | They tapped Arrived on a visit and have not tapped Done; or their calendar shows a busy event right now at a customer's address or site, or with the Onsite category |
| On the road | They tapped On my way on a visit and have not arrived, or they are on company travel while working |
| Break room or lounge | They set their status to Lunch (a break-room chair) or Break (the lounge sofa), or their Slack status reads as lunch or a break. When one is full, people sit in the other |
| Phone booth | They are on a Zoom Phone call, Zoom shows them on a call, or Teams shows them in a call |
| Conference room | They are in a Zoom or Teams meeting or presenting, Teams shows them busy, or their calendar shows a busy event right now (in the named room when the event books one); or approved training time (the Training room) |
| At desk | The default when nothing else applies |
When more than one applies, the first row in the table wins.
The phone booths and the conference rooms are part of every floor. When Microsoft 365 is connected, the conference rooms carry your real room names, in alphabetical order, as many as fit; everyone else in a named room shares Other rooms.
| Activity | When |
|---|---|
| Presenting | Zoom or Teams shows them presenting |
| Call | Zoom or Teams shows them on a call |
| Meeting | They are in a Zoom or Teams meeting, or their calendar shows a busy event |
| Lunch or Break | They set that status, or their Slack status reads that way |
| Focus | They set Focus, or Zoom or Teams shows Do not disturb (Teams also Focusing or Urgent interruptions only) |
| Working | A timer is running. Their laptop shows the ticket or project if you can already see that time entry |
| Paused | A timer is paused |
| Idle | No timer, but they did something you can see in the last 30 minutes, Zoom or Teams shows them Available, or they turned off status sharing |
| Away | Nothing to go on, or they are out. Away, Be right back, Off work, and Offline in Zoom or Teams count as nothing to go on |
Small badges sit on top: a house for Remote (their own Remote status, or a calendar event marked Working elsewhere), a pager for On call (approved on-call time), a red light over a desk when something is waiting on that person, and a gold nameplate on your own desk.
Labels follow the seat: someone on a break shows as Lounge, and someone at lunch as Break room.
Status key
One color per status is used everywhere in the Office: chips, the list view, map pins, and the key under the cards.
- Working: a timer is running on a ticket or project.
- Needs you: something waiting on you involves this person: a notification, an SLA, or an approval.
- Paused or idle: at work without a running timer: a timer is paused, or they were active in Core recently.
- Call or meeting: on a call, in a meeting, or presenting.
- Focus: focusing. Hold questions until they are done.
- Away: out, at lunch, on a break, or nothing from them in the last 30 minutes.
- In the field: on the way to a customer visit, or at one.
Select an entry in the key, or the status pill in the inspector, to read what it means (click, tap, Enter, or Space). The dots also differ in shape, so they read without color: needs-you dots are diamonds, and paused dots are pause bars.
The top bar and cards
The top bar has search, the floor switcher ("9 of 14 in · 1 on the road"), the elevator stops, the clock, the count of items waiting on you, and your own chip. Three cards sit under it:
- Open tickets: with today's change and the unassigned count.
- In today: people in out of everyone, with how many are in the field, at lunch, or on a break. It counts everyone on your staff, up to 1,000 people.
- SLA on time: the share of SLA tickets resolved on time in the last 30 days. It needs permission to read SLA data; without it, or when the data can't be read, the card says SLA data isn't available. With no SLA tickets in that time, it says No SLA tickets in the last 30 days.
The floor draws up to 200 people. In a larger workspace, the docked list and search say Showing 200 of 250 people (with your numbers), and the list view shows everyone.
Staying up to date
The floor updates live. Next to the clock, the Live pill changes when it is not:
- Reconnecting…: the live connection is down. The floor still checks for changes every minute until it is back (every 3 minutes while it is connected).
- Updated 10:42: the last refresh failed, so you are looking at the floor as it was at that time. The next refresh that works brings it back to Live.
Setting your status
Open the status menu:
- In the Office: select your own chip at the right of the top bar, or press
S. - Anywhere else in Core: select your status in the sidebar footer, under the clock.
Only people who can set a status get the menu: staff with a team member record, with experimental features on. For anyone else, the chip in the Office only shows their name.
| Status | Lasts |
|---|---|
| Lunch | 45 minutes |
| Break | 15 minutes |
| Focus | 60 minutes |
| Errand | 60 minutes (you show as out, with "Errand" on the door board) |
| Remote | Until midnight in your own time zone |
| Away | Until you clear it |
You can add a note of up to 40 characters. The status ends on its own and your character walks back to the desk. Choose Clear status to end it early.
The same menu has the Share my status, Show meeting subjects, and Office sounds switches (see Opting out).
Automatic status
Zoom, Microsoft 365, and Slack can keep people's places up to date without anyone setting a status. Each source is optional and experimental, an admin connects it once for the whole workspace, and it only covers people who are matched to a staff member.
| Source | What it adds |
|---|---|
| Zoom | Zoom Phone calls and Zoom "On a call" (phone booth); Zoom meetings and presenting (conference room); Do not disturb (Focus); Available, Away, and Offline |
| Microsoft 365: Teams | Calls (phone booth); meetings, conference calls, presenting, and Busy (conference room); Do not disturb, Focusing, and Urgent interruptions only (Focus); out of office (Out); Available, Away, Be right back, Off work, and Offline |
| Microsoft 365: Outlook calendar | Out of office events (Out); Working elsewhere (the Remote badge); busy events at a customer's address or site, or with the Onsite category (customer site, labeled with the customer's name); any other busy event (conference room, in the named room when the event books one). Tentative and free events are ignored |
| Slack status | A status that clearly reads as lunch (break room) or a break (lounge) |
Zoom and Microsoft 365 are checked every minute, and Zoom calls and meeting joins and Outlook calendar changes usually arrive within seconds. Every automatic status ends on its own within 10 minutes unless Core keeps hearing it, so nobody gets stuck in a meeting that is over. A Slack lunch or break lasts until the Slack status ends, or 45 minutes (lunch) or 15 minutes (break) when it has no end time, and never longer than 2 hours (lunch) or 1 hour (break).
What Core keeps, and what it never stores
Core keeps one coarse status per person and source, such as "in a meeting" or "on a call", plus the conference room name when a meeting books a room and the customer's name when a calendar event is at a customer. These end on their own and are deleted within a day. No report or export uses them.
Core never stores:
- The status text from Zoom, Teams, or Slack, or a Slack status emoji.
- Phone numbers, or who someone called or talked to.
- Zoom meeting topics.
- Message bodies, attendees, or attachments.
- Meeting subjects, unless that person turned on Show meeting subjects (Microsoft 365 only). Subjects of private or confidential events never appear.
Opting out
Both switches are in your status menu (see Setting your status). Only you can change them.
- Share my status: turn it off and every source skips you, and any automatic status already shown for you stops showing. See Opting out of status sharing.
- Show meeting subjects: off by default, and it works only while Share my status is on. Turn it on to show the subjects of your meetings from your Microsoft 365 calendar in the Office.
Who can connect
Owners, super-admins, and admins can connect and manage these sources: their roles include managing integrations, and Core checks that permission again on every connect, sign-in return, and change. Like the rest of the Office, the sources need experimental features turned on for the person connecting them (see Turning it on). Without it, the Office presence section, the Slack page's Office status from Slack card, and the Zoom and Microsoft 365 pages do not appear, and agents connected through MCP do not see these sources in their integration list.
Where to find them, with experimental features on:
- Owners and super-admins: Settings → Integrations → Office presence has a card for each source with its connection state.
- Admins: the Integrations settings tab is only for owners and super-admins, so admins open each page directly: Zoom, Microsoft 365, and Slack (the Office status from Slack card).
If a settings page can't read the connection, it says Couldn't load the connection. Refresh to try again. rather than showing the source as not connected.
Zoom
Early access: until Rooted's Zoom app passes Zoom Marketplace review, only Rooted's own Zoom account can connect. To use Zoom in your workspace, contact us and we'll help you install it.
- Open the Zoom page (see Who can connect) and select Connect Zoom.
- Sign in as a Zoom account admin and approve Core's access for your Zoom account.
- Core matches Zoom users to staff by exact email. Under People, check the matches, select Match by email for any new ones, and choose a staff member for any Zoom user Core could not match (no email, or an email shared by more than one person). Core never changes a match on its own.
- Use Test connection at any time.
One Zoom account can connect to one Core workspace. Core checks up to 200 matched people per workspace every minute.
If Zoom stops accepting Core's connection (for example, the app was removed in Zoom, or Zoom's authorization expired), Core stops checking Zoom within a minute, deletes the stored tokens and matches, clears Zoom statuses, and the page shows Zoom was disconnected with Connect Zoom to start again. Disconnect asks Zoom to remove Core's access (if Zoom does not confirm, Core tells you to remove the app in Zoom yourself), deletes the stored tokens and matches, and clears Zoom statuses. Connecting again matches by email again, so redo any matches you made by hand.
Microsoft 365
Early access: until Rooted finishes Microsoft publisher verification, Microsoft shows the app Core by Rooted as unverified when an administrator approves it. Contact us and we'll help you install it.
- Open the Microsoft 365 page (see Who can connect) and select Connect with Microsoft 365.
- Sign in as a Global Administrator or Privileged Role Administrator and approve Core's read-only permissions for your organization.
- Sign in once more as a Global Administrator or Privileged Role Administrator of the same organization (not a guest) so Core can confirm which organization approved and that an administrator did. If your role is eligible in Privileged Identity Management, activate it first.
- Select Match by email, then map anyone else by hand under People.
- Use Test connection to see each permission as granted or not.
Core asks for four application permissions, all read-only:
| Permission | Used for |
|---|---|
User.Read.All | Listing directory users to match them to staff by email |
Presence.Read.All | Teams availability and activity |
Calendars.Read | Free/busy, show-as, location, and categories of current events, and the subject only for people who share it. Microsoft's permission allows reading whole events in every mailbox; Core requests only these fields and never reads bodies, attendees, or attachments. An Exchange application access policy can limit it to some mailboxes |
Place.Read.All | The conference room list, read once a day |
One Microsoft 365 organization can connect to one Core workspace. If Microsoft stops accepting Core (for example, consent or Core's permissions were removed in Entra ID), polling stops within a minute, Core removes matches, statuses, and rooms for that organization, and the page says Microsoft 365 was disconnected; select Grant consent again to reconnect. A connection that is stored but turned off shows Reconnect needed; Grant consent again fixes that too. Disconnect stops polling and removes matches, statuses, rooms, and calendar change subscriptions; if part of that cleanup fails, the page says so and refreshes, and you can select Disconnect again. Your organization's consent stays in Entra ID until you delete Core by Rooted under Enterprise applications.
Slack status
Slack status is off by default.
- Connect Slack first (see the Slack guide).
- Open the Slack page, find Office status from Slack, and turn it on.
- Select Link accounts by email. Core links a Slack account when its email matches exactly one staff member and never changes an existing link.
Only a status that clearly reads as lunch or a break counts, such as "Lunch" or a coffee emoji with "back in 10". Meetings, calls, focus time, time off, travel, and every other status are ignored. Turning the toggle off ends every Slack status in the Office right away. Turning it on can take up to a minute to take effect everywhere.
Slack status needs no new Slack permission: it uses the users:read scope Core's Slack app already has. No reinstall is needed for most workspaces: once Rooted updates Core's Slack app to send status changes, they reach existing installs. If statuses still do not show after you turn it on, select Reconnect Slack on the same card.
Notes for Core operators
- Zoom's Validate button for the event endpoint only succeeds once a deployment serving
/api/webhooks/zoomhasZOOM_CLIENT_ID,ZOOM_CLIENT_SECRET, andZOOM_WEBHOOK_SECRET_TOKEN. The endpoint saved in Zoom is production. - A Vercel Preview with Deployment Protection turned on rejects Zoom's and Microsoft Graph's webhook calls. The one-minute check still updates statuses there, just more slowly.
- Slack status needs Core's Slack app updated once from
slack-app-manifest.yamlso Slack sends status changes. - When two servers refresh the same Zoom token at once, the one that lost waits about two seconds for the new token before it treats the connection as revoked. A Zoom uninstall event dated before a reconnect is ignored.
- Microsoft Graph calendar subscriptions made before a Microsoft 365 reconnect are replaced at the next hourly run.
Visit check-in
Technicians assigned to a visit can tap three buttons on it:
- On my way: you show as on the road.
- Arrived: you show at the customer site. The visit moves to In progress when the first assigned technician arrives.
- Done: you head back. The visit is completed when the last assigned technician taps Done.
Core does not record your location when you tap these buttons. Owners, admins, managers, and technicians can check in; members and observers cannot.
Keyboard shortcuts
| Key | Action |
|---|---|
| Arrow keys | Pan the floor (at the Bullpen, ← and → step between pods) |
Arrow keys, Home, End on a person | Previous or next person, or the first or last (Shift with an arrow still pans) |
+ / - / 0 | Zoom in, zoom out, fit |
1 to 3 | Elevator: the Big Board, the Floor, or the Bullpen |
4 | Open my desk (the Blotter) |
Q / G | Open the Switchboard (ticket queue) or the T-card rack (field dispatch) |
P / W | Open the mailroom or the watercooler |
People are one stop for Tab: once you are on a person, the arrow keys, Home, and End move between people. Esc, or closing a panel, puts focus back on the selection, or on the floor when nothing is selected.
Open my desk (Blotter) on the tool rail does the same as 4. Sound is off until you turn it on.
What waits on you
N steps through your queue in this order:
- Notifications that need your response.
- Your tickets that have breached their SLA, then those at risk.
- Agent actions waiting for your approval, and Core AI waiting for your confirmation.
- Unassigned tickets, if you can dispatch.
Core AI in the Office
When your workspace has an AI key, the Core AI button sits at the bottom of the tool rail on the right, and ⌘. (Ctrl+. on Windows) opens it as it does elsewhere in Core. When Core AI asks you to confirm something, the item waiting on you reads Core AI is waiting for your confirmation; opening it opens Core AI. While Core AI is working on your request, its helper sprite at your desk shows what it is doing.
List view
/office?view=list shows the same people as a table grouped by place and team: name, place, activity, what they are working on, and how long. It is what the Office shows on screens narrower than 1024 pixels (phones, tablets, and narrow windows), and it is the view to use with a screen reader.
- The status key at the top spells out what each color means, and Status private marks people who keep their status to themselves.
- On a phone, each person has one actions menu with their links.
- Updated shows the time of the data you see, with a Refresh button. While the list is on screen, it refreshes itself every minute.
Press L, or the list button on the floor's right-hand rail, to make the list your default view; Show the floor switches back. The links under the docked list open the list once without changing your default. The floor remembers where you left the camera on each device.
Who sees what
Everyone who can open the Office sees each person's place and activity. Every active staff member appears, including people who have not turned the Office on for themselves. Detail follows the access you already have:
- Ticket or project on a laptop: owners, admins, and billing roles see everyone's; managers see people on teams they lead; everyone else sees only their own.
- Waiting items: you only see beacons for tickets you can already read.
- Automatic status: everyone who can open the Office sees the place and activity it produces, conference room names, and the customer's name for a calendar event at a customer. Meeting subjects appear only for people who chose to share them.
Opting out of status sharing
If you turn off Share my status in the Office, colleagues see you idle at your desk, and so do you. Your timer state, your self-set status, and any automatic status from Zoom, Microsoft 365, or Slack stop showing, and those sources skip you until you turn sharing back on. Turning sharing off also ends any status you have set, and you cannot set a new one until you turn sharing back on.
Approved time off and visits still show, because colleagues can already see those on the calendar and the dispatch board. People who can already read your time entries, such as admins, still see them on the Time Entries page.
Billing roles
Billing and Billing Admin users can open the Office, but they cannot read teams, schedules, or availability. For them:
- Everyone sits on the open floor instead of in team pods.
- Visits and the field map are empty.
- Approved time off does not show.
They do see SLA counts and SLA warning lights, because SLA status comes with ticket access, and they see what people are working on, because they can already read all time entries.
Display mode on an office TV
Open /office?display=1 for a TV. The floor fits the screen with the field map beside it, names and TV numbers are larger, and the view moves to new beacons and completed tickets on its own. There is no status menu or Core AI on a TV.
Nobody is there to press Try again, so a TV looks after itself: if the Office can't load at first, it tries again every 30 seconds and shows the countdown, and once loaded it reloads itself after 5 minutes without fresh data.
To set up a TV:
- Invite a dedicated user with the Observer role.
- As an owner, turn on Experimental Access for that user (see Turning it on).
- Sign in as that user on the TV and open
/office?display=1.
The Observer role can see places, activities, teams, visits, and time off, but not which ticket or project someone is working on.