You want to combine text and numbers into a single string inside a Notion formula property. Notion formulas treat text and numbers as different data types, so a simple plus sign will not merge them correctly. This article shows you the exact syntax to join text strings with numeric values, dates, or rollup results in a Notion database formula.
You will learn the format() and concat() functions, how to handle empty cells, and common mistakes that break your formula. By the end, you can build clean, readable strings that display exactly what your team needs to see.
Key Takeaways: Concatenating Text and Numbers in Notion Formulas
- format() function: Converts any number, date, or boolean into a text string so you can join it with other text.
- concat() or plus sign (+): Use either method to merge multiple text fragments into one string. The plus sign works only after all values are formatted as text.
- empty() check: Prevents unwanted text like “Total: ” when a number cell is blank by wrapping the formula in an if statement.
How Notion Formula Concatenation Works
Notion formulas operate on typed values. A text string is a string type, and a number is a number type. The plus sign (+) in Notion formulas acts as an arithmetic operator on numbers and as a concatenation operator only when both sides are already strings. If you try "Total: " + 100, Notion returns a type error because the number 100 is not a string.
To combine text and numbers, you must first convert the number to a string using the format() function. Once both pieces are strings, you can join them with concat() or with the plus sign. The concat() function accepts multiple arguments and is generally easier to read when you have three or more parts.
Prerequisites
You need a Notion database with at least one text property and one number property. Create a new formula property by clicking the + icon in the database header and selecting Formula. The formula editor opens where you can type the expressions shown below.
Steps to Concatenate Text and Numbers in a Notion Formula
These steps assume you have a database with a Name text property and a Price number property. You want the formula to show something like “Widget — $29.99”.
- Open the formula editor for a new formula property
Click the+button at the top of the database columns. Choose Formula. A text field appears where you will write the formula. - Convert the number property to text with format()
Typeformat(prop("Price")). This turns the numeric value into a string. For example, 29.99 becomes the string “29.99”. - Join the text and the formatted number
Use the plus sign:prop("Name") + " — $" + format(prop("Price")). The middle part" — $"is a literal string that includes the dash and dollar sign. The entire formula returns a single text string. - Test the formula with different values
Enter a few rows with different names and prices. The formula column should display each row as “Widget — $29.99” or “Gadget — $5.00”. If you see an error, check that all property names inprop()match exactly. - Handle blank number cells with empty()
If a Price cell is empty, the formula still shows “Widget — $” which looks incomplete. Wrap the formula in anifstatement:if(empty(prop("Price")), "", prop("Name") + " — $" + format(prop("Price"))). Now blank price cells produce an empty string.
Using concat() Instead of Plus
The concat() function takes multiple string arguments and joins them in order. The same example looks like this:
concat(prop("Name"), " — $", format(prop("Price")))
With concat(), you do not need the plus sign between each part. This is cleaner when you have four or more fragments, such as including a currency symbol, a space, and a unit label.
Common Mistakes and Things to Avoid When Concatenating
These are the most frequent errors users encounter and how to fix them.
Type Mismatch Error: “Cannot add a string and a number”
This error appears when you use the plus sign between a string and a raw number without format(). Always wrap numeric properties, date properties, and rollup results in format() before concatenating.
Empty Cells Produce Incomplete Text
If a number cell is empty, format(prop("Price")) returns an empty string. Your concatenated result will have missing parts, like “Widget — $”. Use the empty() function to check for blanks and return an alternative string, or skip the row entirely.
Incorrect Property Name in prop()
Notion property names are case-sensitive and must match exactly. If your property is named “Unit Price” but you write prop("Unit price"), the formula returns an error. Double-click the property name in the database header to see the exact spelling and capitalization.
Date Values Not Formatted Correctly
Dates are not strings. To include a date in a concatenated string, use formatDate(prop("Date"), "MMM D, YYYY"). The second argument defines the date format. For example, formatDate(prop("Due Date"), "MMM D, YYYY") returns “Jan 5, 2025”.
Rollup Results That Are Numbers
A rollup property that sums numbers still returns a number. Wrap the rollup in format() before concatenating: "Total: " + format(prop("Rollup Sum")).
Notion Formula Functions for Concatenation: format() vs concat() vs join()
| Function | Purpose | Example |
|---|---|---|
| format() | Converts a number, date, or boolean into a text string | format(prop("Price")) turns 29.99 into “29.99” |
| concat() | Joins two or more strings into one string | concat("A", " ", "B") returns “A B” |
| join() | Combines an array of strings with a delimiter | join(["a","b"], ", ") returns “a, b” |
Use format() as the first step for any non-text value. Use concat() when you have multiple text parts to join. Use join() only when working with arrays, such as the output of a map() function on a rollup.
Now you can build formulas that combine text, numbers, dates, and rollups into readable strings. Start by converting every non-text value with format() and then use concat() to assemble the final result. For a next step, explore the replace() and slice() functions to further manipulate the concatenated string. An advanced tip: use if(empty(prop("Field")), "", ...) to keep your concatenated output clean when source cells are blank.