Unify Logo Footer.svg
Unify Integrations
Logo
Microsoft Calendar

Microsoft Calendar

Logo

15 mins READ

Microsoft Calendar is the calendar in Outlook and Microsoft 365, used to organize events, set reminders and manage meetings across time zones. The UnifyApps Microsoft Calendar connector uses the Microsoft Graph API v1.0 to create, update and delete calendars and events, respond to meeting invitations, manage event attachments, check free/busy schedules, read Teams online meetings, attendance reports, recordings and transcripts, look up users, and react to new, updated and deleted events from workflows and agents.

This guide covers every authentication type available on the connection form, and the actions and triggers supported, along with the Microsoft Graph permission each one needs.

Authentication

Before you begin, you should have the following information:

  • Connection name: a descriptive name such as MyAppCalendarIntegration, so the connection is easy to identify later.

  • Authentication type: select the type of authentication for connecting to your Microsoft Calendar account:

    1. OAuth

    2. OAuth with Client credentials

    3. Client credentials

Every authentication type has an optional Tenant ID field. If you leave it blank, common is used, which accepts both Microsoft accounts and work or school accounts. You can also enter organizations (work or school accounts only), consumers (Microsoft accounts only), or your tenant ID or domain name.

The two OAuth types have a required Scopes field. By default, 16 of its 19 scopes are selected: Calendars.Read, Calendars.ReadWrite, Calendars.Read.Shared, Calendars.ReadWrite.Shared, Files.ReadWrite, OnlineMeetings.Read, OnlineMeetings.ReadWrite, OnlineMeetingRecording.Read.All, OnlineMeetingTranscript.Read.All, OnlineMeetingArtifact.Read.All, Mail.ReadWrite, MailboxSettings.Read, People.Read, User.Read, User.Read.All and offline_access. User.ReadBasic.All, VirtualEvent.Read and VirtualEvent.ReadWrite are in the list but not selected: add the two VirtualEvent scopes to use the town hall and webinar actions. The defaults cover every other action below except List group members and the contact actions; their permissions (GroupMember.Read.All, Contacts.Read and Contacts.ReadWrite) are not in the Scopes list, so use Client credentials for them. Keep Calendars.Read selected, because Test Connection lists your calendars. Some of these scopes, such as OnlineMeetingRecording.Read.All, OnlineMeetingTranscript.Read.All and User.Read.All, need an administrator's consent. If you cannot get admin consent, remove the scopes you do not need; see the Scopes Required column in the tables below.

1. OAuth

Use this when you want to connect with your own Microsoft account and do not need to register an app in Azure.

  1. Enter a Connection name.

  2. Select OAuth as the Authentication type.

  3. Leave Tenant ID blank (common), or enter your tenant ID to restrict sign-in to one organization.

  4. Keep the default Scopes, or select only the scopes you need. offline_access is always added so the connection can refresh its token.

  5. Keep Delegated scopes turned on, so actions run as the signed-in user.

  6. Click Authorize. You are redirected to the Microsoft sign-in page.

  7. Sign in with the Microsoft account whose calendar the connection should use.

  8. Review the permissions requested on the consent screen and click Accept.

  9. You are redirected back to UnifyApps with a confirmation that the account is connected.

2. OAuth with Client credentials

Use this when your organization wants the connection to use its own Azure app registration, while actions still run on behalf of a signed-in user.

Step 1: App registration in Azure

  1. Log in to the Azure portal, search for App registrations and click New registration.

  2. Enter a name and choose the supported account type: single tenant (only your organization) or multitenant (any Microsoft Entra ID tenant).

  3. Under Redirect URI, choose platform Web and paste the Callback URL shown on the connection form (it is copyable and differs per environment).

  4. Click Register.

  5. On the Overview tab, copy the Application (client) ID and the Directory (tenant) ID.

