Outlook Calendar Change Notifications (Webhooks) not triggering despite successful Subscription validation

Mariam Alaa 0 Reputation points
2025-12-05T19:11:36.6766667+00:00

I am implementing real-time Outlook Calendar synchronization using Microsoft Graph API v1.0 and I am facing an issue where notifications are not being delivered.

Current Setup:

  1. Authentication: OAuth2 with offline_access and Calendars.Read scopes.
  2. Subscription: I have successfully created a subscription via POST /subscriptions.

Resource: /me/events

ChangeType: created,updated,deleted

  • NotificationUrl: A public HTTPS endpoint (hosted on a test environment).

Validation: My endpoint passes the validation handshake correctly (it returns 200 OK and the validationToken as text/plain). I receive a valid subscriptionId in response.

  1. Delta Sync: I have performed an initial sync and successfully stored the @odata.deltaLink.

The Problem: When I create or update an event in the Outlook calendar, my notificationUrl is not receiving any POST requests (Webhooks) from Microsoft Graph.

However, if I manually run a GET request using the stored @odata.deltaLink, the API correctly returns the new event data. This confirms that the event is registered in the system, but the "Push" notification is not triggering my endpoint.

My Question: Is there a known limitation, latency, or restriction for Change Notifications when using a Test/Developer Tenant or a Test Environment URL? Does the environment status affect the delivery of webhooks, or should I be looking elsewhere for the failure?

Microsoft Security | Microsoft Graph
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. Q&A Assist
    2025-12-05T19:11:50.1366667+00:00
    AI generated content. This question contains an answer created with AI from Q&A Assist. Learn more

    In your scenario, there are a few potential reasons why your notification URL is not receiving POST requests from Microsoft Graph, despite successfully creating the subscription and passing the validation handshake:

    1. Subscription Validity: Ensure that your subscription is still valid and has not expired. Subscriptions have a maximum lifetime, and if not extended, they will cease to send notifications.
    2. Webhook Endpoint Configuration: Verify that your public HTTPS endpoint is correctly configured to handle incoming POST requests. Check for any firewall or network settings that might be blocking requests from Microsoft Graph.
    3. Notification Delivery Latency: While Microsoft Graph typically delivers notifications promptly, there may be occasional delays. However, if you are consistently not receiving notifications, this might not be the issue.
    4. Test Environment Limitations: There are no specific known limitations regarding the use of a test or developer tenant affecting the delivery of webhooks. However, ensure that your test environment is publicly accessible and correctly set up to receive external requests.
    5. Change Notification Payload: When events are created or updated, ensure that they are indeed triggering the change notifications you subscribed to. If the changes do not match the specified changeType, notifications will not be sent.
    6. Multiple Subscriptions: If you have multiple subscriptions for the same resource, ensure that they do not conflict with each other, as this can sometimes lead to unexpected behavior.

    If you have checked all these aspects and are still facing issues, consider reviewing the logs of your webhook endpoint to see if any requests are being received or if there are any errors being logged that could provide further insight into the problem.

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.