Documentation
How Presify works.
Presify is a Microsoft Teams presence tracker. This page is for the owners and managers who read the timelines and the IT admins who connect it. It covers setup, what we collect, how to read your dashboard and reports, what the flags mean, how your data is handled, and how to ask your AI assistant.
- How Presify worksSetup, permissions, reading timelines, flags
- AI assistant connector (MCP)Claude, ChatGPT, Microsoft Copilot
- API versioning policyPermanent paths, 90 days’ notice
On this page
Getting started
Presify is built on Microsoft Graph, so there is nothing to install on devices. A Microsoft tenant administrator grants Presify read-only consent once, then chooses who to monitor: everyone in the directory, or specific people. Guest accounts are never monitored. Setup takes about five minutes, and presence history builds from that point on: Teams keeps no history of its own for Presify to backfill.
- 1An admin approves read-only access
One Microsoft sign-in by a Microsoft 365 admin. Nothing installed.
- 2Choose who to monitor
Everyone in the directory, or specific people. Guests are never monitored.
- 3History builds from there
Presence is sampled on a short, regular interval from the moment you connect.
From the Security page you can review exactly what Presify can and cannot see. The Microsoft permissions we request are all read-only and limited to presence, user profiles, and group and directory information: the minimum needed to label and scope the people you monitor.
Microsoft Graph permissions
Presify requests four read-only application permissions, which a tenant admin consents to once, plus the delegated User.Read permission each person grants when they sign in to Presify. Nothing here grants access to message content, chats, calls, files, or calendars.
- ApplicationRead-onlyPresence.Read.All
Reads each monitored user’s Teams presence: Available, Away, Busy, Offline, and the activity behind it. This is the core signal Presify reports on.
- ApplicationRead-onlyUser.Read.All
Reads basic directory profile (display name, user principal name, account type) to label the people you monitor and to exclude guest accounts.
- ApplicationRead-onlyDirectory.Read.All
Reads group membership, so you can scope monitoring to a security or distribution group and keep group-based enrollment in sync.
- ApplicationRead-onlyMailboxSettings.Read
Reads only each user’s time zone and working hours from their Outlook mailbox settings, so timelines render in their local time and the business-hours overlay is correct. It does not read mailbox content (no email, no calendar), only those two settings.
- DelegatedRead-onlyUser.Read
Lets each authorized person sign in to Presify with their own Microsoft account. It grants no access to anyone else’s data.
What Presify collects
Presify reads the Teams presence your team already broadcasts: the availability and the activity behind it. It never reads message content, chats, calls, files, or calendars.
Read: Teams presence
- Available: online and reachable.
- Busy: online but in a call or meeting, or set to Do Not Disturb.
- Away: signed in but idle.
- Offline: not signed in (shown as the gray track on the timeline).
Never read
- Messages
- Chats
- Calls
- Files
- Calendars
Presence is sampled by polling Microsoft Graph on a short, regular interval, so the timeline reflects each user’s status at each sample rather than every momentary change.
What monitored users experience
Presify does not install an agent or interrupt monitored users. Presence is read from the Microsoft Graph API on the server side, so there is no software on anyone’s device and nothing to install or sign into. Teams behaves exactly as before.
Because Microsoft does not display a user-facing prompt for tenant-admin Graph consent, your team will not see a notification from Presify. Providing any employee notice required by law or policy is your responsibility. We recommend telling your team that their presence is monitored: see the FAQ and Section 6 of the Terms.
A notice template is built in. Settings, then Employee notice, holds a template you can copy or download, and a way to record when you provided it.
Reading your dashboard and reports
The dashboard shows each monitored user’s day as a 24-hour status bar with their business hours outlined, colored by presence (green Available, amber Away, red Busy, gray Offline). Time that hasn’t happened yet stays gray.

