How to Update Only One Field in a SharePoint List Item Using Power Automate

An HR team I worked with kept an Employee Records list in SharePoint. Whenever someone changed an employee’s End of Contract date, the Employee Status had to switch to Inactive, and nothing else in the record could change.

It sounds simple, but there are two traps: the flow can run again on its own update, and the Update item action asks for more than one field. In this tutorial, I’ll show you how to update only one field, only when another column changes, and three ways to do the update itself.

Quick answer: Turn on versioning, use the When an item or a file is modified trigger, and add Get changes for an item or a file (properties only) with Since set to Trigger Window Start Token. If ColumnHasChanged is true for your column, update the other column with Update item, or with a Send an HTTP request to SharePoint MERGE request if you want to send only that one field.

The example list

My Employee Records list has several columns. The two that matter here are:

ColumnTypeInternal name
Employee StatusChoice (Active, Inactive)EmployeeStatus
End of ContractDate and timeEndofContract

The rule: when someone edits the End of Contract date, set Employee Status to Inactive. Edits to any other column shouldn’t touch the status.

Employee Status is a Choice column, so the flow sets it by its value. See how to get SharePoint choice values in Power Automate if you work with choices a lot.

SharePoint Employee Records list with Employee Status and End of Contract columns

Step 1: Turn on versioning

Power Automate can only tell which columns changed by comparing versions of the item. In the list, select Settings > List settings > Versioning settings, and set Create a version each time you edit an item to Yes. New lists in SharePoint Online usually have it on already.

Step 2: Create the flow

In Power Automate, select Create > Automated cloud flow and choose the SharePoint trigger When an item or a file is modified. Select your site and the Employee Records list.

I use this trigger rather than “When an item is created or modified” for one reason: it gives you the Trigger Window Start Token and Trigger Window End Token, which the next step needs.

Step 3: Find out what changed

Add Get changes for an item or a file (properties only) and set:

FieldValue
Site AddressYour SharePoint site
List or Library NameEmployee Records
IdID from the trigger
SinceTrigger Window Start Token from the trigger
UntilTrigger Window End Token from the trigger

The original version of this post used the item’s Created date for Since. That compares the item with its very first version, so once the End of Contract date has changed even once, every later edit looks like a change, and the flow keeps updating the item. The trigger window tokens compare only with the version just before this edit.

Step 4: Check the End of Contract column

Add a Condition. On the left, enter this expression, choose is equal to, and on the right enter the expression true:

outputs('Get_changes_for_an_item_or_a_file_(properties_only)')?['body/ColumnHasChanged/EndofContract']
Condition that checks whether the End of Contract column has changed

You can also pick Has Column Changed: End of Contract from the dynamic content instead of typing it. If your column has a different internal name, use that name after ColumnHasChanged/.

You can add more checks in the same Condition, for example the employee’s department. See how to update SharePoint list items based on a condition.

Step 5: Update the Employee Status

Method 1: Update item

In the True branch, add the SharePoint Update item action:

  • Site Address and List Name: the same as above.
  • Id: the ID from the trigger.
  • Title: the Title from the trigger. Update item needs a value for every required column, so pass the current value back.
  • Employee Status Value: choose Inactive.
Update item action that sets Employee Status to Inactive

Leave the other optional columns empty. If your list has many columns, set Limit Columns by View to a view that contains only the columns you need, which keeps the action short and avoids column threshold issues.

For more Update item examples, such as several fields at once, see how to update SharePoint list items using Power Automate.

Because Update item still sends the required columns, it isn’t strictly a one-field update. If you need to send only Employee Status, use one of the next two methods instead.

Method 2: Update one field with an HTTP request

The SharePoint REST API can update just the fields you send, using a MERGE request. Add Send an HTTP request to SharePoint in the True branch:

  • Method: POST
  • Uri: _api/web/lists/GetByTitle('Employee Records')/items(@{triggerOutputs()?['body/ID']})
  • Headers: the four headers below
  • Body: the JSON below
Accept: application/json;odata=verbose
Content-Type: application/json;odata=verbose
IF-MATCH: *
X-HTTP-Method: MERGE
{
  "__metadata": { "type": "SP.Data.Employee_x0020_RecordsListItem" },
  "EmployeeStatus": "Inactive"
}

The type must match your list. If the list name has a space, it’s encoded as _x0020_, as above. To find the exact value, run a GET request once with this Uri and copy ListItemEntityTypeFullName from the output:

_api/web/lists/GetByTitle('Employee Records')?$select=ListItemEntityTypeFullName

IF-MATCH: * updates the item whatever its current version is. You don’t need an authorization or request digest header, because the connector adds them for you.

Method 3: ValidateUpdateListItem

Another REST option is ValidateUpdateListItem. It takes field names and values as text, so you don’t need the list’s type name. Use POST with the Uri _api/web/lists/GetByTitle('Employee Records')/items(ID)/ValidateUpdateListItem, replacing ID with the trigger’s ID, and this body:

{
  "formValues": [
    { "FieldName": "EmployeeStatus", "FieldValue": "Inactive" }
  ],
  "bNewDocumentUpdate": false
}

The response lists each field with HasException and ErrorMessage, so you can check in the flow that the update worked. In my own flows, setting bNewDocumentUpdate to true has updated the item without adding a new version, which is handy for system fields. Test it in your list before you rely on it.

Why this flow doesn’t loop

Updating the item is itself a modification, so the trigger fires again. On that second run, Get changes compares the new version with the one before it. Only Employee Status changed, so ColumnHasChanged/EndofContract is false, the condition takes the False branch, and the flow stops.

To skip that extra run completely, add a trigger condition in the trigger’s Settings, for example to run only when Employee Status isn’t already Inactive. Test it with your own column names. See Power Automate trigger conditions examples.

Test the flow

Save the flow, go to the list and change an employee’s End of Contract date, for example to December 31, 2026.

Editing the End of Contract date of an employee in the SharePoint list

After the flow runs, Employee Status shows Inactive. Open the item’s Version history to confirm that only Employee Status changed in the flow’s version. Now edit another column, such as the phone number: the flow runs, the condition is false, and the status stays as it was.

If the new value should come from another list, for example an HR master list, see how to update a SharePoint list item from another list.

Employee Status updated to Inactive after the End of Contract date changed

These tutorials cover other ways to update SharePoint list items:

Frequently Asked Questions

How do I update only one column in a SharePoint list with Power Automate?

Use Update item with only that column and the required columns filled in, or send a MERGE request with Send an HTTP request to SharePoint that contains just that one field.

How do I know which column changed in Power Automate?

Use Get changes for an item or a file (properties only) with the trigger window tokens and check ColumnHasChanged for your column. Microsoft explains it in its SharePoint triggers and actions guide.

Why does Get changes say a column changed when it didn’t?

Since is probably set to the Created date or a fixed version. Set it to Trigger Window Start Token so the flow compares only with the previous version.

Does Update item clear the columns I leave empty?

In my testing, empty optional fields are left as they are, but required columns must have a value. To be sure, use the HTTP MERGE request, which only sends the fields you include.