Sistava

n8n Tutorial: How to Build Your First Workflow Step by Step

How-to — — by Mahmoud Zalt

Build your first n8n workflow: add a trigger, add an action node, pass data with an expression, test each step, then publish it to run on its own.

The hardest part of a first n8n workflow is not any single step. It is that the canvas looks like a blank sheet, and nothing on it tells you which of the several hundred nodes belongs first.

The answer is always a trigger. A workflow cannot start without something to start it, so n8n makes that your first choice and everything after it is a straight line of nodes. Once that shape is in your head the canvas stops being intimidating, because there is only ever one question in front of you: what happens next.

What is an n8n workflow made of?

A trigger and a chain of nodes. The trigger decides when the workflow runs. Each node after it does one thing: fetch data, transform it, make a decision, or send something somewhere. Data flows left to right along the connectors, and each node can read what the nodes before it produced.

That is genuinely the whole model. Nodes come in two useful flavours: app nodes that talk to a service such as Gmail or Google Sheets, and core nodes that do generic work such as branching, looping, HTTP requests or editing fields. You will use both in your first hour.

How do you create a new workflow?

From the welcome screen you select Start from Scratch, or from the Overview page you use Create Workflow. Either drops you onto an empty canvas with a single prompt on it: Add first step. Selecting that opens a search box where you pick your trigger.

n8n's own beginner tutorial uses the Schedule Trigger, and it is a good first choice because it needs no external service to fire it. In their walkthrough it is configured with a Trigger Interval of Weeks and Weeks Between Triggers set to 1, then narrowed to Monday at 9am with the minute set to 0.

Which trigger should you pick?

Pick the one that matches how the work actually arrives. If the job is on a clock, use the Schedule Trigger. If another system needs to push data at you, the Webhook node gives you a URL to call. If a person is going to talk to it, the Chat Trigger exists for chatbot-style workflows and must connect to an agent or chain root node.

There are also app-specific triggers, such as a Gmail trigger that watches a mailbox for you. Whichever you choose, the rest of the workflow is built the same way, so do not spend long on this decision for a first build.

Building a workflow, the way n8n's tutorial does it

  1. Start from scratch — Select Start from Scratch on the welcome screen, or Create Workflow from the Overview page. You land on an empty canvas.
  2. Add the trigger — Select Add first step, search for Schedule Trigger, and set the interval. Close the node details to return to the canvas.
  3. Add the node that fetches something — Select the Add node connector on the trigger, then search for the service you want. n8n's tutorial uses the NASA node and its Get a DONKI solar flare operation.
  4. Create the credential — In the node, create a new credential for that service and paste in your API key. n8n tests the credential when you save it.
  5. Run just that node — Use Execute step to run the single node and look at the data it returned. Do this before you add anything else.
  6. Add a decision — Add an If node from the previous node's connector and set a condition. The tutorial checks whether classType contains the letter X using the String and Contains operators.
  7. Add the nodes that do something with the result — From the If node's true connector, add the node that acts on a match, then duplicate it for the false connector so both outcomes are handled.
  8. Run the whole thing, then publish — Select Execute Workflow to test end to end, check the output arrived where you expected, then select Publish so the schedule takes over.

How do you connect an account to a node?

Through a credential, and you can make one from inside the node you are configuring. n8n documents a credential dropdown in the node editor where you create a new credential without leaving the canvas, which is the path you want mid-build.

There is also a standalone route. n8n's documentation describes a Create button in the side menu and on the Overview page that lets you make a credential first and pick the app or service it belongs to. Either way, the credential is stored once and reused by any node that needs it.

How do you use data from an earlier node?

With an expression, written in double curly braces inside any field. An expression is how a later node reads what an earlier node produced, and it is the single technique that turns a chain of disconnected nodes into an actual workflow.

n8n's tutorial shows two useful shapes. A date expression such as {{ $today.minus(7, 'days') }} builds a rolling date filter so the workflow always looks at the last week rather than a hard-coded date. And a field reference such as {{$json["classType"]}} pulls one value out of the item the previous node passed along, so a message can read like a sentence about real data.

You do not have to memorise the syntax. Run the previous node first with Execute step, look at the data it returned, and build your expression against fields you can actually see. Guessing at field names is the most common reason a first workflow silently produces nothing.

How do you add a decision to a workflow?

With the If node, which splits the flow into a true branch and a false branch. You add it from the previous node's connector, set the value to test, choose the comparison, and n8n gives you two output connectors to build onto.

In n8n's tutorial the condition uses the String and Contains operators against the classType field. Both branches then get their own node, added from the true connector and duplicated onto the false one, so every run ends somewhere instead of quietly stopping.

If that already feels like a lot of decisions to encode before anything useful happens, that is the honest trade-off of a visual builder, and it is exactly what we removed at Sistava. Instead of drawing the branch, you hire an AI Employee and tell it in plain English what you want handled. It works out the steps, it asks you when it is unsure, and there is no branch to redraw when your process changes next month.

What is the difference between executing and publishing?

Executing is you testing. Publishing is the workflow going live. n8n's tutorial has you select Execute Workflow to run the whole chain manually and inspect the result, then select Publish to activate it so the schedule runs it without you.

That distinction matters most with webhooks. n8n's webhook documentation explains that the test URL is registered when you choose Listen for Test Event or execute an inactive workflow, while the production URL is registered when the workflow is published. A workflow you never published has no live URL, which is the reason a great many first webhooks appear to be broken when they are simply not on yet.

What trips up a first workflow?

None of this is a knock on n8n. The canvas is genuinely good at what it does, and for a repeatable pipeline where you want to see every step, a visual builder is the right tool. The cost is simply that you are the one designing the logic, and the workflow only ever does what you drew.

FAQ

How do I start a new workflow in n8n?

Select Start from Scratch on the welcome screen, or use Create Workflow from the Overview page. You then select Add first step on the empty canvas and search for the trigger you want. Everything after the trigger is added from the connector on the previous node.

What is a trigger node in n8n?

A trigger is the node that decides when a workflow runs. The Schedule Trigger runs it on a clock, the Webhook node runs it when an external service calls a URL, the Chat Trigger runs it when someone sends a chat message, and many app integrations have their own triggers. A workflow needs one before it can do anything.

How do I pass data from one node to the next in n8n?

With expressions written in double curly braces. n8n's beginner tutorial shows both a date expression, written as $today.minus(7, 'days'), and a field reference that reads a value such as classType out of the previous node's JSON output. Run the earlier node first so you can build the expression against fields you can actually see.

How do I test an n8n workflow before turning it on?

Use Execute step to run a single node and inspect its output, then Execute Workflow to run the whole chain manually. Only after that do you select Publish, which is what activates the workflow so its trigger runs it without you.

Do I need to know how to code to use n8n?

Not for a basic workflow. Choosing nodes, filling in fields and setting an If condition are all done in the interface. You will meet a little bit of syntax in expressions when you reference data from an earlier node, and there are code nodes available if you want them, but a first workflow does not require any.

Why is my n8n workflow not running automatically?

The most common reason is that it was tested but never published. A manual execution proves the logic works. Publishing is what registers the schedule or the production webhook URL so the workflow runs on its own. Check the workflow is published, then check the trigger's own settings.

Sources