Liquid syntax is easy to learn and incredibly powerful. It revolves around three core concepts that work together to bring your workflows to life.
1

Objects: Outputting Data

Objects are the way you print or use data from previous steps. They are always surrounded by double curly braces {{ ... }}.

Accessing Data

You access data using “dot notation”. Let’s say a previous step with the ID node_1 produced an output like this: {"user": {"name": "Alice", "id": 123}, "products": ["apple", "orange"]}.
Hello, {{ node_1.user.name }}!

Accessing Array Elements

To access an item in an array (a list), you can use square brackets [] with the item’s index (starting from 0).
First product is: {{ node_1.products[0] }}
If you try to access a variable that doesn’t exist, Liquid will simply output nothing. It will not cause your workflow to fail.
2

Tags: Adding Logic

Tags are for control flow and logic. They are surrounded by curly braces and percent signs {% ... %}. Tags themselves do not output any text; they control what text gets outputted.For example, you can use an if tag to conditionally show a message:
{% if node_1.user.name == "Alice" %}
  Welcome, Alice!
{% endif %}
We cover all the powerful logic tags like if, for, and case in detail on the Logic and Control Flow Tags page.
3

Filters: Modifying Data

Filters allow you to transform the output of an object. They are placed within the object’s {{ ... }} and are separated from the variable by a pipe character |.

Basic Filter

Here, we use the upcase filter to capitalize a name:
Hello, {{ node_1.user.name | upcase }}!

Chaining Filters

You can apply multiple filters in a sequence. They are applied from left to right.
{{ "welcome to the jungle" | capitalize | truncate: 15 }}
Filters can take arguments, like 15 in the truncate example above. Explore all the possibilities on the Working with Filters page.