n8n cheat sheet

The core nodes and words you'll meet in every recipe. Each node name links to its official doc.

Core nodes

Manual TriggerRuns the workflow when you click Test. Good for trying things.
Schedule TriggerRuns every X minutes, or by cron (e.g. weekdays 09:00).
WebhookGives you a URL. Any app that POSTs to it starts the workflow.
n8n Form TriggerA hosted form; each submission starts a run.
HTTP RequestCalls any API, even when no dedicated node exists.
Edit Fields (Set)Add, rename or keep only certain fields.
If / SwitchSend items down different paths by a condition.
FilterDrop items that don't match a condition.
MergeJoin data from two branches.
CodeJavaScript or Python for anything the other nodes can't do.
WaitPause for a time or until a webhook call (e.g. a follow-up in 2 days).
Loop Over ItemsProcess items in batches (for rate-limited APIs).
Respond to WebhookChoose exactly what the webhook caller gets back.
Error TriggerStarts an alert workflow when another workflow fails.

Glossary

WorkflowA set of connected nodes that does one job.
NodeOne step: a trigger, an app action or a logic block.
TriggerThe first node; decides when the workflow runs.
ItemOne record of data (JSON). Nodes run once per item by default.
ExecutionOne run of a workflow. n8n Cloud prices by executions.
ExpressionDynamic value in {{ }}, e.g. {{ $json.email }}.
$jsonThe current item's data from the previous node.
$('Node').item.jsonData from a specific earlier node.
CredentialSaved login or API key for an app, kept out of the workflow file.
ActiveA switched-on workflow that runs from its trigger by itself.
Test vs Production URLWebhook URLs: Test only while listening in the editor; Production when Active.
Pinned dataSaved sample output on a node, so you can build without re-calling an API.
Sub-workflowA workflow called by another with Execute Workflow.

Handy expressions

{{ $json.email }}                      current item field
{{ $('Normalize lead').item.json.phone }}  field from a named node
{{ $now.toISO() }}                    current time
{{ $now.plus({days:1}).toFormat('yyyy-MM-dd') }}  tomorrow

More in the expressions docs. New here? n8n from zero →