Introduction
n8n (pronounced "n-eight-n" or simply "nodemation") is an open-source workflow automation tool that lets you connect different services and APIs together using a visual, node-based editor. Instead of writing glue code manually, you drag nodes onto a canvas, configure them, and draw connections to define how data flows from one step to the next.
n8n stands apart from tools like Zapier or Make in one big way: it is source-available and self-hostable. You can run it on your own server, which means your data never leaves your infrastructure and there are no per-task pricing tiers. The trade-off is that you are responsible for hosting and maintaining it, though n8n also offers a hosted cloud option if you prefer not to manage infrastructure.
Internally, every n8n workflow is fundamentally just JSON. The visual editor is a friendly layer on top of that JSON, which is why n8n is very friendly to developers who want to peek under the hood.
Navigating the Visual Editor
When you open n8n, the main areas you will interact with are:
- The canvas in the center, where you build your workflow by adding and connecting nodes. - The left sidebar with the node palette, organized into categories like trigger nodes, regular app/action nodes, and helper nodes (such as Code, IF, Set, Merge). - The top toolbar with options to save, run, activate, and share the workflow. - The right-side node panel that opens when you click a node, where you configure its parameters and credentials.
A workflow always starts with a trigger node — something that kicks off execution when an event happens (for example a webhook receiving an HTTP request, a schedule firing at a cron time, or a new row appearing in a database).
After either command, open http://localhost:5678 in your browser and you will see the editor.
Anatomy of a Node
Each node represents a single action: fetch data, transform data, call an API, branch on a condition, and so on. Most nodes have three tabs:
- Parameters: the inputs you configure (URL, query string, field mapping). - Settings: node-level options like retry behavior, error handling, and whether to continue on failure. - Documentation: a short reference pulled from the node's docs so you do not have to leave the canvas.
Data flows between nodes through the wire you draw. By default, this is the main output and the data shape produced is the same JSON object you would get if you called the underlying API directly. You can rename a node, add notes to it, and disable it without deleting it, which is very useful when debugging.
The snippet above is the JSON for a single Webhook trigger node exported from n8n. Notice how readable it is — the HTTP method, the path, and the node's position on the canvas are all plain JSON properties. This is what allows workflows to be version-controlled and programmatically generated.
Executions Panel and Debugging
Once your workflow is saved, click "Execute workflow" (or "Execute node" on a single node) to run it. n8n records every run in the Executions panel. Clicking on a past execution lets you inspect the input and output data of each node step by step, which is the fastest way to debug a broken workflow.
If a node fails, the execution is marked as "error" and the panel shows you which node threw, what the error message was, and the data that node received. A common early mistake is assuming data exists at a node when it does not — always open the execution and look at the actual JSON at each step before assuming.
Two other panels worth knowing: the Credentials tab (where you store API keys once and reference them across many nodes) and the Variables tab (for storing reusable values like URLs or environment names without hard-coding them into every node).
Summary
n8n gives you a visual editor for building data flows that connect APIs, databases, and custom logic, without giving up the ability to drop into code, version-control JSON, or self-host. The main areas to learn are the canvas, the node palette, the per-node configuration panel, and the Executions panel used for debugging. Every workflow starts with a trigger node, and every node's data is plain JSON you can inspect at any point in the run.
Lesson Checkpoint