microsoft-calendar-screenshot-1.png
microsoft-calendar-screenshot-1.png

  1. Go to API permissions → Add a permission → Microsoft Graph → Delegated permissions and add offline_access and the permissions the connection needs, for example Calendars.ReadWrite and OnlineMeetings.Read. Click Grant admin consent if your tenant requires it, or if you add permissions that need it.

  2. Go to Certificates & secrets → New client secret, add a description and expiry, and click Add. Copy the secret Value immediately and store it securely. It is not shown again.

Step 2: Connection setup in UnifyApps

  1. Open Connections → New Connection → Microsoft Calendar and enter a Connection name.

  2. Select OAuth with Client credentials as the Authentication type.

  3. Enter the Client ID and Client secret copied from Azure.

  4. Enter the Tenant ID. Use your Directory (tenant) ID if the app is single tenant; leave it blank (common) only for a multitenant app.

  5. Select the same Scopes you added as delegated permissions in Azure.

  6. Keep Delegated scopes turned on.

  7. Click Authorize, sign in with Microsoft and accept the consent screen.

  8. Confirm the success message after the redirect back to UnifyApps.

3. Client credentials

Use this for app-only access that does not depend on a signed-in user. The app acts as itself with Application permissions, and needs admin consent.

Step 1: Register the app in Azure

  1. Log in to the Azure portal, search for App registrations and click New registration.

  2. Enter a name and supported account type, and click Register. No redirect URI is needed for this flow.

  3. From Overview, copy the Application (client) ID and Directory (tenant) ID.

  4. Go to API permissions → Add a permission → Microsoft Graph → Application permissions and add the permissions the connection needs, for example Calendars.ReadWrite.

  5. Click Grant admin consent. Application permissions do not work until an administrator grants consent.

  6. Go to Certificates & secrets → New client secret, click Add, and copy the secret Value immediately.

Note: Application permissions such as Calendars.ReadWrite reach every mailbox in the organization; an Exchange administrator can limit them with RBAC for Applications in Exchange Online. Online meeting actions with app-only access also need a Teams application access policy that allows the app for the meeting organizers.

Step 2: Create the connection in UnifyApps

  1. Select Client credentials as the Authentication type.

  2. Enter the Client ID and Client secret.

  3. Enter the Tenant ID. Use your actual tenant ID here; the default common is meant for the sign-in based flows.

  4. Leave Delegated scopes turned off (the default for this type). Actions then act on the calendar of the UnifyApps user who runs them, or on the user given in actions that take a user ID.

  5. Click Test Connection to validate the credentials, then click Create.

Actions

Permissions are Microsoft Graph permissions. Unless a row lists Delegated and Application separately, the same name applies to both: select it in Scopes for the OAuth types, or add it as an Application permission in Azure for Client credentials. When the least-privileged permission is not in the form's Scopes list, select the broader one in brackets. Calendars.ReadBasic returns events without their body and attachments (its Application form is Calendars.ReadBasic.All); use Calendars.Read to get them. To read another user's calendar with a delegated connection, use the shared variant, for example Calendars.Read.Shared.

Actions

Description

Scopes Required

Accept a meeting invitation

Accepts a meeting invitation for an event in Microsoft Calendar.

Calendars.ReadWrite

Add attachment to event

Adds an attachment to an existing event in Microsoft Calendar.

Calendars.ReadWrite

Add shared calendar event attachment

Attaches a file to an event on another user's calendar (or the signed-in user's, when no user ID is given) in Microsoft Calendar.

Calendars.ReadWrite (Calendars.ReadWrite.Shared for another user's calendar on the OAuth types)

Add town hall presenter

Adds a presenter to a virtual event town hall in Microsoft Calendar.

VirtualEvent.ReadWrite (delegated types only)

Add town hall registration

Creates a registration record for a registrant of a virtual event town hall in Microsoft Calendar.

Delegated: VirtualEvent.ReadWrite; Application: VirtualEventRegistration-Anon.ReadWrite.All

Cancel or delete shared calendar event

Deletes an event from another user's calendar (or the signed-in user's, when no user ID is given) in Microsoft Calendar.

