Basic Syntax: How to Use Variables (@contact, @results) and Functions

Expressions let you insert dynamic values, run calculations, and apply logic inside messages, rules, and action fields. In this guide, you’ll learn the core @(...) syntax, how to reference variables like @contact and @results, and how to call supported functions safely while avoiding common syntax mistakes.

Quick setup checklist

Use this checklist to apply expression syntax correctly in messages, rules, and action fields.

  1. Open the expression helper
  2. Write the basic @(…) structure
  3. Insert simple values (@contact, @results)
  4. Call supported functions
  5. Use arithmetic and date logic
  6. Join strings safely
  7. Common issues
1
Open the expression helper

When you type @( in a message, rule, or action field, an autocomplete panel appears with available functions and examples.

Tip: Use the autocomplete dialog to reduce syntax errors and discover supported functions quickly.

[CAPTURE: Show the expression autocomplete dialog triggered after typing @( in a message or action field.]

2
Write the basic @(…) structure

All expressions follow the same structure:

  • Start with @
  • Are enclosed in parentheses ( ... )

Example:

@(now())

Important: The full expression must stay inside the parentheses so the system knows where it ends.
3
Insert simple values (@contact, @results)

Simple syntax is used to insert single values directly into text, such as the contact name or values collected earlier in the flow.

Example message:

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

  • @contact inserts the contact’s name
  • @results.age inserts a value collected earlier in the flow

[CAPTURE: Show a message node with simple expressions referencing contact and result values.]

4
Call supported functions

Expressions can call functions to transform values.

Example:

Hello @(upper(contact.first_name))

  • Retrieves the contact’s first name
  • Converts it to uppercase
Note: Function names are not case-sensitive (for example, upper, UPPER, and Upper behave the same).
Important: Only supported functions can be used. Unsupported Excel functions will result in an error.
5
Use arithmetic and date logic

You can build more complex expressions, similar to spreadsheet formulas.

Example:

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

Arithmetic operators supported:

  • Addition: +
  • Subtraction: -
  • Multiplication: *
  • Division: /
  • Exponent: ^

[CAPTURE: Show a message node using an advanced expression with a date function and arithmetic.]

6
Join strings safely

Use the concatenation operator & to join text values.

Example:

Hello @("contact.first_name" & " " & "contact.last_name")

Tip: Always include spaces explicitly when joining strings (for example, " ").

[CAPTURE: Show a message preview displaying concatenated contact fields.]

Common Issues

I get an error because the expression won’t evaluate

Cause: A missing closing parenthesis ), or the expression is not fully wrapped in @( ... ).

Fix: Confirm the expression starts with @, includes (, and ends with a matching ).

The function I typed doesn’t work

Cause: The function is not supported by the platform (even if it exists in Excel).

Fix: Use the autocomplete panel after typing @( to select supported functions and confirm expected parameters.

@results or @contact values are blank

Cause: The value has not been collected yet (for @results) or the contact field is empty.

Fix: Ensure the contact reaches the question/action that sets the result before referencing it, and confirm the contact field is populated.

My text comparison or string value breaks the expression

Cause: Missing quotation marks around string values that contain letters or multiple words.

Fix: Wrap text in quotes, for example: city = "san francisco".