Microsoft announced SharePoint Alerts retirement. Starting from October 2025 – the SharePoint Alert expiration feature will be gradually activated. In January 2026 Microsoft will turn off creation of new SharePoint Alerts (gradually). In July 2026 the ability to use SharePoint Alerts will be removed.
How do we know how many alerts are configured in our tenant? Can we get a report on all alerts of all users from all tenant SharePoint sites?
Approaches are:
- use Microsoft 365 Assessment tool (they have a mode to get all alerts – here is the doc)
Microsoft 365 Assessment tool is a great tool, but it is an .exe software, so in large orgs it might be difficult to use it and it requires admin’s permissions to run - use custom PowerShell scripts – this option might help if you
– need a specific report format/data/columns
– want to quickly get report on alerts for a specific site or site/user
– can run the script as a site collection admin/owner (does not require tenant admin permissions)
PnP.PowerShell-based script
You’d just use “Get-PnPAlert” cmdlet. That is it.
It requires connection to a specific site, and it allows to get all alerts for the specific user, all alerts for the specific library and all alerts for all users and all lists/libraries:
Get-PnPAlert -AllUsers
The cmdlet returns an alert object with the following properties: AlertFrequency, AlertTemplateName, AlertTime,AlertType,AllProperties,AlwaysNotify,DeliveryChannels,EventType,Filter,ID,Item,ItemID,List,ListID,ListUrl,Properties,Status,Title,User,UserId,Context,Tag,Path
If you need to get all alerts from all tenant sites – just do the same in a loop. Here is the example:
https://github.com/VladilenK/m365-PowerShell/blob/main/reports/Site/Get-Site-Alerts.PnP.ps1
CSOM-based PowerShell script
This is an old-style CSOM-based script we used before PnP designed their beautiful cmdlet. Notice that what took 20 lines of code PnP implemented in one cmdlet.
PowerShell Script to get All Alerts of all Users from a specific SharePoint Online Site Collection, including subsites:
https://github.com/VladilenK/PowerShell/blob/main/reports/Site/Fetch-All-Alerts-from-SPO-Site.ps1
it is based on Salaudeen Rajack’s script:
“SharePoint Online: Get All Alerts from a Site Collection using PowerShell“
I updated authentication part, so now the script support both MFA and password-only based authentications
Exactly what I needed. Thanks for modifying Salaudeen’s code!