Calendars.ReadWrite (Calendars.ReadWrite.Shared for another user's calendar on the OAuth types)

Create a calendar

Creates a calendar in Microsoft Calendar.

Calendars.ReadWrite

Create a calendar event

Creates an event in a calendar, by calendar ID, in Microsoft Calendar.

Calendars.ReadWrite

Create contact

Creates a contact in a mailbox or one of its contact folders in Microsoft Calendar.

Contacts.ReadWrite (not in the Scopes list; add it as an Application permission for Client credentials)

Create contact folder

Creates a contact folder in a mailbox in Microsoft Calendar.

Contacts.ReadWrite (not in the Scopes list; add it as an Application permission for Client credentials)

Create shared calendar event

Creates an event on another user's calendar (or the signed-in user's, when no user ID is given) in Microsoft Calendar.

Calendars.ReadWrite (Calendars.ReadWrite.Shared for another user's calendar on the OAuth types)

Create town hall

Creates a virtual event town hall in draft mode in Microsoft Calendar.

VirtualEvent.ReadWrite (delegated types only)

Create webinar

Creates a virtual event webinar in draft mode in Microsoft Calendar.

VirtualEvent.ReadWrite (delegated types only)

Decline a meeting invitation

Declines a meeting invitation for an event in Microsoft Calendar.

Calendars.ReadWrite

Delete a calendar event

Deletes a calendar event by calendar and event ID in Microsoft Calendar.

Calendars.ReadWrite

Delete attachment

Deletes an event attachment in Microsoft Calendar.

Calendars.ReadWrite

Delete contact

Deletes a contact by its ID in Microsoft Calendar.

Contacts.ReadWrite (not in the Scopes list; add it as an Application permission for Client credentials)

Delete contact folder

Deletes a contact folder and every contact in it in Microsoft Calendar.

Contacts.ReadWrite (not in the Scopes list; add it as an Application permission for Client credentials)

Fetch contact

Gets one contact by its ID in Microsoft Calendar.

Contacts.Read (not in the Scopes list; add it as an Application permission for Client credentials)

Fetch contact folder

Gets one contact folder by its ID in Microsoft Calendar.

Contacts.Read (not in the Scopes list; add it as an Application permission for Client credentials)

Fetch event by ID

Fetches an event by ID from Microsoft Calendar.

Calendars.ReadBasic (or Calendars.Read)

Fetch event by ID for user

Fetches the full details of an event by ID from a specific user's mailbox, including the ID of the calendar it belongs to.

Calendars.ReadBasic (or Calendars.Read)

Get a calendar

Gets a calendar by its ID in Microsoft Calendar.

Calendars.ReadBasic (or Calendars.Read)

Get a calendar event

Gets a calendar event by calendar ID in Microsoft Calendar.

Calendars.ReadBasic (or Calendars.Read)

Get attachment by ID

Gets a specific attachment of an event by ID in Microsoft Calendar.

Calendars.Read

Get attachment by ID for user

Gets a specific attachment of an event for a user in Microsoft Calendar.

Calendars.Read

Get attachments

Gets the attachments of an event in Microsoft Calendar.

Calendars.Read

Get attachments in file

Gets the attachments of an event in Microsoft Calendar and returns their content as files.

Calendars.Read

Get attendance report

Gets the attendance report for a Teams meeting.

OnlineMeetingArtifact.Read.All

Get attendance report for user

Gets one Teams attendance report with its per-attendee records, in another user's mailbox (or the signed-in user's, when no user ID is given), in Microsoft Calendar.

OnlineMeetingArtifact.Read.All

Get current user

Retrieves the signed-in user's profile (mail, user principal name, display name and ID). Requires a delegated connection.

User.Read (delegated types only)

Get events delta

Gets the events added, updated or deleted in a date range of a user's primary calendar since the last delta call. Pass the returned delta token to the next call to get only new changes.

Calendars.Read

Get file

Gets a file from its content URL in Microsoft Calendar.

The permission for the resource the URL points to, for example OnlineMeetingRecording.Read.All for a meeting recording

Get Free/Busy Events

Gets free/busy events from Microsoft Calendar.

