# Power Automate condition to check if a field is empty

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

> How to test for an empty SharePoint field in a Power Automate condition. Text, person and choice columns each need a slightly different check.

Use empty() in a condition, and test the right part: the text value, the person email, or the choice Value. Microsoft describes empty() as a function that "Returns true if the object, array, or string is empty." For a column that allows many people or many choices, test the whole list, or count it with length().

A failed "is empty" check can come from testing the wrong thing. The column looks blank on screen, but the flow sees an object, a list or a text value. This guide shows each case, with one small example flow you can copy.

## The example used here

Picture a SharePoint list named Facility requests with these columns:

- Title
- Owner (Person, one person)
- Priority (Choice: 1 High, 2 Medium, 3 Low)
- Notes (Single line of text)
- Reviewers (Person, allows multiple people)

The goal: when someone adds a request, the flow checks whether Owner, Priority, Notes or Reviewers was left empty, and acts on it.

## Why one empty check does not fit all

An empty text box and an empty person box are not the same thing to a flow. Here is the plain version:

- Text: the value is a string. Empty means no characters.
- Person: the value is a bundle of parts (name, email and more). Empty means the bundle is missing.
- Choice: the value is a bundle with a Value part inside. Empty means the bundle is missing.
- Multiple people or multiple choices: the value is a list. Empty means the list has nothing in it.

Microsoft's pages do not describe how each SharePoint column type looks inside a flow. The paths below are our advice, not a Microsoft rule. The names on your screen may differ, so always confirm them in the next section.

## Step 1. Look at a real run first

Before you write a condition, see what your flow actually receives.

1.  Build a flow with a SharePoint trigger, such as "When an item is created", for your list. See "[Why Power Automate turned your flow off, and how to turn it back on](/guides/power-automate-flow-turned-off-automatically/)" if a flow you built earlier stops running.
2.  Save it and add one test item. Leave Owner, Priority and Notes empty on purpose.
3.  Open the run history for the flow and open the trigger step.
4.  Look at the output. Find Owner, Priority and Notes. Note how an empty one is written. Then add a second test item with all fields filled in and compare.

This is the quickest way to learn the exact names. Menu and button names change over time, so exact names may differ on your screen.

## Step 2. Add a condition

Microsoft's page on conditions says to use a condition "to specify that a cloud flow performs one or more tasks only if a condition is true or false." A condition has two sides: "If yes" and "If no".

1.  Under your trigger, choose to add an action and pick Condition.
2.  On the left box, you can click and pick a field from dynamic content. That works for simple checks.
3.  For an empty check, you need an expression. Microsoft's expressions page says to edit the Condition card "in advanced mode" to use the empty expression. Switch the card to advanced mode (the exact name may differ).
4.  Type the expression from the sections below.
5.  Put your action on the "If yes" side if you want it to run when the field is empty.

## Check an empty text field

Microsoft's example for empty() on a spreadsheet column reads like this:\
@and(empty(item()?\['Status'\]), empty(item()?\['Assigned'\]))\
That example is for rows in a loop (item()). For a trigger on your list, the same idea applies, but you point at the trigger output. In the Expression editor, you can pick the Notes token from dynamic content and wrap it in empty(). It looks like this:\
empty(triggerOutputs()?\['body/Notes'\])\
The "triggerOutputs()?\['body/Notes'\]" part is our advice about the path. Your column may use a different internal name, so confirm it in the run history from Step 1.

Microsoft's functions reference gives this example: empty('') returns true, and empty('abc') returns false. Its description is "Check whether a collection is empty. Return true when the collection is empty, or return false when not empty."

One more rule from the same page: "If you use logical functions or conditions to compare values, null values are converted to empty string ("") values." So a text column that was never filled in is treated as empty. A text column that holds only a space is not empty. Plan for that: if people type a space by habit, test with trim() as well. That tip is ours.

## Check an empty person field

A person column returns parts, not one plain text. One way to start: test one part that always exists when a person is set, such as the email.

empty(triggerOutputs()?\['body/Owner/Email'\])

If Owner is blank, there is no email, so the test returns true. If Owner is set, it returns false. Again, the path is our advice. Microsoft's pages do not describe the exact path for a person column. Check your run history. In some flows the part is called Email, and in others you will see Claims or DisplayName. Test with a filled item and an empty item and see which part changes.

To check that a person is set (the opposite), wrap the test in not(). Microsoft's expressions page describes not as "Returns the opposite of a boolean value."

not(empty(triggerOutputs()?\['body/Owner/Email'\]))

## Check an empty choice field

A choice column has a Value part inside. Test that part:\
empty(triggerOutputs()?\['body/Priority/Value'\])\
When no choice is picked, there is no Value, so this returns true. If Priority is set to 1 High, it returns false.

Two cautions:

- If a Choice column has a default value, it is never empty on a new item. The flow sees the default. Check the column settings.
- To test for a specific choice, compare to the full text, including the number: equals(triggerOutputs()?\['body/Priority/Value'\], '1 High'). Microsoft describes equals as "Check whether both values, expressions, or objects are equivalent." The text must match exactly, so '1 High' works and 'High' does not.

## Check an empty date field

Our advice, not a Microsoft rule: a date column nobody filled in has no value, so test it the same way as text. Microsoft's functions reference says null values are converted to empty string values when you compare values in a condition.

empty(triggerOutputs()?\['body/DueDate'\])

