# Run a flow only when one column changes

> For the full documentation index, see https://250highstreet.com/llms.txt

> Make a SharePoint flow react only when one column changes. Use Get changes for an item, a Condition card, and a trigger condition. Steps and pitfalls.

Short answer: the SharePoint trigger "When an item is created or modified" starts the flow on any edit, to any column. To react to one column only, add the action "Get changes for an item or a file (properties only)" right after the trigger, then add a Condition card that checks whether your column changed. If the condition is false, the flow ends. A trigger condition can help too, but it can only test the value an item has now. It cannot tell you that the value changed. This guide shows both, step by step.

Menu and button names change, so exact names may differ on your screen.

## An example list

Say you have a list called Purchase orders with five columns:

- Title (every list has one; it is required by default, so rename it or turn off Require if it does not fit)
- Priority (Choice: 1 Rush, 2 Normal, 3 Hold)
- Status (Choice: 1 Open, 2 Waiting, 3 Closed)
- Notes (Multiple lines of text)
- Customer notified (Yes/No)

The aim: one email when Status changes. Buyers edit Notes and Priority through the day, and none of those edits should send mail.

Our advice, not a Microsoft rule: start each choice with a number to keep them in your order. That number is stored with the word, so comparing against Closed alone finds nothing; the stored text is 3 Closed.

## Why the plain trigger fires too often

Microsoft's SharePoint connector page describes the trigger "When an item is created or modified" like this: "Triggers when an item is created, and also each time it is modified."

So there is no column choice on that trigger. A change to Notes starts the flow just like a change to Status. You need a second step that asks: which column changed?

## What you need before you start

