Checking if a date field is blank in Power Automate sounds straightforward — until your flow crashes, returns unexpected results, or silently passes the condition when it shouldn’t.
The reason this trips up so many developers is that blank dates behave differently depending on where your date value comes from — a SharePoint list, a Microsoft Forms response, a manually set variable, or an HTTP/JSON response each require a different approach.
In this tutorial, I’ll walk you through every scenario using real-world workflow examples, explain the hidden gotcha that causes 80% of failures, and give you the exact expressions to copy into your flow.
Before You Start: The Hidden Gotcha Nobody Talks About
Here’s what most tutorials skip: SharePoint date columns are never truly null.
When a user leaves a SharePoint date column blank, Power Automate does not receive null; it receives a value internally treated as 01/01/1900 00:00:00. This means if you use a simple null check, your condition will always return false, even when the field visually appears empty in your SharePoint list.
Additionally, Microsoft Forms passes blank date fields as an empty string "" — not null, and not 01/01/1900. This is why an expression that works perfectly for SharePoint will completely fail when the data comes from a Form.
Understanding the source of your date is the single most important step before you write any condition.
Which Method Should You Use? (Decision Tree)
Use this quick guide to identify the right approach before building your flow:
Where is your date value coming from?
│
├── SharePoint List (trigger output)
│ └── Use: empty(triggerOutputs()?['body/YourDateColumn'])
│
├── Microsoft Forms (form response)
│ └── Use: equals(variables('varDate'), '')
│
├── A String Variable (initialized in flow)
│ └── Use: equals(variables('varDate'), null)
│
└── HTTP Response / Parsed JSON
└── Use: equals(body('Parse_JSON')?['DateField'], null)
Pre-Flight Checklist Before Building Your Condition
Before adding a single action to your flow, confirm the following:
- Identify your date field’s data source (SharePoint, Forms, Variable, API)
- Check whether the column is Optional or Required in your SharePoint list
- Decide whether your business logic should treat 01/01/1900 as “blank”
- Confirm whether you need to handle both null and empty string (
"") cases - Plan an error handling branch if you intend to use
formatDateTime()on a potentially null date - Test with both a blank AND a populated date before deploying to production
Check If a Date Is Blank In Power Automate
Here, I will show four different real-world scenarios for testing blank date conditions.
Method 1: Check If a SharePoint Date Column Is Blank in Power Automate (Using empty())
This is the most common scenario — your flow is triggered when a SharePoint list item is created or modified, and you need to check whether a date column (such as Joining Date) contains a value.
For this example, I am using the Employee Onboarding SharePoint list.

In this list, I have a Joining Date column. If the Joining Date is blank when a new item is created, the flow should automatically set the value to today’s date.
Step 1: Create the Automated Flow
- Go to Power Automate and select + New flow → Automated cloud flow
- Enter a flow name and choose the trigger: When an item is created
- Configure the trigger with your Site Address and List Name

Step 2: Add a Compose Action to Evaluate the Date
- Select + New Step → Data Operation → Compose
- In the Inputs field, switch to the Expression tab and enter:
empty(triggerBody()?['JoiningDate'])

This expression returns true if the date column is blank, and false if it contains a date value.
Step 3: Add a Condition Action
- Add a + New Step → Control → Condition
- Configure the condition as follows:
- Left value: Select the Outputs dynamic content from your Compose step
- Operator: is equal to
- Right value: true

- In the If yes branch, add the actions that should run when the Joining Date is blank. In this example, we will automatically update the item and set the Joining Date to today’s date.
- In the If no branch, add actions for when the date is populated

Step 4: Save and Test
- Select Save, then click Test → Manually → Save & Test
- Go to your SharePoint list, add an item — once with the date column empty, and once with a date value entered

Expected result: When TaskCompletedDate is blank, the Compose returns true and the If yes branch executes. When a date is present, it returns false and the If no branch executes.

Method 2: Check a Date Using a String Variable in Power Automate (Safe formatDateTime() Pattern)
The problem with using formatDateTime() directly on a date field is that if the field is blank, the expression throws a runtime error, and your flow fails. The solution is to initialize a String variable that safely handles the null before you ever try to format it.
Step 1: Create the Automated Flow
Set up the same trigger as Method 1 — When an item is created or modified — configured with your Site Address and List Name.
Step 2: Initialize a String Variable
- Select + New Step → Variables → Initialize variable
- Configure as follows:
- Name: varJoiningDate
- Type: String
- Value: Switch to the Expression tab and enter:
if(empty(triggerBody()?['JoiningDate']),null,formatDateTime(empty(triggerBody()?['JoiningDate']),'yyyy-MM-dd'))

This expression first checks if the field is blank. If it is blank, the variable is set to null. If it contains a date, the date is safely formatted as yyyy-MM-dd and stored in the variable.
Step 3: Add a Condition to Check the Variable
- Add a Control → Condition action
- Configure:
- Left value: variables(‘varTaskCompletedDate’)
- Operator: is equal to
- Right value: null
- In the If yes branch, add a Compose action with the message: Yes, the date value is blank
- In the If no branch, add a Compose action with the message: No, the date value is not blank

Step 4: Save and Test
Test with both an empty and a populated date. The variable pattern completely eliminates the formatDateTime crash and gives you a clean, reusable date string to use anywhere downstream in your flow.

