azure-active-directorymicrosoft-graph-apimicrosoft-graph-calendar

How to Listen for Meeting Update or Cancellation Events at the Tenant Level in Microsoft Graph?


I'm trying to implement a solution where I can listen for changes to Microsoft Teams meetings (such as time updates, reschedules, or cancellations) across my entire tenant. My goal is to detect when any meeting within the organization is modified.

  1. Solution 1 - I explored Microsoft Graph change notifications (webhooks), but it appears that the supported resource for such notifications is: /users/{userId}/events

  2. Solution 2 - I also tried calling the Graph API to get meeting details using the joinWebUrl, with the intention of retrieving the organizer’s userId, and then setting up event subscriptions on that user’s calendar. However, I found that even the GET /users/{userId}/onlineMeetings API requires the userId upfront, which again I don’t have.

The problem is:

I do not have access to specific user IDs in advance.

I want to receive notifications for specific meeting(from meetingJoinUrl) updated, or deleted in the tenant.

Is there a way to:

Subscribe to meeting or calendar event changes globally at the tenant level?

Use application permissions to monitor changes without needing individual user IDs?

Or is there a recommended pattern (such as using Change Tracking, Delta queries, or a daemon process with calendar sync) to achieve this?

Any guidance or best practices for this use case would be appreciated.


Solution

  • Note: Microsoft Graph does not support tenant-wide subscriptions for meeting updates. To monitor all meetings, use application permissions to enumerate all users (/users), then either create individual calendar subscriptions (/users/{id}/events) or use delta queries (/users/{id}/events/delta) to track changes per user.

    Yes, you can add dedicated user to every meeting and tracking just that user’s calendar, but it requires ensuring the user is added to all meetings, and you'll need to handle subscription renewals too.

    Create the Dedicated User and Ensure the User is Added to Every Meeting.

    Now create a subscription for the user's calendar events:

    POST https://graph.microsoft.com/v1.0/subscriptions
    
    {
      "changeType": "updated,deleted", 
      "notificationUrl": "NotificationURL", 
      "resource": "/users/UserID/events", 
      "expirationDateTime": "2025-05-09T00:00:00.000Z",
      "clientState": "1234",
       "latestSupportedTlsVersion": "v1_2"
    }
    

    enter image description here

    Once the subscription is active, you'll receive notifications about any events this user is invited to (including meeting updates, cancellations, and reschedules).