Introduction
Nodes are the building blocks of every n8n workflow. Each node represents a single action: fetching data from an API, sending an email, transforming a value, or triggering a flow based on a schedule. When you connect nodes together, you get an automated pipeline that replaces manual work.
This lesson walks you through the node library, shows you how to configure real integrations, and explains how n8n handles credentials so your API keys and passwords stay secure.
The Node Library
n8n ships with over 400 built-in nodes covering common services like Slack, Google Sheets, GitHub, PostgreSQL, HTTP APIs, and more. You access them by clicking the + button inside the canvas, which opens a searchable panel.
Nodes fall into two broad categories. Trigger nodes start a workflow — they listen for an event (a webhook call, a cron schedule, a new row in a database). Action nodes do work inside the workflow — they read, write, transform, or send data.
A few nodes you will use constantly:
The HTTP Request node calls any REST API that does not have a dedicated node. It handles GET, POST, PUT, DELETE, and lets you set headers, query params, and a request body.
The Code node runs JavaScript or Python inline, useful when built-in transformations are not enough.
The Set node reshapes the data object passing through the workflow — add a field, rename a key, remove noise you do not need downstream.
Configuring a Real Integration
Let us wire up a practical example: every time a form is submitted, post a message to a Slack channel with the submitter's name and email.
First, add a Webhook trigger node. Set the HTTP method to POST and copy the generated URL — this is the endpoint your form will call. Switch the workflow to active so n8n starts listening.
Next, add a Slack node after the webhook. Choose the action "Send a Message". At this point n8n will ask you to select or create a Slack credential — we will cover that in the next section.
Once the credential is set, configure the node like this:
The double-curly syntax is n8n's expression language. It reads data from the incoming JSON body at runtime. If your webhook receives a payload with a name field and an email field, those values are substituted automatically.
Send a test POST request to verify the full flow:
If everything is connected correctly, the Slack channel receives the message within seconds.
Credentials Management
n8n stores credentials separately from workflows. This design means you create a credential once, reuse it across many workflows, and never embed a raw API key inside a node configuration.
To add a credential, go to Settings > Credentials > Add Credential, or let n8n prompt you when you configure a node that needs authentication. You select the service, fill in the required fields (API key, OAuth tokens, username/password), and save. n8n encrypts the stored values using the encryption key set in your instance configuration.
For OAuth2 services like Google or Slack, n8n handles the authorization flow for you. You click "Connect", authenticate in the browser popup, and n8n stores the resulting access and refresh tokens automatically.
One important practice: use separate credentials per environment. Your staging workflow should use a test Slack workspace or a sandbox API key, not the production one. You can duplicate a credential and change only the secret value, leaving the name clearly labeled ("Slack - Production" vs "Slack - Staging").
Credentials are also scoped by owner in multi-user setups — a credential created under one user account is not visible to others unless explicitly shared. This prevents accidental exposure across teams.
Common Mistakes
Expression syntax errors are the most frequent issue. If a field reference like {{ $json.email }} returns undefined, check that the previous node is actually outputting that key. Use the "Input" panel on the right side of the canvas to inspect exactly what data is flowing into each node.
Another common mistake is forgetting to activate the workflow after saving. A webhook trigger does not listen while the workflow is inactive — the toggle at the top of the canvas must be on.
For HTTP Request nodes calling external APIs, watch for authentication mismatches. Some APIs expect the key in a header (Authorization: Bearer ...), others in a query parameter. Read the API docs and match the format exactly, then use the credential system to inject the value rather than hardcoding it in the URL.
Summary
The node library gives you a ready-made toolkit for connecting services without writing boilerplate integration code. Trigger nodes start workflows, action nodes do the work, and expressions wire data between them dynamically. Credentials are managed centrally, encrypted at rest, and reusable across workflows — keep them environment-specific and let n8n handle the OAuth dance for you. With these fundamentals in place you can build reliable, readable pipelines that connect real apps.
Lesson Checkpoint
Review what you learned and get feedback on your work.