All expressions begin with an "**@**" symbol and an open parenthesis, e.g. "**@(now()**" or "**@(time_from_parts()**" Once entered, "**@(**" will trigger a completion dialogue that lists and explains each function:

## Simple Syntax

This is used to embed single values, e.g.

`Hi @contact, you entered @results.age for age. Is this correct?`

An expression can also be a function call, e.g.

`Hello @(upper(contact.first_name))`

Function names are not case-sensitive so UPPER is equivalent to upper. We support a subset of the functions available in Excel and these are listed below.

## Advanced Syntax

This is used to build more complex expressions using similar syntax to Excel formulae, e.g.

`Hi, you are @(format_date(now() "YYYY") - results.year_born)years old`

Expressions can also include arithmetic with the add (+), subtract (-), multiply (*), divide (/) and exponent (^) operators:

`Result is @(1 + (2 - 3) * 4 / 5 ^ 6) units`

Note that the expression is enclosed in parentheses to tell us where it ends.

You can also join strings with the concatenate (join) operator (&):`Hello @("contact.first_name" & " " & "contact.last_name")`

Take a look at our full expression reference here.