Hi @Charmi
Thank you for reaching out to Microsoft Q&A.
From your description, the webhook subscription is getting created successfully, but notifications are not reaching your server when users are created or deleted. In Azure (Microsoft Entra ID / Microsoft Graph change notifications), this usually happens due to either endpoint validation issues, event behavior limitations, or delivery constraints rather than a simple misconfiguration.
Refer below points to resolve this issue:
1. Validate Webhook Endpoint Accessibility
Microsoft Graph sends notifications only if your endpoint is publicly accessible over HTTPS. If your server is behind a firewall, private network, or V-Net, notifications will not be delivered.
Ensure:
Endpoint is reachable from internet
HTTPS is enabled (TLS 1.2)
No firewall / WAF is blocking requests
If using APIM / App Gateway → check inbound rules (common blocking cause)
2. Ensure Proper Validation Handshake
During subscription creation, Microsoft Graph sends a validation request with a token, and your endpoint must return that token immediately.
If:
Token is not echoed exactly
Response is delayed
Response format is incorrect
3. Check Response Time (Critical – 3 seconds rule)
Your webhook must respond within 3 seconds with a 200 or 202 status.
If delayed → notifications may be dropped
Graph retries, but eventually stops delivering
4. Subscription Expiry / Renewal
Graph webhook subscriptions are temporary (expire within hours/days depending on resource)
If subscription expires → no notifications will be delivered
Must renew subscription before expiry
Failure to renew is a common reason why webhooks “stop working” suddenly
5. User Deletion Behavior (Important for your scenario)
For user deleted events in Azure AD:
Most deletions are soft deletes first
Webhook may send:
updated event (for soft delete)
deleted only after permanent delete (hard delete)
Subscribe to:
changeType = "created,updated,deleted"
6. Delay in Event Delivery
Graph notifications are not always instant for directory objects
Delivery can sometimes take time (minutes to hours) depending on backend processing
7. Verify Subscription Scope & Permissions
Ensure:
Resource:
/users
Permissions:
User.Read.All
Directory.Read.All (recommended)
If permissions are insufficient → events won’t trigger even though subscription is created
8. Check Filtering / Incorrect Configuration
If using Event Grid / APIM along with Graph:
Verify:
Filters are not excluding events
Event types match expected triggers
Incorrect filters can block delivery entirely