Online time counts the time a user showed as Available or Busy. Away and Offline do not count toward online time. Click any user to open their presence calendar: months with monitoring data are highlighted, and clicking a day shows that day’s full presence timeline.
Times shown in CDT (their Outlook timezone) · Business hours 08:00–17:00 CDT (their Outlook working hours)
Hover or tab through the bar for each segment.
| Time | Status | Duration |
|---|---|---|
| 8:05 AM – 9:30 AM | Available | 1h 25m |
| 9:30 AM – 10:15 AM | In a meeting | 45m |
| 10:15 AM – 10:40 AM | Be right back | 25m |
| 10:40 AM – 12:00 PM | Available | 1h 20m |
| 12:00 PM – 12:45 PM | Away | 45m |
| 12:45 PM – 2:10 PM | Available | 1h 25m |
| 2:10 PM – 2:55 PM | In a call | 45m |
| 2:55 PM – 3:20 PM | Away | 25m |
| 3:20 PM – 4:22 PM | Available | 1h 02m |
Available plus Busy on this sample day adds up to 6h 42m online. The three Away stretches do not count.
Reports export the same analysis to Excel for a date range, with a methodology sheet so the numbers are reviewable for HR or compliance. Reports are available from Standard up; the Member CSV is on every plan.
- PDF scorecard
- Excel report
- Member CSV
- Anomalies CSV
Understanding flags (anomalies)
Flags come from Presify’s anomaly detection and appear on the Anomalies page in the app. Anomaly detection is probabilistic: each flag marks a presence pattern that stands out from typical interactive use. Every pattern shows how it is calculated, and a flag should be reviewed alongside other context, since Presify describes what it observed, not intent. The patterns Presify checks:
- Basic and the free trial0
- Standard · Idle suppression1
- Pro and Scale · all six6
Idle suppression
HighStandard and upA long, continuous online period with no idle time recorded at all.
How Idle suppression is calculated
Looks for a continuous stretch where the account stays present and never reports Idle. Teams normally switches an account to Idle after the keyboard and mouse are inactive for a few minutes. This flags a span of 5 or more hours of presence with no Idle at all, but only when the rest of that day is flat (few status changes around the span), so a genuine heads-down work block inside an otherwise active day is not flagged. Flagged high. (The 5-hour floor and this flat-day check are tunable per workspace.)
Unbroken Available
MediumHigh at twice the thresholdPro and ScaleStayed Available with no status change for an unusually long, continuous stretch.
How Unbroken Available is calculated
Looks for a single Available status that runs with zero changes for at least your anomaly threshold (4 hours by default). Typical use records frequent transitions like Away, Busy, or In a meeting. Flagged medium, or high once the run reaches twice the threshold.
Overnight presence
LowMedium on 2+ nightsPro and ScaleRecorded online time during overnight hours, between midnight and 5 a.m.
How Overnight presence is calculated
Adds up online time (green statuses only, so Away and Offline do not count) that falls inside the overnight window, midnight to 5 a.m. in your timezone, for each calendar day. A day is flagged only when that total reaches at least 60 minutes, so a brief 3 a.m. email check is ignored. One night is low severity, the same pattern on two or more nights is medium.
No activity variation
MediumPro and ScaleOnline for most of the day with no change in the reported Teams activity.
How No activity variation is calculated
Checks days where the account is online for at least your anomaly threshold (4 hours by default) but the Teams activity never changes, staying on a single value all day with no In a call, Presenting, or Be right back. Flagged medium.
Robotic regularity
HighPro and ScaleStatus changes spaced at unusually even, regular intervals.
How Robotic regularity is calculated
Measures the time between status changes and tests how even those gaps are. With at least five consecutive gaps it computes the coefficient of variation (the standard deviation divided by the mean), and a value below 10 percent means the changes are spaced almost perfectly evenly. Flagged high.
Weekend uniformity
LowPro and ScaleWeekend presence totals are statistically similar to weekday totals.
How Weekend uniformity is calculated
Compares average online time on weekdays against weekends over the reporting window, and needs at least five weekdays and two weekend days to run. When the two averages land within 10 percent of each other, weekend activity closely mirrors weekday activity. Informational, flagged low.
Presence isn’t productivity. Presify gives you a directional read on when people are online and how much, and flags patterns worth a look. What you do with it starts with a conversation.
Data handling and privacy
Presify is built and hosted in the US: your workspace data is stored and processed on US-based cloud infrastructure. Every record is scoped to your tenant and encrypted, access is least-privilege, and state-changing actions are recorded in your audit log. Retention depends on your plan. You can delete a single user’s presence history or your whole account’s data at any time from Settings.
| Plan | Team size | History kept |
|---|---|---|
| Basic | Up to 5 people | |
| Standard | Up to 15 people | |
| Pro 50 | Up to 50 people | |
| Pro 100 | Up to 100 people | |
| Pro 250 | Up to 250 people | |
| Scale | 251 seats and up |
Presify can track people in most countries except the European Economic Area, the United Kingdom, Switzerland, and Canada. Anyone whose Microsoft 365 directory location (usage location or country) is set to one of those is excluded automatically, so keep those fields populated. Wherever your people are, your organization is responsible for notice, a lawful basis, and the local laws that apply to them. See the FAQ and Data Processing Agreement.
Ask your AI assistant
Every plan includes a read-only connector for AI assistants that support the Model Context Protocol (MCP), such as Claude, ChatGPT, and Microsoft Copilot (through Copilot Studio). Connect one and ask about presence history, online time, flags, and coverage in plain language; flag and coverage answers follow your plan.
An assistant sees only what the person who connected it can see in Presify, so a monitor gets answers only about the people assigned to them. It can never change anything, and any connection can be revoked at any time under Settings, then Connections. Connections and revocations are recorded in your audit log (viewable on Pro and Scale). Per-assistant setup is in Connect an AI assistant, and the connector’s compatibility promises are in the API versioning policy.
How many hours a day was my team online the week of May 18?
Presify · get_presence_summary · read-only
That averages about 7.3h a tracked day per person.
A pattern, not proof.
Set up Presify in about five minutes.
One read-only Microsoft sign-in, nothing installed, and the history starts building from the moment you connect.