What you need
Before starting, make sure you have:- Organization admin access in Cal.com
- Microsoft Entra admin access to register an application and grant admin consent
- A Microsoft 365 tenant with the domain you want to configure
Step 1: Register an application in Microsoft Entra ID
Open the Microsoft Entra admin center
Create a new app registration
Cal.com Delegation Credential).Choose supported account types
Register
Step 2: Add API permissions
The application needs two Microsoft Graph application permissions so Cal.com can read and write calendars and resolve users by email. A third permission,Application.ReadWrite.OwnedBy, is only required if you want Cal.com to rotate the client secret automatically before it expires.
Open API permissions
Select Microsoft Graph
Add the required permissions
Calendars.ReadWriteUser.Read.AllApplication.ReadWrite.OwnedBy— skip this one if you plan to opt out of automatic secret rotation
Grant admin consent
Step 3: Create a client secret
Open Certificates & secrets
Set a description and expiry
Cal.com DWD) and choose an expiration period that suits your security policy.Copy the secret Value
Step 4: Create the Delegation Credential in Cal.com
Open Delegation Credential settings
Add a new credential
Fill in the form
- Domain: Enter your Microsoft 365 domain (for example,
acme.comif your emails are@acme.com) - Workspace Platform: Select Microsoft 365
- Client ID: Paste the Application (client) ID from Step 1
- Tenant ID: Paste the Directory (tenant) ID from Step 1
- Client Secret: Paste the secret Value you copied in Step 3
Create the credential
Step 5: Enable the Delegation Credential
Toggle to enabled
What happens after enabling
Once the Delegation Credential is enabled:- Microsoft 365 Calendar is auto-connected for all organization members whose email matches the configured domain — they do not need to connect it manually
- New members added to the organization automatically get their calendar connected
- Members cannot disconnect the delegation-managed calendar credential (they can still connect additional calendars manually)
Client secret rotation
Microsoft Entra client secrets expire, so the credential needs a new secret before that happens. By default, Cal.com handles this automatically.- Automatic rotation (default): With
Application.ReadWrite.OwnedBygranted, Cal.com mints a new client secret ahead of expiry and promotes it once it’s confirmed to work — no action needed from you. - Manual rotation (opt-out): You can opt a credential out of automatic rotation if you’d rather manage secrets yourself, for example to keep full control over your app registration’s credentials. This is currently only available through the Cal.com API v2 — set
optOutAutoSecretRotation: truewhen creating or updating the delegation credential. There is no toggle for this in the Cal.com dashboard yet.
What happens after opting out
Once a credential has opted out of automatic rotation, Cal.com stops minting and promoting secrets for it. Instead, it sends a reminder: about 14 days before the current secret expires, Cal.com fires aDELEGATION_CREDENTIAL_ROTATION_REQUIRED webhook so you can rotate the secret yourself before the credential stops working.
To act on the reminder:
- Create a new client secret for the application in the Microsoft Entra admin center (see Step 3 above).
- Update the delegation credential in Cal.com with the new secret value, either from Settings → Organization → Delegation Credential or via the API.
Application.ReadWrite.OwnedBy — Cal.com never attempts to modify the app registration’s secrets for an opted-out credential.
Disabling the Delegation Credential
Disabling a Delegation Credential:- Immediately stops auto-connecting calendars for members who haven’t manually connected Microsoft 365
- Preserves existing calendar preferences (selected calendars and destination calendar) for members who had them configured
- Background jobs clean up delegation-specific credential records over time
Frequently asked questions
Do members need to do anything after the credential is enabled?
Do members need to do anything after the credential is enabled?
What if a member already connected Microsoft 365 manually?
What if a member already connected Microsoft 365 manually?
What permissions does the application get?
What permissions does the application get?
- Calendars.ReadWrite — read availability and create or update calendar events for members in the configured tenant.
- User.Read.All — resolve the Microsoft 365 user for a Cal.com member by their email address.
- Application.ReadWrite.OwnedBy — rotate the client secret on the app registration Cal.com owns before it expires. Only needed if you use automatic secret rotation; skip it if you opt out and rotate secrets manually.
Application.ReadWrite.OwnedBy is scoped to applications the credential owns — it cannot modify other apps in your tenant.What happens when the client secret expires?
What happens when the client secret expires?
Application.ReadWrite.OwnedBy granted, Cal.com automatically rotates the client secret before it expires — you do not need to create a new secret manually. If you’ve opted out of automatic rotation, or the permission is not granted (or admin consent is revoked), the credential stops working once the secret expires. Create a new client secret in the Microsoft Entra admin center and update the credential in Cal.com from the Delegation Credential settings.Can I turn off automatic secret rotation?
Can I turn off automatic secret rotation?
DELEGATION_CREDENTIAL_ROTATION_REQUIRED webhook about 14 days before their secret expires, as a reminder to rotate it manually.