Most automations need a little data work between the trigger and the action: do some maths, pick between two messages, pull a value out of some text, or reshape a list. Noria lets you do all of this without code — with expressions in any field, and a handful of dedicated data nodes.
Expressions in any field
Anything you put inside {{ }} is a full expression, not just a single variable. That makes any text field a mini formula bar.
Arithmetic — combine numbers from earlier nodes:
{{ price * qty }}
{{ action_2.response.total / 100 }}
Comparisons and choices — pick an outcome with a ternary (condition ? then : else):
{{ score > 5 ? "win" : "lose" }}
{{ member.is_booster ? "💎 VIP" : "Member" }}
Membership — check whether a value is in a list or a string:
{{ "mod" in roles }}
{{ "@everyone" in message.content }}
Functions — call helpers right inside the braces:
{{ length(roles) }} number of items
{{ includes(roles, "mod") }} true / false
{{ round(price * 1.2) }} rounded number
{{ min(a, b) }} {{ max(a, b) }}
You can still pipe the text and date helpers you already know with | (for example {{ user.name | capitalize }}), and combine them freely with expressions. The field autocompletes available paths and underlines typos before you ship.
The data nodes
When a single expression isn't enough, reach for a data node. You'll find these grouped under Data in the Add-a-node panel.
List — reshape a list
Point the List node at a list and choose an operation:
- Map — turn each item into something else.
- Filter — keep only the items that match a condition.
- Find — return the first item that matches.
- Sort — order items by a value.
- Unique — drop duplicates.
- Group by — bucket items by a key.
- Reduce — fold the list down to one value.
- Aggregate — sum, average, min, max, or count in one step.
- Slice — take a range of items.
- Join — combine items into a single string.
Per-item expressions reference the current element as item and its position as index. In Reduce, acc is the running result.
Filter → item.points > 100
Map → item.name
Aggregate (sum) → item.amount
Reduce → acc + item.amount
Compute — build one or more values
The Compute node evaluates expressions and hands the results to the next node. Use it to assemble exactly the shape you need:
- An object —
{ name: user.name, level: round(xp / 100) } - An array —
[first.id, second.id] - A single value —
price * qty * 1.2
One Compute node can hold several Name | Formula rows — each formula is evaluated independently and becomes its own {{name}} for later nodes. Need a total, a label, and a discount computed from the same data? That's one Compute node with three rows, not three chained nodes.
Pick a value from data — extract fields from an object
When a trigger or an HTTP response hands you a whole object (a webhook body, an API payload), the Pick a value from data node pulls out exactly the fields you need. Point it at the source object, then add as many Name | Path rows as you want — each path (like user.profile.avatar_url or items.0.title) becomes its own {{name}}, with an optional fallback when the field is missing. One node covers all the values you need from that object.
Nested objects and arrays without typing JSON
Fields that expect JSON — Merge Objects' two objects, a manual trigger's test payload, or a structured HTTP request body — now have a visual tree builder: add a row, name the key, pick its type (text, number, boolean, object, array…), and nest as deep as you need. "Edit as JSON" is always one click away if you'd rather type it, and any existing raw-JSON config keeps working unchanged.
Regex — work with text patterns
The Regex node matches text against a regular expression in three modes:
- Extract — pull out values using capture groups (an order number, a code, a mention). One node can hold several Name | Pattern rows, each matched against the same input and published as its own
{{name}}. - Replace — swap matching text for something else (redact, reformat, clean up).
- Match — test whether the text matches, so you can branch on it.
Date — handle dates and durations
The Date node covers the common date tasks:
- Now — the current date and time.
- Add / subtract — shift a date by a duration (in 7 days, 1 hour ago).
- Difference — measure the gap between two dates.
- Format — render a date in a readable form.
- Compare — check whether one date is before or after another.
Complex data without code
Between expressions and the List, Compute, Regex and Date nodes, data work — maths, conditions, reshaping lists, extracting text, and handling dates — stays point-and-click from start to finish.
Next: see how it all fits together in triggers and actions, then test and debug your workflow.