The four node families, and how to place any node in two seconds
You can sign in, find your way around the canvas, and edit a workflow somebody else built. Building your own starts here — and it starts with reading rather than clicking. The nodes panel holds several hundred entries, and the official docs sort every one of them into four families: Trigger, Core, App and Cluster. Learn to tell them apart and a stranger's workflow stops looking like fog. There are no hands-on steps in this part. It is the vocabulary the next parts assume you already have.
Nobody memorizes the panel. You learn where things live.
You met the nodes panel earlier in this series: press + on an empty spot on the canvas, or click Add first step in the right-hand panel of a new workflow, and a list slides in from the right. What is inside it is frightening the first time.
- 400+ official nodes — Slack, Gmail, Notion, Airtable, HubSpot, Stripe, GitHub and the rest.
- 30+ Core nodes — IF, Switch, Merge, Edit Fields, Code, Wait, HTTP Request.
- A whole separate row of Trigger nodes — Schedule, Webhook, and a Trigger version bundled with nearly every SaaS.
- The entire AI and LangChain set — AI Agent, Chat Model, Memory, Vector Store.
You do not have to memorize those names. What you need is narrower: see a node and know within two seconds which family it belongs to and roughly what it does. That is also how you know which part of the panel to head for when you build your own.
Walk into a hardware shop you have never used and you do not know where anything is — but you are not lost either. Fixings are on one aisle, electrical on another, and the person behind the counter finds the rest. Nobody memorizes the stock list. You learn the aisles once and then ask for what you need by name.
The conclusion first, one line each. These match the four folders under the official docs.n8n.io/integrations/builtin/ tree:
Trigger — a functional category
The start of a workflow. It decides when the workflow runs. There is no input dot on its left side, because nothing comes before it.
Core — core-nodes/
n8n's built-in flow, data and general-purpose tools: IF, Merge, Set, Code, HTTP Request, Wait, Schedule Trigger and the rest.
App — app-nodes/
One node per outside service. Slack, Gmail, Notion. The docs also call these Actions, and so does the panel.
Cluster — cluster-nodes/
Group nodes used only by the AI and LangChain set: one root node such as AI Agent, carrying several sub-nodes underneath it.
Now the thing that confuses almost everybody on first reading. Trigger is a functional role. Core, App and Cluster are the docs' file categories. The two dimensions cross, which is why the pages for Schedule Trigger, Manual Trigger, Chat Trigger and Webhook live under core-nodes/: they are both Trigger by function and Core by category. This is not a mutually exclusive pick-one-of-four.
flowchart LR
subgraph F["Three file categories in the docs"]
direction LR
C1["core-nodes/
built-in flow, data
and utility tools"]
C2["app-nodes/
one node per
outside service"]
C3["cluster-nodes/
an AI root node
plus its sub-nodes"]
end
T["Trigger
a functional role:
it decides when a workflow runs"] -.->|"Schedule Trigger, Manual Trigger,
Chat Trigger and Webhook are filed here"| C1
The node that decides when a workflow runs
Every workflow needs a starting point, and that starting point is a Trigger node. The first groups you see when the nodes panel opens are usually On app event, On a schedule and When called by another workflow. All of them are Triggers.
Trigger nodes have one visual giveaway: there is no input dot on the left. It is the starting point, so there is nothing upstream to connect it to. On the right there is one output dot that sends data downstream.
A doorbell and a kettle. The doorbell does nothing except listen, and when it hears something it wakes the house. The kettle never wakes anybody — it just boils, and only once somebody switches it on. A Trigger is the doorbell. Everything downstream of it is the kettle.
| Trigger node | When it runs | Typical use |
|---|---|---|
| Manual Trigger | Only when you press Execute Workflow | Testing, building, and workflows a person clicks by hand |
| Schedule Trigger | Like cron: at the times you set — hourly, every day at 8:00, every Monday | Daily reports, weekly roundups, monthly closing |
| Webhook | When an outside system calls the URL | A submitted form, a LINE bot, a Home Assistant trigger, a third-party callback |
| App Event (Gmail Trigger, Slack Trigger and so on) | When something happens in the SaaS you picked | Forward a VIP email when it lands; get a notification when a keyword is mentioned in Slack |
| Chat Trigger | When a user types in the chat interface | Used when AI Agent is building a support bot (Part 16) |
| Execute Workflow Trigger | When another workflow calls it | A sub-workflow pulled out for reuse (Part 14) |
Webhook for the form submission, a Schedule Trigger for a catch-up run every day at 8:00, and a Manual Trigger so you can run it by hand while testing. Any one of them sets the whole workflow going. Part 7 compares the three trigger families in detail.They are easy to find, too. The panel's first page defaults to Triggers, and starting a new workflow steers you straight to picking one. Without a Trigger there is no starting point, and the workflow cannot run at all.
One node per outside service, with every operation folded inside it
App nodes are the largest of the four families. The docs keep them under integrations/builtin/app-nodes/ and the panel labels them Actions in apps. What they share: each node maps to one outside service — a SaaS, a database, a cloud provider — and the node wraps every operation that service's API offers.
If you have used Zapier the idea is identical: there each app maps to an action, and in n8n each SaaS maps to one App node. “App node” is the docs' file name and “Action” is the panel's UI label — the same thing, so do not worry when this guide uses both.
One Action node usually holds many sub-operations. Take Slack:
Send Message — post a message to a channel or a personUpdate Message — edit a message you already sentDelete Message — delete a messageGet Channel — fetch a channel's detailsInvite User — invite someone into a channelYou do not have to memorize those. Once the Slack node is on the canvas, the Operation dropdown on the right lists every option.
The docs group Action nodes into roughly these categories, each with its place in the panel:
| Category | Common nodes | Typical scenario |
|---|---|---|
| Communication | Slack, Discord, Telegram, Email, LINE | Notifications, broadcasts, chatbots |
| Data & Storage | Google Sheets, Airtable, Notion, Postgres, Redis, MongoDB | Write to a sheet, query a database, build a data pipeline |
| Productivity | Google Calendar, Todoist, Trello, Asana, ClickUp | Create events, open tasks, track progress |
| Marketing | HubSpot, Mailchimp, SendGrid, ActiveCampaign | Add leads, send newsletters, follow customer activity |
| AI (the App version) | OpenAI, Anthropic, Google Gemini, Perplexity — filed under app-nodes/n8n-nodes-langchain.* | A single LLM call to write copy, summarize or translate. Different nodes from the Cluster-version AI Agent in the next section |
| Developer | GitHub, GitLab, Jira, Bitbucket, Docker Hub | Open issues, create PRs, send CI notifications |
| Files & Cloud | Google Drive, Dropbox, OneDrive, AWS S3 | Upload attachments, back things up, move files between clouds |
The visual giveaway for App nodes: a dot on each side — the left one takes data from upstream, the right one sends it downstream — and an icon that is usually the service's own logo. Slack's purple hash, Gmail's red envelope, Notion's black-and-white page.
Slack, which calls the Slack API itself — and the Trigger version, Slack Trigger, which sits and listens for a Slack webhook. The names look alike and the jobs are opposite, so pick carefully.The fittings that join everything else together
Core nodes are n8n's own built-in set, filed under core-nodes/. There are fewer of them than App nodes, but every one matters. Their job is managing the data flow and control flow inside a workflow, plus general-purpose tools that are tied to no SaaS.
Under a sink there are two kinds of part. There is the tap and the washing machine — the things that do something you actually asked for. And there are the elbows, tees and stopcocks that carry water between them. Nobody buys a plumbing tee because they want a tee. You buy it because the pipe has to turn a corner. Core nodes are the tees.
One warning about naming first. The category names in the panel have changed a few times: they used to be Core Nodes, then split into Flow, Data Transformation, Files and Helpers. The exact wording varies a little with your n8n version, so recognize the grouping rather than the word, and search rather than browse when you cannot tell them apart.
core-nodes/ in the docs tree, because they are built into n8n and tied to no SaaS. One node can carry both labels: Trigger by role, Core by category.| Core node | What it does | Covered in |
|---|---|---|
| IF | Conditional branching — true takes one path, false takes the other | Part 11 |
| Switch | Several branches — different paths depending on a field's value | Part 11 |
| Merge | Bring several streams of data back into one (append / combine / choose) | Part 11 |
| Split In Batches | Handle a big pile of items in batches so you do not blow through an API rate limit | Part 11 |
| Item Lists | Array operations — deduplicate, sort, aggregate, split out | Part 11 |
| Edit Fields (Set) | Add fields, rename fields, reorder them, flatten them | Part 13 |
| Code | A few lines of JavaScript or Python to fill the gaps the ready-made nodes leave. The old name was Function, folded into Code in n8n 1.0, and the docs' Function page is now a 404 | Part 15 |
| Wait | Pause for a while — wait 5 seconds, wait until 9:00 tomorrow, wait for a webhook | Part 12 |
| Execute Workflow | Call another workflow, a sub-workflow | Part 14 |
| HTTP Request | Call any REST API — the skeleton key for when there is no official node | Part 9 |
The visual giveaway for Core nodes: a dot on each side, and an icon that is abstract geometry rather than a brand mark — a forking arrow for IF, converging arrows for Merge, a pen or field icon for Edit Fields, angle brackets </> for Code. IF and Switch branch, so they carry several output dots on the right. A node with no SaaS logo is almost certainly Core.
One root node with a stack of sub-nodes underneath
The docs file Cluster nodes under integrations/builtin/cluster-nodes/ as the fourth family, and they are the biggest architectural change in the n8n ecosystem since 2024. A cluster is not one node but a group of nodes. Every cluster has one root node — the main node, for example AI Agent — with several sub-nodes attached below it to supply capabilities.
Think of somebody working a support desk. On their own they can talk to you and nothing more. Give them a phone line and they can reach the engineer. Give them a notepad and they remember what you said ten minutes ago. Give them the product manual and they can look things up. The person is the root node; the phone, the notepad and the manual are sub-nodes. Take the phone away and the desk cannot do its job at all.
| Where | Node type | Typical example | What it does |
|---|---|---|---|
| Root (one of them) | AI Agent, Basic LLM Chain, QA Chain, Summarization Chain, Text Classifier, Information Extractor, Sentiment Analysis | AI Agent |
The cluster's main logic. The normal data flow comes in on the left and leaves on the right |
| Sub-node (several) | Chat Model | OpenAI Chat Model, Anthropic Chat Model, Google Gemini Chat Model, Groq, Ollama | Attaches to the ai_languageModel connector dot on the root's underside and supplies the reasoning engine |
| Sub-node | Memory | Simple Memory, Postgres Chat Memory, Redis Chat Memory, Zep | Attaches to the ai_memory dot so the agent remembers the previous turn of the conversation |
| Sub-node | Tool | Calculator, Wikipedia, SerpAPI, Code Tool, HTTP Request Tool, or any App node attached as a Tool | Attaches to the ai_tool dot. The agent decides when to call which tool |
| Sub-node | Vector Store / Retriever / Embeddings / Output Parser | PGVector, Pinecone, Simple Vector Store, OpenAI Embeddings, Structured Output Parser | Attaches to the matching ai_* dot to do retrieval, embeddings and structured output |
flowchart TD IN["Data in
from upstream"] --> A["AI Agent
the cluster root"] subgraph S["Sub-nodes"] direction LR CM["OpenAI
Chat Model"] MEM["Simple
Memory"] TL["Wikipedia
Tool"] VS["Simple
Vector Store"] end A -->|"ai_languageModel"| CM A -->|"ai_memory"| MEM A -->|"ai_tool"| TL A -->|"matching ai_* dot"| VS A --> OUT["Data out
to the next node"] VS ~~~ OUT
Cluster nodes are easy to spot. The root node grows a row of square, downward-facing connector dots along its underside — not the left-and-right round dots of Trigger, App and Core — each labeled Chat Model, Memory, Tool or Vector Store. Attach the matching sub-node from below and n8n treats the cluster as complete and ready to run.
app-nodes/, one call at a time) and Cluster-version AI (AI Agent plus a stack of ai_* sub-nodes, filed under cluster-nodes/). The panel does put them under an AI or Advanced AI label so they are easy to browse, but underneath there are only those two file categories.Part 16 takes apart the full arrangement and the ai_* connector dots. For now: downward dots on the underside means a Cluster root, and whatever snaps up under them is a sub-node.
Four things to look at, in this order
With the four families in hand, the skill that pays off is classifying a node at a glance. Check these four features and you have the answer in about a second.
- Look underneath for
ai_*dots. Square downward dots labeled Chat Model, Memory, Tool or Vector Store mean a Cluster root. The other way round: only one upward dot on top, waiting to be picked up by a root, means a sub-node. - Look on the left for an input dot. No dot on the left, only a line leaving on the right, means it is definitely a Trigger. A node sitting alone at the far left of the canvas with nothing wired in front of it is a Trigger. The name usually carries “Trigger” or “On…” —
Slack Trigger,Schedule Trigger,Webhook,On form submission. - Look at the icon. A dot on each side plus a service logo is almost certainly an App node. A dot on each side plus abstract geometry — a fork, a confluence, a gear, angle brackets — is almost certainly a Core node.
- Look at the panel's own categories. The panel is already sorted for you: Triggers, Actions in apps grouped by service, Core with its Flow / Data Transformation / Files / Helpers sub-areas, and AI or Advanced AI for Cluster nodes. When you cannot tell, go back and see which label it sits under.
flowchart TD
A["A node you do not recognize"] --> B{"Square dots along its underside,
labeled Chat Model, Memory or Tool?"}
B -->|"yes"| C["Cluster root"]
B -->|"no"| D{"One dot on top only,
waiting to be picked up?"}
D -->|"yes"| E["Cluster sub-node"]
D -->|"no"| F{"Is there a dot
on the left?"}
F -->|"no dot on the left"| G["Trigger"]
F -->|"a dot on each side"| H{"What is the icon?"}
H -->|"a service logo"| I["App node"]
H -->|"abstract geometry"| J["Core node"]
The shapes real workflows come in
How do the four families combine in practice? From shortest to most complex there are roughly four rhythms, and almost everything you will be shown is one of them.
Shortest: a Trigger and one App node
“Post the same message to Slack every morning at 8:00” — Schedule Trigger wired to Slack (Send Message), done. Two nodes and one line. Good for nudges and reminders.
Common: read, filter, write, notify
The classic five-node workflow, drawn out below. About 80% of a company's automation looks like this.
AI: a Chat Trigger into a cluster
“A customer types in the web chat and the AI support agent answers” — Chat Trigger into AI Agent, with OpenAI Chat Model for reasoning, Simple Memory for the conversation, Wikipedia Tool for looking things up and HTTP Request Tool for an internal API attached underneath. On screen it is one node sprouting four tendrils.
Complex: branches, parallel work, a sub-workflow
Three Triggers, routing by country, parallel App nodes sending the welcome email and adding to the CRM and opening a Slack channel, a Merge back into the main line, then a call out to an alert sub-workflow — and on failure it retries 3 times automatically, and if it still fails it tells IT. You only meet 15-plus-node workflows in the later parts.
The common rhythm in full: “Every morning, fetch the support tickets, keep only the urgent ones, write them into Notion and tell the sales manager.”
flowchart LR A["Schedule Trigger
every morning"] --> B["HTTP Request
read the ticket API"] B --> C["IF
priority == urgent"] C --> D["Notion
create a page"] D --> E["Slack
notify"]
The same pattern shows through all four. Usually one Trigger, sometimes several. App nodes doing the heavy lifting, over 60% of the node count. Core nodes as the pipe fittings that join them up — IF decides which way to go, Edit Fields reshapes the data, Merge brings the lines back together. And Cluster as the AI-only shape of one node with several tendrils.
Type the keyword, and know the ways it comes up empty
Knowing the categories is what lets you read a workflow. To find one, though, you will never scroll: typing a keyword beats everything else. Four things to try, in this order.
slack and it filters down to the Slack-related nodes — both Slack and Slack Trigger show up. That finds 99% of the integrations you use.if, set, code, wait, http. Type if and you get IF and Switch. Type set and you get Edit Fields (Set). Type code and you get the Code node. Type wait and you get Wait. Type http and you get HTTP Request.HTTP Request node (Part 9) and fill in the URL, method, header and body from its API docs. This is n8n's skeleton key: if they have an API, you can reach it.And these are the situations people hit most often when they first work with the panel.
The nodes panel will not open
There are too many categories to find anything
I typed the node I want and nothing came up
google sheets finds nothing, try sheets. It may be a community node, which an admin has to install as a community package on the back end. Or the service has no official node at all, in which case use HTTP Request (Part 9) against its API.The node was renamed and I cannot find it
Function node was replaced entirely by Code in v1 — the docs' Function page is now a 404, and older workflows are migrated automatically or marked legacy on import. And Set is now called Edit Fields (Set). When a name from an older tutorial finds nothing, type the new name.I picked a SaaS App node but there is no input dot on the left
Slack Trigger instead of Slack. Delete it and pick the plain App version. Searching slack brings up both nodes, so choose the one without “Trigger” in the name.I added a Core node and do not know where to wire it
I added AI Agent, pressed Execute, and got “no language model”
The questions people ask after their first hour
How many kinds of node does n8n have in total?
Which ones do people actually use most?
Schedule Trigger (Trigger and Core — runs on a schedule), Webhook (Trigger and Core — outside systems call in), Slack (App — notifications), Gmail (App — sending mail), Google Sheets (App — keeping records), HTTP Request (Core — calling any REST API), IF (Core — conditional branching) and Edit Fields (Set) (Core — reshaping data). Get comfortable with those eight and you can hold your own at work.Which family does the AI Agent node belong to?
integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent. AI Agent is the root, and it only moves once sub-nodes — Chat Model, Memory, Tool, Vector Store — are attached below it. The panel usually files it under an AI or Advanced AI label for easy browsing, but the underlying file category is cluster. Part 16 takes the full arrangement apart. While we are here: the OpenAI, Anthropic and Google Gemini nodes that make a single LLM call are not clusters. They are App nodes, filed under app-nodes/n8n-nodes-langchain.*, on a different layer from AI Agent.Do new node versions replace the old ones?
sheets in the panel brings up both, so pick the newest.What is the difference between a Trigger node and an App node?
Slack Trigger listens for Slack events, and Slack calls Slack.Do Core nodes talk to SaaS services?
HTTP Request calls any REST API, SSE Trigger and Webhook listen for something coming in, and Email (Send) and FTP speak general protocols. None of these count as App nodes, because an App node is defined as one node per SaaS. These are general networking tools, so they belong to Core.Is the Function node still around?
Code node in n8n v1 (2023-07) — same job, but with Python support — and the docs page at core-nodes/n8n-nodes-base.function/ is now a 404. Older workflows imported into v1 and later are migrated automatically or marked legacy. For anything new, always use Code.Where do I look up node details in the docs?
Where to go from here
You can read the panel. Time to use three of the four families.
Part 6 builds your first workflow from scratch: Schedule Trigger for every day at 8:00, into Google Calendar to fetch today's events, into Slack to post a message. That is the shortest rhythm from this part — one Trigger plus two App nodes — so you meet the first three families in your own hands. Cluster waits until Part 16.
Part 5 of the Woow n8n Onboarding Guide series on the Apporo blog.
Adapted from the Woow n8n Onboarding Guide, produced by WoowTech and released under CC BY 4.0. This adaptation is published by Apporo under the same licence.
Light · Air · Water · Control · apporo