Connecting a booking page to Outlook is straightforward for an individual and a small project for a company. The reason is that "Outlook" refers to at least three different back ends, and only one of them gives a scheduling tool everything it needs without somebody in IT getting involved.
If you are the person who has to get this approved, the useful move is to arrive with specifics: the exact permissions being requested, whether they act on your behalf or on the whole tenant, and what happens to the tokens. Admins refuse vague requests and approve precise ones.
This guide covers the three back ends, the permission model, booking rooms and shared mailboxes, and the corporate policies that most often block a connection.
Three Different Things Called Outlook
Work out which one you have before anything else. The quickest test is your sign-in address and who can reset your password.
| Microsoft 365 work account | Personal Outlook.com | On-premises Exchange | |
|---|---|---|---|
| Identity | Microsoft Entra ID tenant | Microsoft account | Your own Active Directory |
| Modern API available | Yes, Microsoft Graph | Graph, with gaps | No, Graph does not reach it |
| Admin can consent for everyone | Yes | No, there is no admin | Not applicable |
| Shared and room mailboxes | Yes | No such concept | Yes, but not via Graph |
| Free/busy for other people | Yes | No | Internal only |
Microsoft 365 is the well-supported case. Everything in this article applies.
Personal Outlook.com, Hotmail and Live accounts can connect and sync your own calendar, and that is usually enough for a solo consultant. What you do not get is anything that depends on a directory: room mailboxes, shared mailboxes, other people's availability, or tenant-level administration. There is nobody to grant admin consent because there is no tenant.
On-premises Exchange is the hard case. Microsoft Graph talks to Exchange Online, not to a server in your building. If your mailbox is genuinely on-premises, the practical options are to move the mailbox to Exchange Online, run Exchange hybrid so the mailbox is reachable through the cloud, or publish availability by other means. Exchange Web Services was the old bridge for this, and Microsoft has set October 2026 as the point at which third-party applications can no longer use EWS against Exchange Online, so building anything new on it would be a mistake.
How Microsoft Graph Sees Your Calendar
Modern integrations use Microsoft Graph, a single API surface at graph.microsoft.com. The endpoints that matter for scheduling are small in number:
/me/calendarslists the calendars on the mailbox, so you can choose which count as busy and which receives bookings./me/eventsand/me/calendars/{id}/eventsread and write events./me/calendar/getScheduletakes a list of email addresses, including room mailboxes, and returns availability without exposing event contents./me/mailboxSettingsreturns the mailbox time zone and working hours, which is how a tool can default your availability sensibly instead of guessing.
getSchedule is the Microsoft equivalent of a free/busy query, and it is worth knowing that its answer distinguishes free, tentative, busy, out of office and working elsewhere as separate states. That is finer grained than most calendar systems offer, and it means a well built integration can decide for itself whether a tentative hold should block a booking.
Delegated Versus Application Permissions
This is the distinction your admin cares about, and getting the language right will save you a week.
Delegated permissions mean the application acts as you, the signed-in user. The effective access is the overlap between what the app asked for and what you personally can do. If you cannot see a colleague's calendar in Outlook, the app cannot either. Typical delegated permissions for scheduling:
Calendars.ReadWrite, to read your calendar and write booking events.Calendars.ReadWrite.Shared, only if the tool needs to write to a calendar shared with you, such as a team or resource calendar.MailboxSettings.Read, to pick up your time zone and working hours.offline_access, which is what allows the refresh token to exist so sync keeps working after you close the browser.User.Read, to identify the account that was connected.
Application permissions mean the application acts with no user at all, using its own identity. An application-level Calendars.ReadWrite is a very different animal: by default it reaches every mailbox in the tenant. Admins are right to be cautious about that.
If application permissions are genuinely required, the mitigation to propose is scoping. Exchange Online lets an administrator restrict which mailboxes an application identity can touch, historically through application access policies and more recently through role-based access control for applications. Either way the shape of the request is the same: create a mail-enabled security group, put only the mailboxes that should be bookable in it, and scope the application to that group. An admin who hears "restricted to this group" will usually approve what they would refuse tenant-wide.
For a self-service scheduling product, delegated permissions are normally the correct answer and the easier sell. Each staff member connects their own mailbox and grants access to their own calendar only.
Why Your Admin May Have To Consent For Everyone
In a default tenant, users can consent to low-risk permissions themselves. Many organisations turn that off, either fully or by restricting consent to verified publishers. When it is off, clicking Connect produces a message telling you approval is needed from an administrator, and the underlying error code is AADSTS90094.
Three routes forward:
- Admin consent request. If the tenant has the consent request workflow enabled, the same screen offers a box to explain why you need it, which goes to a reviewer. This is the smoothest path.
- Tenant-wide grant. An administrator opens the application in the Entra admin center and grants consent on behalf of the organisation, once, for everyone. Nobody else sees a consent screen after that.
- Assignment. If the admin also enables user assignment for the app, only people assigned to it can connect. Anyone else gets
AADSTS50105. This is a feature, not a fault, and it is how you keep a paid seat count and a permission grant in step.
Booking Rooms And Shared Mailboxes
In Microsoft 365, a meeting room is a mailbox with a calendar, and that is exactly what makes it bookable by a scheduling tool. Rooms are usually grouped into room lists so they can be browsed by building or floor.
Room mailboxes have their own booking rules, configured in Exchange rather than in your scheduling product, and those rules win. The ones that catch people out:
- Automatic acceptance. A room set to auto-accept confirms bookings immediately. A room set to require a delegate sends the request to a human, so your booking sits tentative until they act.
- Booking window. Rooms often refuse requests more than a set number of days ahead. If your booking page offers three months and the room allows sixty days, the far-out bookings will bounce.
- Maximum duration. Long sessions can be rejected outright.
- Conflicts. Most rooms are configured to refuse overlaps, which is the behaviour you want.
- Subject handling. Many organisations strip the subject and body of room bookings for privacy, so do not rely on the room calendar showing the client name.
Shared mailboxes work differently. They are ordinary mailboxes without their own sign-in, so a person with Full Access permission reaches them as themselves. If you want a shared Front Desk calendar to receive bookings, the person connecting must already have access to it in Outlook, and the integration needs the shared variant of the calendar permission. For a team that rotates cover, pair this with round robin scheduling so the individual assignment and the shared calendar do not fight each other.
Conditional Access And Other Corporate Blockers
The connection can pass consent and still fail. The usual causes, in the order they turn up:
- Conditional Access requiring a compliant or hybrid-joined device. A server-side sync has no device. If a policy targeting all cloud applications demands one, the token request is refused with
AADSTS53003. The fix is a narrowly scoped exclusion for the application, which an admin can justify because the app is restricted to calendar data. - Sign-in frequency policies. A policy that forces reauthentication every so often will break unattended background sync, because there is nobody present to reauthenticate. Users see sync stopping on a regular rhythm.
- Continuous access evaluation. Tokens can be invalidated mid-life on a password change, a risk detection or an administrator revoking sessions. This is correct behaviour, and it means "reconnect the calendar" is a normal part of an offboarding or credential-reset runbook.
- Blocked third-party applications. Some tenants allow only applications from verified publishers, or only ones on an approved list.
- Guest and B2B accounts. If you are a guest in someone else's tenant, your calendar lives in your home tenant, and connecting the wrong account is a common mix-up.
What To Send Your IT Team
Put this in one message and you will get an answer far faster:
- The application name and publisher, and the application (client) ID if you can find it.
- The exact list of permissions requested, and the statement that they are delegated, not application-level, if that is the case.
- What data leaves the tenant. For a booking tool that uses availability queries rather than full event reads, say so plainly, because "start and end times only" is a much easier approval than "all event contents".
- Where refresh tokens are stored and how an admin revokes access for a single user or for everyone.
- Whether room or shared mailboxes are in scope, and which ones.
Setting It Up In appntmnts
In appntmnts, each user connects their own Microsoft 365 or Outlook.com account with delegated permissions, picks which calendars count as busy, and picks the calendar bookings are written to. If your tenant restricts consent, an administrator grants it once for the organisation and everyone else connects normally afterwards. Google accounts follow the same pattern and are covered in Google Calendar two way sync, and if sync stops later, work through why calendar sync fails before reconnecting blindly.
The current permission list and the disconnect instructions are on the integrations page. If you manage several locations or several rooms, read managing multiple staff and locations next, since the resource model matters more than the calendar plumbing once you pass a handful of people.