Calendars.ReadBasic (or Calendars.Read)

Get mailbox settings

Gets the mailbox settings for a calendar in Microsoft Calendar.

MailboxSettings.Read

Get online meeting by ID

Retrieves a specific online meeting by its meeting ID in Microsoft Calendar.

Delegated: OnlineMeetings.Read; Application: OnlineMeetings.Read.All

Get online meeting transcript

Gets the content of a single transcript of an online meeting in Microsoft Calendar.

OnlineMeetingTranscript.Read.All

Get online meeting transcript for user

Gets the content of a single transcript of an online meeting for a specific user in Microsoft Calendar.

OnlineMeetingTranscript.Read.All

Get schedule for current user

Gets the free/busy schedule for a user in Microsoft Calendar.

Calendars.ReadBasic (or Calendars.Read)

Get schedule for user

Gets the free/busy schedule for a user in Microsoft Calendar.

Calendars.ReadBasic (or Calendars.Read)

Get town hall by ID

Retrieves a virtual event town hall by its ID in Microsoft Calendar.

Delegated: VirtualEvent.Read; Application: VirtualEvent.Read.All

Get user

Gets user information by user ID from Microsoft Calendar.

Delegated: User.ReadBasic.All (or User.Read.All); Application: User.Read.All

Get user mailbox settings

Gets a user's mailbox settings for a calendar in Microsoft Calendar.

MailboxSettings.Read

Get users with given displayName

Gets all users associated with the account that have a given display name.

Delegated: User.ReadBasic.All (or User.Read.All); Application: User.Read.All

Get users with given prefix

Gets all users associated with the account that match a given prefix.

Delegated: User.ReadBasic.All (or User.Read.All); Application: User.Read.All

Get webinar by ID

Retrieves a virtual event webinar by its ID in Microsoft Calendar.

Delegated: VirtualEvent.Read; Application: VirtualEvent.Read.All

List all instances of an event

Lists all instances (occurrences) of a recurring event. When no calendar is given, the event is looked up anywhere in the user's mailbox.

Calendars.ReadBasic (or Calendars.Read)

List attachments

Lists all attachments of an event in Microsoft Calendar.

Calendars.Read

List attendance records

Lists all attendance records for a Teams meeting in Microsoft Calendar.

OnlineMeetingArtifact.Read.All

List attendance reports

Lists all attendance reports for a specific Teams meeting.

OnlineMeetingArtifact.Read.All

List attendance reports for user

Lists the attendance reports of a Teams online meeting in another user's mailbox (or the signed-in user's, when no user ID is given) in Microsoft Calendar.

OnlineMeetingArtifact.Read.All

List calendar permissions

Lists the sharing permissions of a calendar in Microsoft Calendar.

Calendars.ReadBasic (or Calendars.Read)

List calendar view

Lists the events in a calendar view within a time range. Times are returned in UTC.

Calendars.ReadBasic (or Calendars.Read)

List calendar view for user

Lists the events in a calendar view within a time range for a specific user.

Calendars.ReadBasic (or Calendars.Read)

List calendars

Lists calendars in Microsoft Calendar.

Calendars.ReadBasic (or Calendars.Read)

List contact folders

Lists the contact folders of a mailbox in Microsoft Calendar.

Contacts.Read (not in the Scopes list; add it as an Application permission for Client credentials)

List contacts

Lists the contacts in a mailbox or one of its contact folders in Microsoft Calendar.

Contacts.Read (not in the Scopes list; add it as an Application permission for Client credentials)

List events

Lists events from a calendar in Microsoft Calendar, using the user's default calendar when no calendar is given.

Calendars.ReadBasic (or Calendars.Read)

List group members

Fetches the members or owners of a group in Microsoft Calendar.

GroupMember.Read.All (not in the Scopes list; add it as an Application permission for Client credentials)

List online meeting recordings

Lists the recordings of an online meeting in Microsoft Calendar.

OnlineMeetingRecording.Read.All

List online meeting recordings for user

