You want a Notion database property that automatically changes its displayed status based on values in other columns. For example, a task row should show “Overdue” when the due date is past and the task is not marked complete. Notion formulas can evaluate multiple conditions and return a custom text status. This article explains how to write a formula that checks dates, checkbox states, and select options to produce a dynamic status label. You will learn the exact syntax for nested IF statements and how to combine logical operators in Notion formulas.
Key Takeaways: Conditional Status With Notion Formulas
- IF(condition, true_value, false_value): Returns one of two values based on a logical test.
- AND(cond1, cond2): Returns true only when all conditions are true; used inside IF for multi-condition checks.
- prop(“Date”) < now() and prop("Done") == false: Typical overdue check that compares a date property to the current time and verifies the checkbox is unchecked.
- Nested IF statements: Chain multiple IF functions to create a status with three or more outcomes like “Complete,” “In Progress,” and “Not Started.”
How a Conditional Status Formula Works in Notion
A conditional status formula uses the IF function to evaluate one or more conditions and return a text string. Notion formulas support logical operators such as AND, OR, and NOT. You can combine these operators to check multiple properties in a single formula. The result is a formula property that displays a custom status label, which updates automatically when the source properties change.
To build a conditional status, you need at least two properties that provide the input data. Common source properties include a Date property for deadlines, a Checkbox property for completion, and a Select property for current stage. The formula property itself does not require any manual input; it calculates the status based on the values you enter in those source columns.
Notion formulas are evaluated per row. Each time you edit a property in a row, the formula recalculates. This means your status label always reflects the most recent data. The formula language is limited to text, number, date, and boolean comparisons. You cannot use loops or external data, but for most project tracking needs, the available functions are sufficient.
Steps to Create a Conditional Status Formula
Follow these steps to add a formula property that shows a conditional status. This example uses a task database with a Date property named “Due Date” and a Checkbox property named “Done.”
- Open the database and add a Formula property
Click the + icon in the top-right corner of the database table header. Select Formula from the property type list. Name the property “Status.” - Write the IF condition for overdue tasks
Click inside the formula editor. TypeIF(prop("Due Date") < now() && prop("Done") == false, "Overdue", "On Track"). This checks if the due date is in the past and the task is not done. If both conditions are true, the status shows “Overdue.” Otherwise, it shows “On Track.” - Add a condition for completed tasks
Modify the formula to check the Done checkbox first. Replace the formula withIF(prop("Done") == true, "Complete", IF(prop("Due Date") < now(), "Overdue", "Pending")). This nested IF first checks if the task is done. If it is, the status is “Complete.” If not, it checks the date and returns “Overdue” or “Pending.” - Extend with a Select property for stage tracking
Add a Select property named “Stage” with options like “Not Started,” “In Progress,” and “In Review.” Update the formula:IF(prop("Done") == true, "Complete", IF(prop("Stage") == "In Progress", "In Progress", IF(prop("Due Date") < now(), "Overdue", "Not Started"))). This returns the stage name for in-progress tasks, checks for overdue, and defaults to “Not Started.” - Save the formula and test with sample data
Click Done in the formula editor. Enter a past due date in a row and leave Done unchecked. The Status column should display “Overdue.” Check the Done box, and the status changes to “Complete.” Test different Stage values to confirm each branch works.
Common Mistakes and Limitations With Conditional Status Formulas
Formula returns “Overdue” for tasks with no date
If a row has an empty Due Date property, prop("Due Date") < now() evaluates to false because an empty date is treated as a very early date. The formula may incorrectly show “Overdue.” To handle empty dates, add an extra condition: IF(prop("Due Date") == empty, "No Date", ...). Place this check before the date comparison.
Formula shows “On Track” for overdue tasks that are done
This happens when the Done checkbox is true but the formula checks the date first. Always check the Done condition at the top of the nested IF to ensure completed tasks always show “Complete” regardless of the date. The correct order is: complete first, then date-based status.
Formula does not update when the source property changes
Notion formulas recalculate automatically when any referenced property changes. If the status appears stuck, click the formula cell and press Enter to force a refresh. Also confirm that the source property names match exactly, including capitalization and spaces. A mismatched property name causes the formula to return an error.
Using OR to combine multiple conditions
You can use OR(condition1, condition2) to trigger a status when any condition is true. For example, IF(OR(prop("Priority") == "High", prop("Due Date") < now()), "Urgent", "Normal") marks a task as urgent if the priority is high or the date is past. Place the OR function inside the IF as the condition argument.
| Item | Simple IF Formula | Nested IF with Stage |
|---|---|---|
| Conditions checked | Due Date and Done | Done, Stage, Due Date |
| Possible statuses | Overdue, On Track | Complete, In Progress, Overdue, Not Started |
| Handles empty date | No | No (add empty check) |
| Uses Select property | No | Yes |
You can now build a conditional status formula that reads data from multiple Notion properties and returns a custom label. Start with a simple two-condition IF and expand to nested IFs as your tracking needs grow. To make the status more readable, consider using emoji characters in the formula text, such as "✅ Complete" or "🔴 Overdue". For advanced workflows, combine the status formula with database views that filter by the status property, giving you a live dashboard of task health.