On one of my client’s sites, events kept disappearing from a shared SharePoint list, and nobody knew who had removed them. The fix was a small Power Automate flow that sends an email the moment an item is deleted, with the name of the person who deleted it and the time.
In this tutorial, I’ll show you how to build that flow, what information the When an item is deleted trigger actually gives you, and how to include the deleted item’s column values, which the trigger doesn’t return on its own.
Quick answer: Create an automated cloud flow with the SharePoint When an item is deleted trigger, select your site and list, and add Send an email (V2). In the body, use the trigger outputs ID, Name, DeletedByUserName and TimeDeleted. The connection must belong to a site collection admin, or the trigger won’t return the deleted item.
What the trigger gives you (and what it doesn’t)
Once an item is deleted, its column values are gone from the list. That’s why the trigger returns only these six outputs:
| Output | What it contains | Expression |
|---|---|---|
| ID | The list item ID | triggerOutputs()?['body/ID'] |
| Name | The item’s title (in a list) | triggerOutputs()?['body/Name'] |
| FileNameWithExtension | Same as Name in a list, the file name in a library | triggerOutputs()?['body/FileNameWithExtension'] |
| DeletedByUserName | The name of the person who deleted it | triggerOutputs()?['body/DeletedByUserName'] |
| TimeDeleted | The date and time it was deleted | triggerOutputs()?['body/TimeDeleted'] |
| IsFolder | True if a folder was deleted | triggerOutputs()?['body/IsFolder'] |
Your custom columns, such as Event Date or Organizer, aren’t in the list. If you need them in the email, use the backup list method later in this tutorial.
The created and modified triggers are different: they return every column of the item. That’s how I send an email to multiple recipients from a SharePoint list.
You might also see triggerBody()?['ID'] in other examples. It returns the same value as triggerOutputs()?['body/ID'].
Before you start
- Use a site collection admin account. Microsoft’s connector documentation says the trigger can only be used by site collection admins of the site. If your flow never runs, check this first.
- Use a custom list or a library. Flows are supported on generic lists and document libraries, not on lists made from the classic Events, Announcements, Contacts or Tasks templates.
- Expect a short delay. The trigger checks for changes on a schedule, so the email usually arrives within a few minutes, and one run can cover several deletions.
- Deleted a flow by mistake? You can restore a deleted flow in Power Automate for a limited time.
Set up the SharePoint list
My example is a custom list called Event Calendar with these columns:
| Column | Type |
|---|---|
| Event Name (Title) | Single line of text |
| Event Date | Date and time |
| Organizer | Person or Group |

Build the flow
In Power Automate, select Create > Automated cloud flow, name the flow, choose the SharePoint trigger When an item is deleted, and select Create. Then select your Site Address and the Event Calendar list.

Add the Send an email (V2) action and fill it in:
- To: the person or team that should know, for example events@contoso.com.
- Subject:
Event deleted by @{triggerOutputs()?['body/DeletedByUserName']} - Body: the text below.
Hello team,
Item @{triggerOutputs()?['body/ID']} (@{triggerOutputs()?['body/Name']}) was deleted from the Event Calendar list by @{triggerOutputs()?['body/DeletedByUserName']} on @{convertFromUtc(triggerOutputs()?['body/TimeDeleted'], 'Eastern Standard Time', 'MM/dd/yyyy h:mm tt')} (ET).
You can restore it from the site's Recycle bin within 93 days.
Thanks,
Power Automate

If this action is new to you, see how to use the Send an email (V2) action for the other options, such as importance and attachments.
I convert TimeDeleted from UTC to Eastern Time and format it as MM/dd/yyyy h:mm tt, so a deletion at 2:30 PM shows as 10/05/2026 2:30 PM instead of a long UTC timestamp.
Replace Eastern Standard Time with your own time zone. Test it with one deletion, and if the time is already correct, use formatDateTime() without the conversion. For more formats, see how to use formatDateTime() in Power Automate.
Test the flow
Save the flow and select Test > Manually. Then go to the list and delete an item.

Within a few minutes, the email arrives with the item ID, its title, who deleted it and when:
If the time in the email looks wrong, see how to convert time zones in Power Automate.

The item isn’t lost yet. It sits in the site’s Recycle bin for 93 days in total, so the person who gets the email can restore it if it was a mistake.
Include the deleted item’s details in the email
The trigger can’t tell you the Event Date or Organizer, because those values are gone by the time it runs. Even the recycle bin only keeps basic information, such as the title and who deleted it. The way around it is to keep a copy of each item before it’s deleted.
This isn’t a built-in feature, it’s a pattern I use on client sites. It needs a second list and a second flow:
- Create a list called Event Calendar Backup with the same columns plus a Number column named ItemID.
- Create a flow with When an item is created or modified on Event Calendar. Use Get items on the backup list with the filter
ItemID eqthe trigger’s ID. If nothing is found, add a backup item with Create item. Otherwise, update it with Update item. - In the delete flow, after the trigger, add Get items on the backup list with this filter query:
ItemID eq @{triggerOutputs()?['body/ID']}
Now you can use Event Name, Event Date and Organizer from the backup item in the email, and even send the message to the organizer’s email address. You can add Delete item at the end to remove the backup copy, or keep it as a history of deleted events.
If filter queries are new to you, see how to use the Get items filter query.
If you mainly want to avoid losing data, Microsoft suggests another approach: add a column such as Status and mark items as Canceled instead of deleting them. A flow can then react to that change like any other edit. See how to update SharePoint list items using Power Automate.
Troubleshooting
- The flow never runs: make sure the connection belongs to a site collection admin, and that the list isn’t based on a classic Events or Tasks template.
- The trigger fires but the outputs are empty: check the connection in the trigger. Microsoft notes that you need a site collection admin account to get the properties of a deleted item.
- The time is wrong by a few hours: convert TimeDeleted from UTC to your time zone, as in the body above.
- The email arrives a few minutes late: that’s normal. The trigger checks for deletions on a schedule rather than instantly.
These Power Automate tutorials go well with this one:
Frequently Asked Questions
Can Power Automate get the column values of a deleted SharePoint item?
No. The trigger returns only the ID, name, who deleted it, the time and whether it was a folder, as listed in the SharePoint connector reference. Keep a copy in a backup list if you need more.
Who can use the When an item is deleted trigger?
Only site collection admins of the site. Build the flow with an admin account, or use a service account that’s a site collection admin.
How do I get the ID of the deleted item?
Use triggerOutputs()?[‘body/ID’] or the ID dynamic content from the trigger. triggerBody()?[‘ID’] returns the same value.
Can I restore the deleted item after the email?
Yes. Deleted list items stay in the site’s recycle bin and then the second-stage recycle bin for 93 days in total.

I have worked with Microsoft technologies for more than 18 years, including SharePoint, Microsoft 365 and the Power Platform (Power Apps, Power Automate and Power BI), at companies like HP, TCS and KPIT. I started EnjoySharePoint in 2011 to share the solutions I build in real projects with readers in the United States, Canada, the United Kingdom, Australia, New Zealand and beyond. Microsoft has recognized this work with the Microsoft MVP award 13 times since 2014.