Lists the recordings of a Teams online meeting in another user's mailbox (or the signed-in user's, when no user ID is given) in Microsoft Calendar.

OnlineMeetingRecording.Read.All

List online meeting transcripts

Lists the transcripts of an online meeting in Microsoft Calendar.

OnlineMeetingTranscript.Read.All

List online meeting transcripts for user

Lists the transcripts of an online meeting for a specific user in Microsoft Calendar.

OnlineMeetingTranscript.Read.All

List online meetings

Lists online meetings in Microsoft Calendar.

Delegated: OnlineMeetings.Read; Application: OnlineMeetings.Read.All

List online meetings for user

Lists online meetings for a specific user in Microsoft Calendar.

Delegated: OnlineMeetings.Read; Application: OnlineMeetings.Read.All

List recurring series

Lists the recurring series masters on a calendar (the repeating meetings themselves, not their occurrences) in Microsoft Calendar.

Calendars.ReadBasic (or Calendars.Read)

List town hall presenters

Lists all presenters of a virtual event town hall in Microsoft Calendar.

Delegated: VirtualEvent.Read; Application: VirtualEvent.Read.All

List town hall sessions

Lists the session summaries of a virtual event town hall in Microsoft Calendar.

Delegated: VirtualEvent.Read; Application: VirtualEvent.Read.All

List town halls

Lists all virtual event town halls created in the tenant in Microsoft Calendar.

Application only: VirtualEvent.Read.All (Client credentials; the organizers need a Teams application access policy)

List users

Lists users in Microsoft Calendar.

Delegated: User.ReadBasic.All (or User.Read.All); Application: User.Read.All

List webinars

Lists all virtual event webinars created in the tenant in Microsoft Calendar.

Application only: VirtualEvent.Read.All (Client credentials; the organizers need a Teams application access policy)

Publish town hall

Publishes a virtual event town hall to make it visible to its audience in Microsoft Calendar.

VirtualEvent.ReadWrite (delegated types only)

Respond to shared calendar event

Accepts, tentatively accepts or declines a meeting invitation on another user's calendar (or the signed-in user's, when no user ID is given) in Microsoft Calendar.

Calendars.ReadWrite (Calendars.ReadWrite.Shared for another user's calendar on the OAuth types)

Search calendar events

Searches calendar events by KQL query (participants, subject, date range) using the Microsoft Graph Search API.

Calendars.Read (delegated types only; Microsoft Search covers only the signed-in user's own calendar)

Search calendar events(Batch)

Searches calendar events in batches in Microsoft Calendar.

Calendars.ReadBasic (or Calendars.Read)

Search calendar(Batch)

Searches calendars in batches in Microsoft Calendar.

Calendars.ReadBasic (or Calendars.Read)

Search mailbox contacts

Searches the mailbox contacts by name, company or email address in Microsoft Calendar.

Contacts.Read (not in the Scopes list; add it as an Application permission for Client credentials)

Search people

Searches the people most relevant to the signed-in user, across their contacts and their organization, in Microsoft Calendar.

Delegated: People.Read; Application: People.Read.All

Update a calendar event

Updates an event by calendar and event ID in Microsoft Calendar.

Calendars.ReadWrite

Update contact

Updates the given fields of a contact in Microsoft Calendar.

Contacts.ReadWrite (not in the Scopes list; add it as an Application permission for Client credentials)

Update contact folder

Renames a contact folder in Microsoft Calendar.

Contacts.ReadWrite (not in the Scopes list; add it as an Application permission for Client credentials)

Triggers

Triggers

Description

Scopes Required

Calendar event change

Triggers in real time when a calendar event is created, updated or deleted in Microsoft Calendar.

Calendars.Read (with the OAuth types, only the signed-in user's own calendar)

Delete calendar event

Triggers when a calendar event is deleted in Microsoft Calendar.

Calendars.Read

New calendar event

Triggers when a new calendar event is created in Microsoft Calendar.

Calendars.Read

Updated calendar event

Triggers when a calendar event is updated in Microsoft Calendar.

Calendars.Read