๐ง Recipe ยท Exchange & Email
Troubleshoot Outlook Not Syncing Email
Diagnose and resolve mail sync failures in Outlook desktop and Outlook on the Web for Microsoft 365 users
Complexity
Intermediate
Impact
end-user-impact + productivity + email + common-ticket
Context
Why This Matters
Outlook sync issues are one of the most common help desk tickets in a Microsoft 365 environment. When a user reports that their inbox is not updating, the cause can range from a transient Exchange Online service issue to a corrupted local OST file, throttled mailbox, blocked device, or mailbox approaching its quota.
This recipe gives you a structured triage path: verify service health, confirm the mailbox is healthy on the server side, check client-side configuration (cached mode, OST, profile), and validate that the user's account and device are not blocked by Conditional Access or MFA prompts. Running these checks in order prevents wasted time on client-side fixes when the root cause is server-side (or vice versa).
When to run this recipe
- User reports Outlook inbox is stale or not receiving new email
- Send/Receive in Outlook desktop hangs or fails silently
- Outlook on the Web (OWA) shows new mail but desktop Outlook does not
- After a password reset, device migration, or network change
Expected Outcomes
After completing this recipe you will have:
- Confirmed whether the issue is tenant-wide (service health), mailbox-specific, or client-specific
- Validated the user's mailbox quota, litigation hold state, and ActiveSync/Outlook connectivity
- Identified any Conditional Access, MFA, or token-revocation events blocking the client
- Applied the appropriate fix: OST rebuild, profile recreation, mailbox repair, or cache clear
- Verified mail flow is restored by sending a test message and observing client sync
- Documented the resolution for future tickets with the same symptom
Risks & Considerations
Warnings and gotchas
- Do not delete the OST file blindly. If the user has local-only items (rare, but possible with some add-ins or PST imports into cached folders), rebuilding the OST will lose them. Back up the OST before deletion.
- Removing and re-adding the Outlook profile is destructive to local signatures, rules stored client-side, and custom views. Export these first.
- Revoking sessions (if you suspect a stale token) will force re-authentication on all the user's devices, including mobile. Warn the user.
- Mailbox repair cmdlets (
New-MailboxRepairRequest) can take hours and generate mailbox I/O load. Run off-hours for large mailboxes. - Check tenant service health first. If Exchange Online is degraded, client-side fixes will not help and may confuse the user.
- Do not disable modern authentication or cached mode as a workaround without change approval โ these are security and performance baselines.
Required Permissions
| Permission | Why It's Needed |
|---|---|
| Exchange Administrator or Global Reader | Required to inspect mailbox properties, quotas, and mobile device partnerships |
| User.Read.All (Graph) | Read user profile and account status via Microsoft Graph |
| AuditLog.Read.All (Graph) | Review sign-in logs to identify authentication or Conditional Access failures |
| Mailbox Search / Mailbox Import Export (optional) | Required only if running mailbox repair or content search during diagnosis |
| Helpdesk Administrator | Required to reset password or revoke sessions if a token issue is identified |
The fastest way to get this done: just ask Dex. Copy the prompt below and paste it into your Dex conversation.
For IT Admins
Paste into Dex Pro
For End Users
How an employee would ask Dex for help
Manual troubleshooting via Microsoft 365 Admin Center and Outlook
Step 1: Check Exchange Online service health
- Sign in to the
- Filter by Exchange Online and review any active advisories or incidents
- If an incident is active and matches the symptom, inform the user and wait for Microsoft resolution
Step 2: Verify the user's mailbox state
- Go to and select the affected user
- Confirm the account is not blocked and licenses (Exchange Online Plan 1/2) show as assigned and active
- Open , select the user, and check Mailbox usage โ if it is at or above quota, new mail may queue or bounce
Step 3: Review sign-in activity
- Navigate to
- Look at the last 24 hours for failures. Filter by Application: Office 365 Exchange Online or Outlook
- Note any Conditional Access failures, MFA prompts that were not completed, or error codes (e.g. AADSTS50076, AADSTS50158)
Step 4: Client-side checks with the user
- Have the user open Outlook on the Web at
https://outlook.office.com. If mail syncs there, the issue is client-side. - In Outlook desktop, check the status bar: Disconnected, Trying to connect, or Working Offline all indicate a connectivity or profile issue
- Confirm Work Offline is not toggled on under the tab
- Run on the affected account
Step 5: Rebuild the OST (if client-side is confirmed)
- Close Outlook
- Browse to
%LOCALAPPDATA%\Microsoft\Outlookand rename the user's.ostfile to.ost.bak - Reopen Outlook โ a new OST will be created and cached mode will resync from the server
- For large mailboxes this may take 30+ minutes; monitor progress in the status bar
Step 6: Last resort โ recreate the Outlook profile
- Close Outlook
- Open
- Create a new profile, set it as default, and launch Outlook
- Verify sync; if successful, migrate signatures and local rules from the old profile
Step 7: Verify resolution
- Send a test email to the user from another account
- Confirm the user sees it arrive in Outlook desktop within 1โ2 minutes
- Document the root cause and fix in the ticket
Diagnose via Microsoft Graph API
Graph does not expose an "is Outlook syncing" endpoint directly, but you can gather the signals needed to isolate the root cause: user state, mailbox settings, sign-in logs, and mailbox activity.
1. Confirm user account status
GET https://graph.microsoft.com/v1.0/users/{userPrincipalName}?$select=accountEnabled,assignedLicenses,userPrincipalName,id
Confirm accountEnabled: true and that an Exchange Online license SKU is present in assignedLicenses.
2. Check mailbox settings and delegation
GET https://graph.microsoft.com/v1.0/users/{userPrincipalName}/mailboxSettings
A successful response confirms the mailbox is reachable via Graph. A 404 or MailboxNotEnabledForRESTAPI error indicates a provisioning problem.
3. Inspect recent sign-ins for Exchange/Outlook
GET https://graph.microsoft.com/v1.0/auditLogs/signIns?$filter=userPrincipalName eq '{upn}' and appDisplayName eq 'Office 365 Exchange Online'&$top=20
Look at status.errorCode on each entry. Non-zero codes point to Conditional Access, MFA, or token issues.
4. Check recent mail activity
GET https://graph.microsoft.com/v1.0/users/{userPrincipalName}/mailFolders/inbox/messages?$select=receivedDateTime,subject&$top=5&$orderby=receivedDateTime desc
If Graph returns recent messages but the user does not see them in Outlook desktop, the problem is definitively client-side (OST/profile).
5. Revoke sessions if a stale token is suspected
POST https://graph.microsoft.com/v1.0/users/{id}/revokeSignInSessions
Returns { "value": true } on success. The user will be forced to re-authenticate on all devices, which often clears token-binding issues.
Required scopes
User.Read.AllMailboxSettings.ReadMail.Read(application, with RBAC for Applications scoping recommended)AuditLog.Read.AllUser.RevokeSessions.All(only if revoking)
Automated triage with PowerShell
The fastest way to collect server-side signals for an Outlook sync ticket is to run a single triage script that queries Exchange Online and Microsoft Graph in one pass. It checks licensing, quota, mobile device partnerships, recent sign-ins, and mailbox statistics.
Prerequisites
- PowerShell 7+
ExchangeOnlineManagementmodule (Install-Module ExchangeOnlineManagement)Microsoft.Graphmodule (Install-Module Microsoft.Graph)- Exchange Administrator + User.Read.All permissions
What the script does
- Connects to Exchange Online and Microsoft Graph
- Validates that the mailbox exists and is licensed
- Pulls mailbox quota, item count, and last logon time via
Get-MailboxStatistics - Lists mobile device partnerships via
Get-MobileDeviceStatistics - Queries the last 20 Exchange Online sign-ins for the user and highlights failures
- Prints a color-coded summary and a recommended next step
Running it
.\Troubleshoot-OutlookSync.ps1 -UserPrincipalName 'jane.doe@contoso.com'
Review the summary. If server-side signals are clean (mailbox healthy, no sign-in failures, under quota), escalate to client-side steps (OST rebuild / profile recreation) from the manual recipe.
Next steps