Investigating DeliveryLocation in Microsoft Defender XDR.
The email was not missing.
It was not ignored by the platform.
It had been processed, evaluated and placed somewhere.
The question was simple: did it reach the inbox, land in junk, get quarantined, or disappear before the user ever saw it?
In Microsoft Defender XDR, DeliveryLocation helps defenders understand where an email actually went after filtering, policy and transport decisions were applied.
Lesson overview
Learn how to investigate where email messages were delivered, moved or contained inside Microsoft 365 using DeliveryLocation and related email telemetry.
Why DeliveryLocation matters
The fields used in this lesson
Step 1 — Review recent delivery locations
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
EmailEvents | where Timestamp > ago(30d) | project Timestamp, SenderFromAddress, RecipientEmailAddress, Subject, DeliveryAction, DeliveryLocation | order by Timestamp desc
Step 2 — Summarise delivery locations
- 1
- 2
- 3
- 4
- 5
- 6
- 7
EmailEvents | where Timestamp > ago(30d) | summarize MessageCount = count() by DeliveryLocation, DeliveryAction | order by MessageCount desc
Step 3 — Find suspicious messages that reached the inbox
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
EmailEvents | where Timestamp > ago(30d) | where DeliveryLocation has_any ("Inbox", "Folder") | where isnotempty(ThreatTypes) | project Timestamp, SenderFromAddress, RecipientEmailAddress, Subject, ThreatTypes, DeliveryAction, DeliveryLocation, NetworkMessageId | order by Timestamp desc
Step 4 — Review quarantined messages
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
EmailEvents | where Timestamp > ago(30d) | where DeliveryLocation has "Quarantine" | project Timestamp, SenderFromAddress, RecipientEmailAddress, Subject, ThreatTypes, DetectionMethods, DeliveryAction, DeliveryLocation | order by Timestamp desc
Step 5 — Compare original and latest delivery evidence
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
EmailEvents | where Timestamp > ago(30d) | project Timestamp, SenderFromAddress, RecipientEmailAddress, Subject, DeliveryAction, DeliveryLocation, LatestDeliveryAction, LatestDeliveryLocation, NetworkMessageId | order by Timestamp desc
Step 6 — Connect delivery location to URL click evidence
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
EmailEvents | where Timestamp > ago(30d) | where DeliveryLocation has_any ("Inbox", "Folder") | project EmailTime = Timestamp, NetworkMessageId, RecipientEmailAddress, Subject, DeliveryLocation | join kind=inner ( UrlClickEvents | project ClickTime = Timestamp, NetworkMessageId, Url, ActionType ) on NetworkMessageId | order by ClickTime desc