Replace DueDate with the internal name you see in the run history. Test one item with a date and one without.

## Check an empty lookup field

Our advice, not a Microsoft rule: a lookup column holds a value that has a Value part, like a choice. Test that part.

empty(triggerOutputs()?\['body/Project/Value'\])

Replace Project with your lookup column name, and confirm the part in the run history.

## Check a column that allows many people or many choices

These columns return a list. Microsoft's page says empty works on "the object, array, or string", so it can test a list. A second way is to count the items. Microsoft describes length as "Return the number of items in a string or array."

length(triggerOutputs()?\['body/Reviewers'\])

Put that in the left side of a Condition, set the middle to "is equal to" and the right side to 0. If the result is 0, nobody was added. Use whichever style you find easier to read. Either one works as a first try. Confirm it on a test item.

## Step 3. Do something useful on the "If yes" side

Say you want to flag requests with no owner. On the "If yes" side of the Owner check:

1.  Add the SharePoint action "Update item".
2.  Pick the same site and list.
3.  Set the Id from the trigger.
4.  Fill any other box the action marks as required, using the value from the trigger so the item does not change.
5.  In Notes, type "Needs an owner".
6.  Save and test with an item that has no Owner.

Or send a message instead. The Late tasks guide, "[Late tasks nobody notices](/guides/late-tasks-nobody-notices/)", shows how to notify people from a flow.

## Step 4. Test all the cases

Run one test item for each case:

1.  All fields empty.
2.  Only Owner filled.
3.  Only Priority filled.
4.  All fields filled.
5.  Notes filled with only a space.

Check the run history after each one. Green checks on every step mean the flow ran. Open the condition step and read whether it said true or false. A flow can run without errors and still pick the wrong side.

## What to avoid

- Do not test a person column by comparing it to an empty text box. The person is a bundle, so the test may never match.
- Do not drop the number from a choice when you compare. '1 High' is the stored text.
- Do not guess names from the screen. Copy them from the run history.
- Do not skip the filled-in test. A check that is always true looks fine until real data arrives.
- Do not build one big condition with many empty checks until each one works alone. Microsoft's expressions page shows you can combine tests with and() and or(), but test each piece first.
- Do not read Get items results as proof. Microsoft's page on Get items says "The default item limit is 100". You can raise it up to 5,000 with Top Count in Advanced options. Turn on Pagination in the action settings if your list may be larger. See "[Power Automate Get items stops at 100 rows: how to get them all](/guides/power-automate-get-items-only-returns-100/)".
- Do not use this check to hide a missing rule. If a field must always be filled, make it required in SharePoint so the item cannot be saved without it. Microsoft's pages do not describe the exact steps for your setup, so check the column settings on your screen. Then the flow check is a second guard, not the only one.

## Honest limits

The paths and names in this guide depend on your list and your flow. Microsoft documents empty(), not(), equals() and length() well. It does not document how each SharePoint column type appears in a trigger. That part comes from looking at your own run history. Menu names change, so exact names may differ. Start with one flow and one list, and add checks one at a time.

## 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

### Power Automate check if field is null: how?

Use empty(). Microsoft's functions reference says "If you use logical functions or conditions to compare values, null values are converted to empty string ("") values." So a missing text value is treated like an empty string.

### Power Automate check if date field is empty: how?

Our advice, not a Microsoft rule: use empty(triggerOutputs()?\['body/DueDate'\]) with your column's internal name, and test one item with a date and one without.

### Power Automate check if person field is empty: how?

Test one part of the person, such as the email: empty(triggerOutputs()?\['body/Owner/Email'\]). The path is our advice, not a Microsoft rule, so confirm it in the run history.

### Power Automate check if lookup field is empty: how?

Our advice, not a Microsoft rule: test the Value part, such as empty(triggerOutputs()?\['body/Project/Value'\]), and confirm the part in the run history.

### Why does my empty check say false when the field looks blank?

The field may hold a space, a default value, or a bundle such as a person. Open the run history, read the real value, and test the right part of it. For a person, test the email. For a choice, test Value.

### Do I need advanced mode for this?

Microsoft's expressions page shows empty() in advanced mode. You can also type it in the expression editor, as in the Notes example above. The exact label may differ on your screen.

### Can I check if a field is NOT empty?

Yes. Wrap the test in not(). Microsoft's expressions page describes not as "Returns the opposite of a boolean value."

## Sources

- [Microsoft Learn, Use expressions in conditions in Power Automate](https://learn.microsoft.com/en-us/power-automate/use-expressions-in-conditions)
- [Microsoft Learn, Add a condition to a cloud flow in Power Automate](https://learn.microsoft.com/en-us/power-automate/add-condition)
- [Microsoft Learn, Reference guide to workflow expression functions in Azure Logic Apps and Power Automate](https://learn.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference)
- [Microsoft Learn, In-depth analysis into Get items and Get files SharePoint actions](https://learn.microsoft.com/en-us/sharepoint/dev/business-apps/power-automate/guidance/working-with-get-items-and-get-files)

## Related guides

- [My condition on a choice column always goes to No](/guides/power-automate-choice-column-condition-not-matching/)
- [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/)
- [Fix "Invalid type. Expected String but got Null" in Power Automate](/guides/power-automate-invalid-type-expected-string-but-got-null/)

Source: https://250highstreet.com/guides/power-automate-condition-field-empty/
