You set up a Power Automate flow to run when a SharePoint item is modified. The flow runs once, then immediately triggers itself again. This cycle repeats endlessly, creating hundreds of flow runs and potentially blocking other automations. The root cause is that the flow modifies the same item that triggered it, which Power Automate treats as another modification event.
This article explains why the trigger loop happens and provides three specific workarounds you can apply today. You will learn how to break the loop using trigger conditions, column modifications, and parallel branch design.
Key Takeaways: Breaking the Infinite Trigger Loop in Power Automate
- Trigger condition on the modified column: Add a condition that checks if a specific column changed, not just any change.
- Modify a different column: Update a separate column that the flow ignores to avoid re-triggering.
- Parallel branch with a delay: Use a parallel branch to update the item only after the main flow logic completes.
Why the Trigger Loop Occurs in SharePoint and Power Automate
Power Automate flows that trigger on item modification use the SharePoint connector’s “When an item is modified” trigger. This trigger fires every time any column value changes in the item. When your flow updates the same item that started the flow, SharePoint sends a new modification event. Power Automate sees that event and starts the flow again. The cycle repeats because each flow run creates a new modification event.
This behavior is by design. Power Automate cannot distinguish between a human editing an item and a flow editing the same item. The trigger fires for both. If your flow modifies the triggering item, it will always re-trigger itself unless you add a control mechanism.
Common Scenarios That Cause the Loop
The loop happens most often in these situations:
- Updating a status column after approval or rejection
- Adding a timestamp or audit log note to the item
- Changing a calculated value or formula result on the item
- Using “Update item” action on the same item that triggered the flow
Workarounds to Stop the Trigger Loop
You can break the loop using three methods. Each method requires you to modify your Power Automate flow logic. Choose the method that best fits your existing automation.
Method 1: Add a Trigger Condition on a Specific Column
This method prevents the flow from running when only certain columns change. For example, you want the flow to run only when the “Status” column changes, not when the flow itself updates a timestamp column.
- Open your flow in Power Automate
Go to Power Automate, select My flows, and open the flow that is looping. - Select the trigger card
Click the “When an item is modified” trigger to open its settings. - Add a trigger condition
Click the three dots (…) on the trigger, then select Settings. In the Trigger Conditions section, add this expression:@equals(triggerBody()?['{ModerationStatus}'], 'Approved')
Replace{ModerationStatus}with the internal name of the column you want to monitor. For standard columns, useStatusorTitle. For custom columns, use the internal name from SharePoint list settings. - Test the flow
Save the flow and test it by modifying the specified column. The flow should run only when that column changes. Modifying any other column should not trigger the flow.
This method works best when you know which column change should start the flow. If your flow modifies the same column it monitors, the loop will still occur. In that case, use Method 2.
Method 2: Update a Different Column That the Flow Ignores
Instead of updating the same column that triggers the flow, update a separate column. The flow should not monitor that separate column. For example, if your flow runs when “Status” changes, update a column called “LastProcessedBy” with the flow name. The flow ignores changes to “LastProcessedBy” because it only monitors “Status”.
- Add a dedicated column to the SharePoint list
In your SharePoint list, add a column named “FlowProcessed” of type Yes/No. Set the default value to No. This column will store whether the flow has processed the item. - Modify your flow logic
In Power Automate, edit your flow. After the main logic completes, add an “Update item” action that sets the “FlowProcessed” column to Yes. Do not update any column that the flow monitors. - Add a trigger condition to check the new column
On the trigger, add a condition that the “FlowProcessed” column equals No. Use this expression:@equals(triggerBody()?['FlowProcessed'], false)
This ensures the flow runs only for items that have not been processed yet. - Reset the column for new items
When a user modifies the item again, reset the “FlowProcessed” column to No using a separate flow or manual update. Alternatively, use a scheduled flow to reset the column periodically.
Method 3: Use a Parallel Branch with a Delay
This method adds a delay before the flow updates the item. The delay gives Power Automate time to complete the initial trigger before the update action fires. The loop still occurs but only once, not infinitely.
- Add a parallel branch
In your flow, after the trigger, click the plus sign (+) to add a parallel branch. Name the new branch “Update Item with Delay”. - Add a delay action
In the new branch, add a “Delay” action. Set the delay to 30 seconds. This gives the initial flow run enough time to finish. - Add the update action after the delay
After the delay, add an “Update item” action. Configure it to update the same item with the changes your flow needs. - Test the flow
Save and test. The flow should run once, then after 30 seconds, run again due to the update. The second run should not trigger a third because the update happens after the delay and the flow has already completed.
This method does not eliminate the loop entirely. It limits the loop to two runs. For most scenarios, two runs are acceptable. If you need a single run, use Method 1 or 2.
Common Issues When the Trigger Loop Persists
Flow Runs More Than Expected Even After Adding a Condition
If your trigger condition uses the wrong internal column name, the condition fails and the flow runs for every modification. To find the correct internal name, go to SharePoint list settings, select the column, and look at the URL parameter Field=. Use that value in your condition. For example, a custom column named “Approval Status” might have the internal name Approval_x0020_Status.
Flow Updates the Item Before the Trigger Condition Evaluates
This happens when you place the update action before the trigger condition. The trigger condition must be on the trigger itself, not on a later action. Review the trigger settings and ensure the condition is applied at the trigger level. If you added a condition inside the flow using a “Condition” action, move it to the trigger settings instead.
Multiple Flows Modify the Same Item
If two or more flows modify the same item, they can cause a loop between each other. For example, Flow A updates the item, which triggers Flow B, which updates the item again, triggering Flow A. To stop this, coordinate which columns each flow monitors. Ensure that no two flows monitor the same column that the other flow updates.
| Method | Loop Elimination | Flow Complexity |
|---|---|---|
| Trigger condition on a specific column | Full elimination if the monitored column is not updated by the flow | Low |
| Update a different column | Full elimination | Medium |
| Parallel branch with a delay | Limits to two runs | Medium |
Each method has trade-offs. The trigger condition method is simplest but requires careful column selection. The separate column method is reliable but adds an extra column to your list. The delay method is quick to implement but does not fully stop the loop.
After applying one of these workarounds, monitor your flow runs for at least 24 hours. Check the run history in Power Automate to confirm the loop has stopped. If the loop continues, verify that no other flows or processes are modifying the same item. You can also disable the flow temporarily and re-enable it after making changes to ensure a clean start.
For advanced scenarios, consider using a SharePoint list workflow instead of Power Automate. SharePoint Designer workflows have different trigger behavior and do not re-trigger on their own updates. However, Microsoft recommends moving to Power Automate for new automations. The methods in this article will help you manage the loop issue until Microsoft provides a native solution.