How to Build Notion Database With Conditional Status Color via Formula
🔍 WiseChecker

How to Build Notion Database With Conditional Status Color via Formula

Setting a conditional status color in a Notion database lets you visually identify task progress without reading the status label. Notion does not allow direct color formatting of cell text based on its value, but you can create a formula property that displays a colored emoji or symbol that changes with the status. This article explains how to write the formula, which functions to use, and how to apply the colored indicator to any database view. You will be able to build a custom status color system that updates automatically when the status changes.

Key Takeaways: Conditional Status Color via Formula

  • Formula property with if() and style(): Combines a conditional check with the style() function to produce a colored dot or emoji that reflects the current status.
  • Select or Status property as the trigger: The formula reads the value of an existing status column and returns a colored symbol based on the condition.
  • Gallery or Board view with formula as the cover: Displays the colored indicator prominently so you can scan task states at a glance.

ADVERTISEMENT

How Conditional Status Color Works in a Notion Formula

A Notion formula cannot change the background color of a cell. Instead, you use the style() function to apply a text color to a symbol or emoji. The formula checks the value of a Select or Status property and returns a colored character that represents that status. For example, a green circle for “Complete” and a red circle for “Overdue.”

The formula requires a property to read from. Create a Select property named “Status” with options such as “Not Started,” “In Progress,” and “Done.” Alternatively, use Notion’s built-in Status property. The formula then uses if() or ifs() to map each status to a colored emoji. The style() function accepts two arguments: the text to display and a CSS-like color string. The color string can be a named color like “green” or a hex code like “#00aa00.”

The colored emoji appears in the formula column. You can show this column in any database view. For a more visual layout, place the formula property as the card cover in a Gallery or Board view. That way the colored indicator is large and easy to scan.

Prerequisites

You need a Notion database with at least one row. Create a Select property named “Status” with three options: “Not Started,” “In Progress,” “Done.” If you want more granularity, add more options. The formula will handle each option with its own color.

Steps to Add a Conditional Status Color Formula

  1. Open the database and add a formula property
    Click the + button to the right of the last column header. Select “Formula” from the property type list. Name the property “Status Color” or something similar.
  2. Write the conditional formula using if() and style()
    Click inside the formula editor. Type the following formula:
    if(prop("Status") == "Not Started", style("●", "gray"), if(prop("Status") == "In Progress", style("●", "blue"), if(prop("Status") == "Done", style("●", "green"), style("●", "lightgray"))))
    This formula checks the Status property. For each value, it returns a filled circle emoji in a specific color. The last style() catches any other status value and shows a light gray circle.
  3. Test the formula with sample data
    Add a few rows to the database. Set the Status property to different values. The “Status Color” column should display a gray, blue, or green circle that matches the status. If the circle does not appear, check that the Status property name in the formula matches exactly, including capitalization and spaces.
  4. Add more status options to the formula
    If you have more than three statuses, extend the if() chain. For example, add a fourth condition for “Review” with a yellow circle:
    if(prop("Status") == "Not Started", style("●", "gray"), if(prop("Status") == "In Progress", style("●", "blue"), if(prop("Status") == "Review", style("●", "yellow"), if(prop("Status") == "Done", style("●", "green"), style("●", "lightgray")))))
    Make sure the Select property contains all the statuses you reference in the formula.
  5. Display the formula column in a Gallery or Board view
    Switch the database view to Gallery. Click “Properties” in the view toolbar. Enable the “Status Color” property. Drag it to the top of the property list so it appears as the card cover. The colored circle now shows on each card, making it easy to see the status at a glance.
  6. Use a status icon instead of a circle
    Replace the circle in the formula with an emoji like ✅ for Done, 🔵 for In Progress, and ⚪ for Not Started. The formula becomes:
    if(prop("Status") == "Not Started", style("⚪", "gray"), if(prop("Status") == "In Progress", style("🔵", "blue"), if(prop("Status") == "Done", style("✅", "green"), style("⚪", "lightgray"))))
    Emojis are larger and more recognizable than dots in some views.

ADVERTISEMENT

Common Mistakes, Limitations, and Things to Avoid

Formula shows the circle but all circles are the same color

This usually means the style() function is applied to the entire result instead of to each branch. Make sure each style() call wraps only the character for that condition. Do not wrap the whole if() chain in one style(). The correct pattern is style("●", "color") inside each branch.

Status property name mismatch

If the formula editor shows a red underline under prop("Status"), the property name is wrong. Open the database and verify the exact name of your status property. Spaces and capitalization count. Rename the property in the formula to match exactly.

Color does not appear in certain views

The style() function applies text color only. In a Table view, the colored emoji appears in the cell but the cell background remains white. In a Board view, the formula column is not shown by default. Add the formula column as a card preview or card cover to see the color. In a Calendar view, the colored dot shows in the event title area if you include the formula in the card properties.

Formula with multiple statuses becomes too long

Notion formulas have a character limit. For more than six statuses, consider using a separate database with a relation and rollup to store the color mapping. Alternatively, use the ifs() function which is cleaner than nested if() statements. Example: ifs(prop("Status") == "A", style("●", "red"), prop("Status") == "B", style("●", "blue")). Note that ifs() stops at the first true condition.

Notion Formula Color Methods Compared

Item style() with emoji style() with Unicode symbol
Visual appearance Large, colorful emoji like ✅ or 🔵 Small, filled circle ● or square ■
Best view type Gallery card cover or Board card preview Table column or List view
Color accuracy Emoji color is fixed by the emoji itself; style() only affects text color of the emoji Pure text color; the symbol renders exactly in the color you specify
Readability in small cells Emoji may be too large or blurry in Table cells Symbol remains crisp at any size
Formula complexity Same; just replace the character inside style() Same; use ● or ■ inside style()

The style() function works with any Unicode character. For a filled circle, paste the Unicode character U+25CF. For a square, use U+25A0. These symbols are not emojis, so they render as pure text and respect the color argument exactly. Emojis may override the color with their own palette.

You can now build a Notion database with a conditional status color formula that changes automatically when the status updates. Start by creating a Select property with your status options, then add the formula column using the if() and style() functions shown above. For large databases with many statuses, consider using the ifs() function to keep the formula readable. Experiment with different symbols and emojis to match your team’s visual preference.

ADVERTISEMENT