Fifteen nodes cover 90% of real workflows. Learn them cold — inputs, outputs, quirks — and the 400+ integration nodes become a menu, not a mystery. This chapter is a reference you will come back to. Bookmark it.
1. HTTP Request
The universal node. If an API exists, this node can call it.
{
"method": "POST",
"url": "https://api.example.com/v1/leads",
"authentication": "genericCredentialType",
"sendHeaders": true,
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ { name: $json.name, email: $json.email } }}"
}2. Webhook
Two URLs: a Test URL that only fires while the editor is open, and a Production URL live once the workflow is Active.
3. Set
Reshape items. Add fields, rename fields, drop everything else.
full_name = ={{ $json.first + ' ' + $json.last }}
email_low = ={{ $json.email.toLowerCase() }}
source = "webhook"4. Code (JavaScript)
const out = [];
for (const item of items) {
out.push({ json: { id: item.json.id, total: item.json.qty * item.json.price } });
}
return out;5. Function vs Code Node
Older workflows use Function. The modern Code node replaces it. Prefer Code.
6. Merge
- Append — concat arrays.
- Combine by matching fields — SQL-style join on a key.
- Combine by position — zip two lists by index.
- Choose Branch — take whichever side arrives first.
7. Split In Batches
Chunks big item lists. Essential for rate limits.
8. Switch
Multi-way IF. Route on {{ $json.type }} to different branches.
9. IF
{{ $json.plan }} equal "pro"
{{ $json.mrr }} largerEqual 5010. Wait
Pause the workflow — for N seconds, until a date, or until a webhook is called.
11. Loop Over Items
Modern alias for Split In Batches with size 1.
12. Execute Workflow
Call another workflow like a function.
13. Respond to Webhook
{{ { ok: true, id: $json.id, ts: $now.toISO() } }}14. Sticky Notes
Yellow rectangles on the canvas. Annotate why a node exists.
15. Expressions
Any field prefixed with = is evaluated as an expression.
={{ $json.customer.name }}
={{ $node["HTTP Request"].json.token }}
={{ $json.mrr > 100 ? "vip" : "std" }}16. Built-in Variables
- $json — current item's JSON.
- $input.all(), $input.first() — array helpers.
- $node["Name"].json — reach into any upstream node.
- $now, $today — Luxon DateTime objects.
- $env.NAME — process env variable.
17. String / Date / Math
={{ $json.email.toLowerCase().trim() }}
={{ $now.plus({ days: 7 }).toFormat('yyyy-LL-dd') }}
={{ Math.round($json.total * 1.2 * 100) / 100 }}18. Real Examples
- Slugify a title.
- Currency format with Intl.NumberFormat.
- Guard against nulls.