Skip to content

The quotes that break your Notion automation

5 min read
An open blank notebook with a pen above it

In the previous article, we used empty() so a blank renewal stayed a number. This article is about that blank, and why a pair of quotes is not the same thing. πŸ’―

This article is a part of the Fantastic Formulas series. This series features helpful articles about formulas in Notion.

A formula that ends in "" looks like a blank. It is not. Quotes are text. If the other branch is a date, a number, or a person, the return type becomes unknown. In a database column the row still looks empty, which is why this one hides. In a button or an automation, Notion will not save the formula. πŸ‘€

Today we will fix the blank, then the two cousins that pause a run: an empty person, and a multi-select checked with ==. Just like in the previous article, I will proceed with a simple database. This time, let’s say we want the next check-in a week after the last contact. πŸ‘€

In this database shown below, you can see 4 properties. First property shows the client name, second one shows the last contact date, third property shows the owner, and the fourth is a multi-select called Tags. βœ…

Follow-ups database with last contact, owner, and tags Example - Simple Follow-ups database

Harbor has no last contact, no owner, and no tags. That is the row that matters.

1. The pair of quotes

Notion’s help center uses a pair of quotes as the example of a wrong return type. One branch is a date. The other is text. The type is unknown, so an automation fails to save. Their example is if(Date, Date.dateAdd(1, "day"), ""). The formula reference writes the unit as "days", so that is what we will paste. βœ…

if(prop("Last contact"), prop("Last contact").dateAdd(7, "days"), "")

Quotes as a blank date

As you can see below, the formula is perfectly working πŸ”½

With quotes and with empty() showing the same dates Quotes and empty() look the same in the column

  • Acme, last contact 26 Sep 2026 β†’ 3 Oct 2026
  • Northwind, 12 Sep 2026 β†’ 19 Sep 2026
  • Studio, 1 Sep 2026 β†’ 8 Sep 2026
  • Harbor β†’ blank in both columns

The two columns match. A table cannot show you the type. A button that writes this value into a date property can. πŸ‘€

2. empty()

empty() is a blank that keeps the type of the other branch. dateAdd only runs when Last contact has a value. When it does not, empty() tells the automation to clear the date it is setting, instead of pausing. The syntax is

if(prop("Last contact"), prop("Last contact").dateAdd(7, "days"), empty())

empty() keeps the result a date

That is the shape Notion documents. Harbor is still blank. Acme is still 3 Oct 2026. The column did not change. The type did. βœ…

"" is the right blank only when the other branch is also text. We did that in the previous article, wrapping the number in format() so both sides were text. Do not copy those quotes into a date formula. πŸ‘€

3. Buttons and automations

A formula property in a database is loose about its type. A formula inside a button or a database automation is not. Notion expects a date, text, number, or person, matching the property you are setting. If the type is unknown, the automation fails to save and will not run. βœ…

Three contracts, same idea.

  • Setting a date β†’ return a date, or empty()
  • Setting a person β†’ return a person, or a list of people, not a name
  • Setting text β†’ return text, and "" is fine there

There is a second failure, after the formula saves. If it operates on an empty date or an empty person, the automation gets an error and pauses. The guard above is the documented fix. Check the value, then call dateAdd, and return empty() when it is missing.

You can also point the automation at a view that already filters out empty dates. Then the formula never sees Harbor. The guard is still the safer default, because someone will run the button from the full table. βœ…

4. People and multi-select

People and relations come back as lists. The list article covers that for a database column. Inside an automation it is stricter. If you treat the list as one person, the run pauses. Take the first item, or loop with map. πŸ‘€

prop("Owner").first().name()

First owner, as text

That is text, which is right for a column you want to read. If the button is setting a Person property, return the person, and guard the empty row. βœ…

if(empty(prop("Owner")), empty(), prop("Owner").first())

First owner, still a person

As you can see below, the formula is perfectly working πŸ”½

First owner name from the Owner property first() on Owner

Acme is Maya, Northwind is Jonah, Studio is Priya, and Harbor stays empty. Do not call .name() on that empty person inside an automation. That is the pause. πŸ‘€

Multi-select is a list of text. == compares the whole list to one string, which is not the check you think it is. Use includes. βœ…

prop("Tags").includes("VIP")

includes() on a multi-select

As you can see below, the formula is perfectly working πŸ”½

VIP check using includes on Tags includes(β€œVIP”)

Acme and Studio are true. Northwind is Renew, so false. Harbor has no tags, so false. The false is a normal answer, not a pause.


Conclusion

Now you know why a pair of quotes breaks a Notion automation! "" is text. empty() is a typed blank. Use quotes only when the other branch is text. Guard empty dates and people before you call a function on them. And check a multi-select with includes, not ==. πŸ”₯

I hope this article was helpful and easy to understand. At Prototion, we are on mission to make Notion easy for everyone! So we regularly post Helpful articles about Notion like this one. πŸ“„

Remember to check out the Fantastic Formulas series for more articles about Notion formulas. Doesn’t matter if you are a Notion beginner or a pro, I believe you will find this series helpful. Also, don’t forget to follow us on 🐦 Twitter for daily updates, latest Notion template launches and amazing deals & discounts on Premium Notion templates! 😍

Short answers

Why do quotes break a Notion automation?

A pair of quotes is text. If the other branch is a date, a number, or a person, the return type is unknown, and the automation will not save.

What should I use instead of quotes for a blank date?

Use empty(). It keeps the type of the other branch, and it tells the automation to clear the property when the value is missing.

Why does a Notion automation pause on an empty person or date?

Operating on an empty date or person returns undefined, and Notion pauses the run. Check the value first, then call the function, and return empty() when it is missing.

Templates that do this for you

Built by independent makers on Prototion.