June 24, 2024

Checking if something is empty can save a lot of actions and potential breaking Flows. That’s why we have the “empty” function that will check if a collection is empty or not.

One important distinction is that empty is not the same thing as “Null”. I see a lot of people making this confusion. Think of it like this. If you have an empty pack of cookies, the packs still exist, although empty. But if you have your hands with nothing, that’s where “Null” comes into play. You can’t compare something if it doesn’t exist; hence Flow breaks when something is “Null”

So let’s check how the “empty” function works.


It follows a simple pattern.

  1. String with a collection or,
  2. Collection

It will always return a true/false result.

Let’s start with a simple example:


will return 


The variable was initialized without any value, so the “empty” function returns that is indeed true.

Now, how about instead we provide:


will return


Why? Notice that we’re not providing an array. Instead, we’re providing a string with one element. Since a string with one piece can be considered a collection, the result is false.

Let’s now check how it works with the “createArray” function, by creating an empty array.


will return


Makes sense. The “createArray” function creates an array with one element, so it’s not empty.

Finally, let’s provide an empty string from a variable:


will return


The empty function checks if an object is empty (remember the pack of cookies from before). It can check because we define the type, so the empty function knows how to check if it’s empty or not.


Depending on the size of your string, your expression may return an error, even if it’s correct. Please note that the expressions have a max size of 8,192 characters. If you have an expression that is even bigger than 1000, I would strongly advise breaking it into smaller, manageable formulas.


Here are some things to keep in mind.

Use “debug” compose actions.

Since the comparison will return true or false, sometimes it’s tricky to understand how the calculation is done, depending on how complex the expression is. So I recommend using Compose actions to have the values that go “in” the function. This way, if the value doesn’t make sense, you can understand, based on the parameters, why it was calculated that way.

Don’t nest

There’s no real reason to do it. The flow will allow you to nest “empty” functions in a formula, but then it will return the following error when it runs.

Unable to process template language expressions in action 'Compose' inputs at line '1' and column '4718': 'The template language function 'empty' expects its parameter to be an object, an array or a string. The provided value is of type 'Boolean'. Please see https://aka.ms/logicexpressions#empty for usage details.'. 

The empty function cannot have a boolean as a parameter, as explained by the exception.


Microsoft’s empty Function Reference

Back to the Power Automate Function Reference.

Photo by Tijs van Leur on Unsplash

Manuel Gomes

I have 18 years of experience in automation, project management, and development. In addition to that, I have been writing for this website for over 3 years now, providing readers with valuable insights and information. I hope my expertise allows me to create compelling, informative content that resonates with the audience.

View all posts by Manuel Gomes →

Leave a Reply

Your email address will not be published. Required fields are marked *