Skip to main content
Appenda
Sign inDownload

Formulas

A formula field computes its value from other fields on the same row. Use one to join a full name, band a score, or pull a domain out of a website.

Add a formula field

  1. Open a table.
  2. Click + on the right edge of the grid header row and pick Formula.
  3. Name the field and write the expression in the sidebar. The preview shows the result on the first 12 rows of the view you're on before you save.
  4. Click Create field.

To change it later, open the field header menu and pick Edit formula.

Write an expression

Refer to a field by its name in braces. Start typing { and pick the field from the list.

{First name} & " " & {Last name}

Field names are only how you write and read the formula. If you rename First name, the formula keeps working and shows the new name.

PieceExampleNotes
Field{Company}The field's value on this row
Text"at"In double quotes
Number100, 2.5
True or falsetrue, false
Join text{Job title} & " at " & {Company}& joins the shown text of both sides. An empty field joins as nothing
Math{Amount} * 1.2+, -, *, /
Compare{Score} >= 80==, !=, >, <, >=, <=. Dates compare with dates and with text like "2026-07-01"

A blank field never counts as 0. {Amount} * 2 is blank when Amount is empty, and a dashboard sum skips it.

Functions

Function names are not case sensitive. Optional arguments are marked with ?.

Logic

FunctionWhat it does
IF(condition, then, else)then when the condition is true, otherwise else
AND(a, b, ...), OR(a, b, ...), NOT(a)Combine conditions
SWITCH(value, match, result, ..., default?)The result for the first match
ISBLANK(value)True when the value is empty, including an empty multi-select. ISEMPTY and ISNULL do the same
ISERROR(expression)True when the expression cannot be computed
BLANK()An empty value
COALESCE(value, fallback, ...)The first value that is not empty
FIRST_NONBLANK(step, step, ...)The first step that is not blank (see Stacked formula)

Text

FunctionWhat it does
CONCAT(a, b, ...)Joins values, like &
LOWER(text), UPPER(text), TRIM(text)Change case, remove outer spaces
LEN(text)Number of characters
CONTAINS(text, search), STARTS_WITH(text, prefix)True or false. On a multi-select, CONTAINS({Tags}, "vip") is true when one of the options is vip
LEFT(text, count), RIGHT(text, count), MID(text, start, count)Part of the text
FIND(needle, text, start?), SEARCH(needle, text, start?)Position of the needle. SEARCH ignores case
SUBSTITUTE(text, old, new)Replaces every old with new
REGEX_MATCH(text, "pattern")True when the pattern matches
REGEX_EXTRACT(text, "pattern")The first match
REGEX_REPLACE(text, "pattern", replacement)Replaces every match

Numbers

FunctionWhat it does
ROUND(number, digits?), ROUNDUP(...), ROUNDDOWN(...)Round to a number of digits
ABS, CEILING, FLOOR, INT, SQRTSingle-number math
MIN, MAX, SUM, AVERAGEAcross several values on the row
MOD(number, divisor), POWER(number, exponent), LOG(number, base?)Remainder, power, logarithm

Dates

Units are "year", "month", "week", "day", "hour", and "minute". Dates are computed in UTC.

FunctionWhat it does
TODAY(), NOW()Today's date, or the current date and time
DATEADD(date, count, "unit")A date moved forward (or back, with a negative count)
DATETIME_DIFF(later, earlier, "unit")Whole units between two dates
DATETIME_FORMAT(date, "us")A date as text: "iso", "us", "european", or "friendly"
YEAR(date), MONTH(date), DAY(date)Part of a date
IS_BEFORE(date, other), IS_AFTER(date, other)True or false

Clean up

Each returns a cleaned copy and leaves the original field as it is. A result with nothing left is blank.

FunctionWhat it does
CLEAN_TEXT(text, remove_emoji?)Trims, collapses spaces, and removes invisible characters. With true, removes emoji and symbols too
COMPANY_NAME(text)"Acme, Inc." becomes "Acme": no leading "The", legal suffixes, or trailing punctuation
PERSON_NAME(text)"dr. jane doe, MBA (she/her)" becomes "Jane Doe"
FIRST_NAME(text), LAST_NAME(text)The first or last name of PERSON_NAME
DOMAIN(url_or_email)"https://www.acme.co.uk/about" and "[email protected]" both become "acme.co.uk"
LINKEDIN_URL(url)One form for a profile or company link: https://www.linkedin.com/in/jane-doe
IS_FREE_EMAIL(email), IS_ROLE_EMAIL(email)True for a free mailbox like Gmail, or a shared inbox like info@
COUNTRY(text), US_STATE(text)A two-letter code: "Deutschland" is "DE", "california" is "CA"
TITLE_SENIORITY(title)Founder, C-Level, VP, Head, Director, Manager, or IC
TITLE_DEPARTMENT(title)Sales, Marketing, Customer Success, Product, Design, Data, Engineering, IT, Finance, HR, Legal, Operations, or Executive

JSON

JSON_LOOKUP({Payload}, "/company/name") reads one value out of a JSON field.

Formulas you can't filter or chart

Most formulas work everywhere a field does: in the grid, filters, sorts, and dashboards. A formula that uses any of these functions shows in the grid but can't be filtered or charted:

MOD, POWER, SQRT, LOG, ROUNDUP, ROUNDDOWN, SWITCH, BLANK, ISERROR, JSON_LOOKUP, SUBSTITUTE, FIND, SEARCH, LEFT, RIGHT, MID, REGEX_MATCH, REGEX_EXTRACT, REGEX_REPLACE, TODAY, NOW, DATEADD, DATETIME_DIFF, DATETIME_FORMAT, YEAR, MONTH, DAY, IS_BEFORE, IS_AFTER, CLEAN_TEXT, COMPANY_NAME, PERSON_NAME, FIRST_NAME, LAST_NAME, DOMAIN, LINKEDIN_URL, IS_FREE_EMAIL, IS_ROLE_EMAIL, COUNTRY, US_STATE, TITLE_SENIORITY, and TITLE_DEPARTMENT.

A filter or dashboard block on such a formula says it is not supported rather than showing a wrong answer. To filter on the result anyway, change the formula to use functions from the other rows of the tables above, for example CONTAINS instead of REGEX_MATCH for a plain word.

Stacked formula

A Stacked formula tries a list of steps in order and keeps the first one that is not blank. Use it for a waterfall like "work email, else personal email, else the email found by enrichment".

  1. Click + on the grid header and pick Stacked formula.
  2. Add each step. A step is any expression, often just a field like {Work email}.
  3. Move steps up or down to set the priority. The top step wins when it has a value. Use Remove step to drop one.
  4. Click Create field.

A Stacked formula holds up to 8 steps. An empty cell or empty text counts as blank, so the next step is tried. It is a formula like any other, written as FIRST_NONBLANK({Work email}, {Personal email}, {Found email}).

Tips

  • Use the preview to check a formula on real rows before you save.
  • Keep long formulas readable by building them in steps across several formula fields.
  • A formula field can't be edited cell by cell. Change the expression instead.

FAQs

Do I write field names or field IDs?
Field names, in braces, like {Company}. Appenda keeps the link to the field, so renaming it never breaks the formula.
Why is my formula blank on some rows?
A blank input makes math and most functions blank too, so an empty Amount never turns into 0. Wrap the field in COALESCE to give it a fallback.
Why can't I filter on my formula?
It uses a function from the list in this page's "Formulas you can't filter or chart" section. The grid still shows the value. Filters and dashboards refuse it so they never show a different answer from the grid.