Method 3: Check a Blank Date from Microsoft Forms in Power Automate
If your date is coming from a Microsoft Forms response — for example, an employee submitting a leave request with an optional date field — the check is different because Forms passes blank fields as an empty string "", not as null.
Step 1: Set Up the Trigger and Variable
- Use the trigger: When a new response is submitted (Microsoft Forms)
- Add a Get response details action
- Initialize a String variable varFormDate and set its value to the dynamic content of your date question field from the form response

Step 2: Check If the Variable Is Empty String
- Add a Control → Condition action
- Configure:
- Left value: variables(‘varFormDate’)
- Operator: is equal to
- Right value:
""(two double quotes — an empty string)

This catches blank form responses correctly without false positives.
Method 4: Using coalesce() for Cleaner Null Handling
If you want a more elegant, one-line approach — especially useful when setting a fallback value — use the coalesce() function. This is a lesser-known but powerful expression that returns the first non-null value from a list of arguments.
Expression:
coalesce(triggerBody()?['JoiningDate'], '')
If the date field is null, this returns an empty string ''. If it has a value, it returns the date. You can then check if the result equals '' in your condition. This is particularly useful when you want to pass a safe default value downstream instead of null.
Scenario Reference: Which Expression to Use
| Scenario | Data Source | Correct Expression | Common Mistake to Avoid |
|---|---|---|---|
| Task approval — check if due date is set | SharePoint List | empty(triggerOutputs()?[‘body/DueDate’]) | Using null check instead of empty() |
| Leave request form — optional end date | Microsoft Forms | equals(variables(‘varDate’),”) | Using empty() directly on form output |
| Reminder email — format date safely | SharePoint + Variable | if(empty(…), null, formatDateTime(…)) | Using formatDateTime() without guard |
| REST API response — check date in JSON | HTTP / Parse JSON | equals(body(‘Parse_JSON’)?[‘DateField’], null) | Assuming string check works on JSON null |
| Set default date if blank | Any source | coalesce(triggerOutputs()?[‘body/Date’], ”) | Skipping fallback and letting null propagate |
Common Errors and How to Fix Them
Error: “The template language expression is invalid” on formatDateTime()
- Cause: You’re passing a null value directly to
formatDateTime() - Fix: Wrap it with the if(empty(…), null, formatDateTime(…)) pattern from Method 2
Error: Condition always returns false even though the date field looks empty
- Cause: SharePoint is storing 01/01/1900 instead of null
- Fix: Use empty() on the raw trigger output rather than checking for null
Error: Forms blank date is not caught by empty() condition
- Cause: Forms sends an empty string “”, not null
- Fix: Use equals(variables(‘varDate’), ”) instead of empty()
Error: Flow passes the blank check but crashes further downstream
- Cause: You checked for blank at the trigger but passed the raw output (not the guarded variable) to a later action
- Fix: Always use the initialized String variable (from Method 2) as the value you pass to all downstream actions
You may like the following Power Automate tutorials:
- Create a PDF from Excel using Power Automate
- Power Automate Condition if a String is Empty
- Parse JSON Object to Array in Power Automate
- Conditionally Update SharePoint list items using Power Automate
Frequently Asked Questions
Why does empty() return false for a blank SharePoint date?
SharePoint date columns are never truly null when empty. The platform stores a default value of 01/01/1900 00:00:00 internally. Because empty() evaluates the raw trigger output and this value is not technically null or an empty string, it returns false. Always use empty(triggerOutputs()?[‘body/YourDateColumn’]) which evaluates the field-level output before any type conversion.
What is the difference between null and empty string in Power Automate date checks?
A null value means no data exists at all — typically from SharePoint columns or unset variables. An empty string “” means a string variable exists but has no content — this is what Microsoft Forms sends for blank date fields. The check you use must match the type: equals(x, null) for null, and equals(x, ”) for empty string.
Can I use empty() inside formatDateTime() directly?
No — you cannot nest empty() inside formatDateTime(). Instead, wrap the entire expression in an if() statement: if(empty(triggerOutputs()?[‘body/Date’]), null, formatDateTime(…)). This evaluates the blank check first and only runs formatDateTime() when a valid date exists.
How do I handle blank dates coming from Microsoft Forms?
Since Forms passes blank date fields as empty strings, initialize a String variable with the form output, then check: equals(variables(‘varFormDate’), ”). Do not use empty() directly on the form response — it will not reliably catch blank form dates.
What happens if I pass a null date to an Update Item (SharePoint) action?
The flow will fail at runtime with a bad request error because SharePoint expects either a valid date string or no value passed at all. Always guard your date value with a condition before passing it to any SharePoint action, or use the coalesce() pattern to supply a safe fallback.
Is there a way to clear a SharePoint date column back to blank using Power Automate?
Yes. In the Update Item action, leave the date field completely empty (do not pass null or an empty string). If you are dynamically constructing the request, use the triggerOutputs()?[‘body/YourColumn’] output guarded with a condition rather than passing a formatted null string.

After working for more than 18 years in Microsoft technologies like SharePoint, Microsoft 365, and Power Platform (Power Apps, Power Automate, and Power BI), I thought will share my SharePoint expertise knowledge with the world. Our audiences are from the United States, Canada, the United Kingdom, Australia, New Zealand, etc. For my expertise knowledge and SharePoint tutorials, Microsoft has been awarded a Microsoft SharePoint MVP (12 times). I have also worked in companies like HP, TCS, KPIT, etc.