When you bulk import items into a SharePoint list, automated triggers such as Power Automate flows or custom event receivers may fail to run. This happens because bulk operations bypass the standard item creation events that triggers depend on. This article explains why triggers miss bulk-imported items and provides step-by-step methods to ensure your triggers fire correctly.
Key Takeaways: Fixing Trigger Failures on Bulk Imports
- Power Automate trigger condition: Add a condition to check for the ‘Modified’ field change to catch bulk updates.
- CSOM or REST API batch operations: Use individual item creation instead of batch endpoints to fire triggers per item.
- SharePoint Designer workflow: Replace event receivers with site-scoped workflows that run on list item changes.
Why Bulk Imports Bypass List Triggers
SharePoint list triggers, including Power Automate flows and event receivers, rely on specific events like ItemAdded or ItemUpdated. When you import items in bulk using methods like the SharePoint UI’s Quick Edit, Microsoft Excel’s List Export, or CSOM batch operations, SharePoint processes these items in a single transaction. This batch processing does not raise individual item events, so triggers that listen for each item creation or update never fire.
The root cause is the difference between single-item operations and bulk operations. Single-item creation triggers the ItemAdded event. Bulk import uses a single web request that adds many rows at once, and SharePoint treats this as one operation. The event receiver or flow trigger sees only one event for the entire batch, not one per item. This behavior is by design to improve import performance, but it breaks workflows that depend on per-item triggers.
Another cause is the use of the SharePoint REST API’s batch endpoint. When you send a batch request containing multiple items, the server processes them together and raises a single event. Power Automate’s ‘When an item is created’ trigger looks for individual creation events, so it misses items added in a batch.
Steps to Ensure Triggers Fire on Bulk Imports
- Switch to Single-Item Import Methods
Use the standard SharePoint list form to add items one at a time. This method triggers ItemAdded for each item. While slower for large imports, it guarantees that all flows and event receivers run. For imports from Excel, use the ‘Import Spreadsheet’ app instead of Quick Edit, as it creates items individually. - Modify the Power Automate Trigger Condition
If you must use bulk import, change your flow to trigger on the ‘Modified’ field change instead of ‘Created’. Add a trigger condition that checks if the ‘Modified’ field is not blank. This catches items that were bulk-imported because the ‘Modified’ field gets updated even during batch operations. In Power Automate, edit the trigger and add a condition:@equals(triggerOutputs()?['body/Modified'], triggerOutputs()?['body/Created'])— this ensures the flow runs only when the item was actually modified after creation. - Use a Recurrence Flow to Poll for New Items
Create a scheduled flow that runs every 5 to 15 minutes. Use the ‘Get items’ action to retrieve all items from the list where the ‘Created’ date is greater than the last run time. Then loop through each item and perform the desired action. This method works regardless of how items were imported and does not depend on event triggers. - Implement a Custom Event Receiver with Deferred Processing
If you have SharePoint Server or SharePoint Framework experience, create a remote event receiver that listens for the ItemAdded event. Use a timer job to process items that were bulk-imported. The timer job runs periodically and checks for items that have not been processed yet, ensuring no item is missed. - Use SharePoint Designer Workflows Instead of Event Receivers
SharePoint Designer workflows run on a schedule and can check for new or modified items. Create a site-scoped workflow that runs every hour. Use the ‘Wait for event’ action to pause until an item is added or changed. This approach is more reliable for bulk imports because it does not rely on real-time events.
Common Issues and Workarounds for Bulk Import Triggers
Power Automate Flow Does Not Run After Bulk Import
If your flow is set to trigger ‘When an item is created’, it will not fire for items added via Quick Edit or CSOM batch. To fix this, change the trigger to ‘When an item is created or modified’ and add a condition that checks if the ‘Created’ and ‘Modified’ timestamps are the same. This ensures the flow runs for newly created items even if they were imported in bulk.
Event Receiver Fires Once for the Entire Batch
When using a custom event receiver, you may see only one event for the entire bulk import. To handle this, override the ItemAdded method and check the item count in the list. If the count is higher than expected, process the new items individually. Alternatively, use the ItemUpdated event with a flag column that marks items as processed.
Bulk Import from Excel Causes Missing Data in Workflows
When you import from Excel using the ‘Import Spreadsheet’ app, the data is added via the list web service, which fires individual events. However, if you use the ‘Export to Excel’ and then re-import using Quick Edit, events are missed. Always use the ‘Import Spreadsheet’ app for Excel imports to ensure per-item triggers fire.
Single-Item vs Bulk Import: Trigger Behavior Comparison
| Item | Single-Item Import | Bulk Import |
|---|---|---|
| Event receiver fires | Per item | Once per batch |
| Power Automate trigger | Fires immediately | May not fire |
| SharePoint Designer workflow | Works as expected | May require schedule |
| Item creation method | List form, REST API single item | Quick Edit, CSOM batch, Excel export |
| Performance | Slower for large imports | Faster but breaks triggers |
Now you can ensure your list triggers run correctly even when importing items in bulk. Start by switching to single-item import methods for critical workflows. If bulk import is unavoidable, use a recurrence-based Power Automate flow that polls for new items every few minutes. For advanced scenarios, implement a custom timer job that processes unhandled items after a bulk import.