1.  A SharePoint list with the columns you want to watch.
2.  Version history turned on for the list. The next section explains why.
3.  A flow at [https://make.powerautomate.com](https://make.powerautomate.com) that uses "When an item is created or modified" as its trigger.
4.  Permission to edit the flow. If you are not sure, check with your admin.

## Step 1. Turn on version history for the list

Microsoft's SharePoint connector page describes the action "Get changes for an item or a file (properties only)": "Returns information about columns that have changed within a given time window. Note: The list must have Versioning turned on."

So open your list's settings in SharePoint, find the versioning settings, and turn versioning on. Exact names may differ. The same page says this about the action's inputs: "Since" can be a "Trigger Window Start token or an item version label (ex: 3.0) or an ISO 8601 date (YYYY-MM-DDThh:mmZ)".

Our advice, not a Microsoft rule: turn versioning on before you make your test edits.

## Step 2. Add the trigger

1.  Open [https://make.powerautomate.com](https://make.powerautomate.com) and create an automated cloud flow.
2.  Pick the SharePoint trigger "When an item is created or modified".
3.  Set the Site Address and the List Name to your list.
4.  Save.

## Step 3. Add Get changes for an item or a file

1.  Select New step (or the plus sign) and search for "Get changes".
2.  Pick "Get changes for an item or a file (properties only)" from the SharePoint connector.
3.  Set Site Address and List or Library Name to the same list as the trigger.
4.  In Id, choose the ID from the trigger's dynamic content.
5.  In Since, choose the trigger window start token from the dynamic content list.
6.  In Until, choose the trigger window end token. Microsoft's page says that if Until is blank, it "defaults to latest version".

Microsoft's page says the outputs of this action are dynamic. That means the list of outputs depends on your list. After you save, open the dynamic content list and look for entries that name your columns, for example an entry about Status having changed. The exact wording on your screen may differ from what this guide says, so read the list and pick the entry for your column.

## Step 4. Add a Condition card

1.  Add a Condition card after Get changes.
2.  In the left box, pick the dynamic content entry that tells you whether Status changed.
3.  Set the middle box to "is equal to".
4.  In the right box, pick true. If your screen offers an expression box, use the expression true.
5.  Put your email action in the "If yes" branch.
6.  Leave the "If no" branch empty. The flow ends there and does nothing.

Now an edit to Notes still starts a run, but the run ends after the Condition card. Nothing is sent.

## Step 5. Test it with two edits

1.  Save the flow.
2.  Edit the Status of one item, for example from 1 Open to 3 Closed. Wait for the run.
3.  Open the run history and check that the email step ran.
4.  Edit only the Notes of the same item. Wait for the run.
5.  Open the run history. The run should show the Condition going to "If no" and the email step skipped.

Do both tests. A test that only checks the case that should work does not show you the false alarms.

## Step 6. Optional: add a trigger condition to cut down on runs

A trigger condition is a test on the trigger card. If the test is false, the flow does not start. Microsoft's page on optimizing triggers says: "If you don't want your flows to run every time they're triggered, set them to execute only when a specific condition is met."

A trigger condition reads the item as it is now. It does not have the old value. So it can answer "is Status equal to 3 Closed right now?" but it cannot answer "did Status change?". Our advice, not a Microsoft rule: use a trigger condition for what the item looks like, and use Get changes for what changed.

One way to start, if you only care when an item becomes closed:\
@equals(triggerOutputs()?\['body/Status/Value'\], '3 Closed')

Two details matter here. The test reads Status/Value, the text of the choice. And '3 Closed' keeps its number and sits in straight quotes.

To add it, open the trigger card, select the Settings tab, and look for "Trigger conditions". Exact names may differ. Then keep the Get changes step and the Condition card in place. The trigger condition will skip all items that are not closed. The Condition card then checks that Status is the column that just changed. For a deeper look at conditions that fail, see "[My trigger condition does not work](/guides/power-automate-trigger-condition-not-working/)".

## If your flow edits the same item

Many flows on this trigger also update the item they just read, for example to tick a Customer notified box. That edit counts as a new change, and the trigger fires again. This can create a loop.

Our advice, not a Microsoft rule: add a guard.

1.  Set a default value on the Yes/No column Customer notified. Do not assume the column starts as No. Choose the default yourself.
2.  Add a Condition card at the top of the flow: Customer notified is equal to false. Only the "If yes" branch continues.
3.  Fill Title when the flow updates the item. Title is required by default, so an update without it can fail.

For the full story on loops, see "[Power Automate flow keeps running itself over and over](/guides/power-automate-flow-triggers-itself-infinite-loop/)".

## What to avoid

- Do not turn on versioning after your test edits. Turn it on first.
- Do not guess the name of the dynamic content entry. Open the list and read it.
- Do not use a trigger condition to detect a change. It has only the current value.
- Do not skip the false test. Edit another column and confirm nothing is sent.
- Do not test on the live flow. Make a copy first.
- Do not let the flow update the same item without a guard.
- Do not type choice text from memory. Copy it from the list, including the number.

## A quick checklist

1.  Versioning is on for the list.
2.  Trigger: When an item is created or modified.
3.  Next step: Get changes for an item or a file (properties only).
4.  Since and Until use the trigger's window tokens.
5.  A Condition card checks the entry for your column.
6.  Email or other actions sit in the "If yes" branch only.
7.  A guard exists if the flow edits the item.
8.  Tested with a Status edit and a Notes edit.

## When to get help

You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: \$5,000 for one, built in 2 weeks. See "[What a SharePoint tracker costs to build](/guides/what-a-sharepoint-tracker-costs/)". Bring one example of the problem to a free call.

I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.

See trackers I built: [Tools I built](/portfolio/)

## FAQ

### Can I pick a column on the "When an item is created or modified" trigger?

Microsoft describes that trigger as one that "Triggers when an item is created, and also each time it is modified." To react to one column, add Get changes for an item or a file after the trigger.

### Does Get changes work on any list?

Microsoft's page says: "Note: The list must have Versioning turned on." Turn versioning on first, then test.

### Can a trigger condition tell that a value changed?

Our advice, not a Microsoft rule: no. A trigger condition tests the item as it is now. Use Get changes with a Condition card to ask what changed.

### Will the flow still start when I edit another column?

Yes. The flow starts, the Condition card goes to "If no", and the run ends. The run shows in the run history, but no action runs after the Condition card.

### What if the flow updates the same item?

Add a guard so the update does not start the flow again, and fill Title if it is required. See the loop guide linked above.

## Sources

- [Microsoft Learn, SharePoint connector reference](https://learn.microsoft.com/en-us/connectors/sharepointonline/)
- [Microsoft Learn, Optimize Power Automate triggers](https://learn.microsoft.com/en-us/power-automate/guidance/coding-guidelines/optimize-power-automate-triggers)

## Related guides

- [My trigger condition does not work](/guides/power-automate-trigger-condition-not-working/)
- [Post to Teams when a SharePoint list item changes](/guides/teams-message-from-sharepoint-list/)
- [Power Automate "When an item is deleted" trigger not working](/guides/power-automate-when-an-item-is-deleted-trigger/)
- [Keep a running comment log with "Append changes to existing text"](/guides/sharepoint-list-append-changes-to-existing-text/)
- [How to run a Power Automate flow on one selected SharePoint item](/guides/power-automate-run-flow-on-selected-sharepoint-item/)
- [Power Automate run-only users missing: where it is and what to check](/guides/power-automate-run-only-users-missing/)

Source: https://250highstreet.com/guides/power-automate-trigger-when-specific-column-changes/
