Mindket

n8n tutorial for beginners: build your first workflow

A black banner with the n8n logo and the words "n8n course" over "Your first workflow, webhooks, an AI agent and self-hosting".

Your first n8n workflow is four nodes on a canvas. A trigger starts the run and an HTTP Request node fetches data. An Edit Fields node turns it into a sentence, and a Data table node saves the row. n8n's own quickstart builds a daily weather log this way. You test it from the editor, then publish it so it runs on its own.

In this lesson

  • Build a four-node workflow: a schedule trigger, an HTTP Request, an Edit Fields node and a Data table.
  • Pass a value from one node to the next with an expression such as {{ $json.city }}.
  • Open an execution and read what each node received and sent.
  • Publish a workflow so its trigger fires without you.
All courses
On this page
  1. Before you start
  2. Step by step, with screenshots
  3. Publish it
  4. How data gets from one node to the next
  5. Test runs, production runs and Publish
  6. What n8n's own team says about data tables and Assistant builds
  7. Common mistakes
  8. Try it yourself
  9. What to learn next
  10. Check yourself
  11. Frequently asked questions
  12. Sources

Before you start

You need an n8n instance. The quickest is an n8n Cloud trial, and a self-hosted copy works the same way (lesson 4 sets one up with Docker). n8n's quickstart asks for no coding experience. If a word here is new, what is n8n covers nodes, triggers and credentials.

The weather comes from a sample API that n8n hosts, so the quickstart sets a URL and no credential. It covers about 40 European cities, and any other city returns an error. This lesson uses Berlin, as the quickstart does.

The quickstart offers a shortcut: describe the workflow to n8n Assistant and approve its steps, which n8n says takes about five minutes where your plan or edition includes Assistant. Building by hand teaches more, so that is the route below.

Step by step, with screenshots

The workflow wakes up every morning, fetches Berlin's weather, writes one sentence about it and saves the sentence in a table. Rename each node as you go, because the default names stop being obvious around the third node. Step 4 asks for this value in the report field:

The temperature in {{ $json.city }} is {{ $json.temp_c }}°C. It's currently {{ $json.condition }}.
  1. On a new instance, the home page offers Build a workflow. Select it, then select Add first step on the empty canvas. In the panel that asks what triggers the workflow, choose On a schedule.

    The empty canvas of a workflow named My workflow, under Personal, with the panel What triggers this workflow? open on the right. The On a schedule row is ringed in gold.
  2. Leave Trigger Interval on Days, open Trigger at Hour and pick 8am. Click the title to rename the node Every day at 8 AM. The yellow note says it runs on this schedule once you publish.

    The Schedule Trigger window, titled Every day at 8 AM. Trigger Interval reads Days, and the Trigger at Hour box, ringed in gold, reads 8am.
  3. Close the window, select + after the trigger, search for http and pick HTTP Request. Put https://mockingbird.n8n.io/v1/weather/berlin in URL and select Execute step, then rename the node Get Berlin weather. The output lists city, temp_c and condition. The picture shows a stand-in address on the computer that took it, so its values will differ from yours.

    The HTTP Request window, titled Get Berlin weather. The URL box holds a local stand-in address ending in /v1/weather/berlin, and it and the Execute step button are ringed in gold. The output on the right lists city Berlin, temp_c 9 and condition Light rain.
  4. Select +, then Data transformation, then Edit Fields (Set). Add a field called report and build its Value from the sentence above, typing the words and dragging city, temp_c and condition in from INPUT. Select Execute step and rename the node Add weather report.

    The Edit Fields window, titled Add weather report. The value of the report field, ringed in gold, builds a sentence from {{ $json.city }}, {{ $json.temp_c }} and {{ $json.condition }}. The Execute step button is ringed too, and the output shows the finished sentence.
  5. Select + and add a Data table node with the Insert row action. Open the Data table dropdown and choose Create new data table. n8n opens a new browser tab for it.

    The Insert row window of the Data table node. The Data table dropdown is open and its Create new data table row is ringed in gold.
  6. In the new tab, name the table and select Create. Then select Add Column, type report as the name, keep the type as string and select Add Column. Close the tab.

    A data table named Weather log under Personal, Data tables. The Add Column box is open with the name report typed in, and the name field and the Add Column button are ringed in gold.
  7. Back on the workflow tab, pick your table, set Mapping Column Mode to Map Automatically and rename the node Save weather log. Close the window, select My workflow at the top and rename it Weather Log. Select Execute under the canvas. Every node shows a green check mark when the run is done.

    The Weather Log canvas after a run. Its four nodes, Every day at 8 AM, Get Berlin weather, Add weather report and Save weather log, each carry a green check mark, with 1 item on every line between them. The Execute button under the canvas is ringed in gold.
  8. Open Personal, then Data tables, then your table. The new row holds the sentence the workflow wrote.

    The Weather log data table with one row. Its report cell, ringed in gold, holds the sentence about Berlin at 9°C with light rain.

Screenshots of n8n 2.46.6, self-hosted in Docker on Windows, taken on 6 November 2026. The weather API in them is a local stand-in for n8n's sample API.

Publish it

The pictures end with a test run. One step is left before the schedule does the work for you.

  1. Select Publish in the canvas header and follow the prompts.
  2. From then on the workflow runs at 8 AM every day, in the workflow's timezone. The next morning, open the table and look for a second row.

How data gets from one node to the next

Every node hands the next one a list of items, and each item is an object. n8n's data structure page says it flatly: all data passed between nodes is an array of objects. Ordinary values sit under a json key and files under binary. A node that receives several items processes each of them.

You never wire the data by hand. Drag a field from the INPUT panel into a parameter and n8n writes the expression for you, so dragging fruit gives {{ $json.fruit }}. A field can be fixed or an expression, and switching it to expression mode lets you type one too. Inside the braces it is JavaScript.

What one run does, in order
  1. Every day at 8 AM

    The schedule fires and starts the run.

  2. Get Berlin weather

    Calls the sample API and returns city, temp_c and condition.

  3. Add weather report

    Builds the report sentence from those three fields.

  4. Save weather log

    Inserts the sentence as a new row in the data table.

Four variables from n8n's expression reference.
ExpressionWhat it readsExample
$jsonThe current item's data{{ $json.temp_c }}
$('Node Name')Data from a node you name{{ $('Get Berlin weather').item.json.city }}
$nowThe current moment, in the workflow's time zone{{ $now }}
$itemIndexThe current item's position in the input list{{ $itemIndex }}

Test runs, production runs and Publish

A run of a workflow is an execution. Select Execute and you start a manual one, meant for testing. A published workflow runs production executions on its own. Only production executions count toward the quota on a paid plan, so testing from the editor doesn't use it up.

Open the Executions tab to see a workflow's past runs. For a failed run, select Debug in editor, and for a successful one, Copy to editor. Either way n8n copies that run's data into your workflow and pins it to the first node, so you can fix a step and re-run it on the same data. That works on n8n Cloud and on self-hosted Registered Community, Business and Enterprise editions. Registering a Community instance is free.

The 8 AM in your trigger follows the workflow's timezone, or the instance's when the workflow sets none, according to the Schedule Trigger page. A self-hosted instance defaults to America/New York. n8n Cloud tries to detect the owner's timezone at signup and falls back to GMT. Check which one you have before you wait for tomorrow's row.

Kind of runStarts whenCounts toward a paid plan's quota
Manual executionYou select ExecuteNo
Production executionA published workflow's trigger firesYes
Sub-workflow runA parent workflow calls itNo, only the parent counts

What n8n's own team says about data tables and Assistant builds

The n8n team launched data tables on X on 22 September 2025, in the pre-release of version 1.113.0. The post pitches them as storage inside n8n, with no outside database and no credential, for keeping state between runs. That is the job of the Save weather log node. Each 8 AM run adds a row, and the table keeps what earlier runs found.

A year later, on 10 September 2026, the team posted a thread about n8n Assistant, which builds a workflow from a goal you describe. In a reply in that thread it warned that Assistant might not get every build right the first time. So if you take the quickstart's Assistant shortcut, treat its workflow like one you built by hand. Before you publish, open its run in the Executions tab and check every node's input and output.

Check the workflow and the execution logs before you rely on it, and tell us where it falls over.

n8n.io, n8n's official account · X (read November 5, 2026)
n8n.io (@n8n_io) on X, 22 September 2025. Data tables are here. Native storage for your workflows without external databases or credentials. Track state between runs, store session data, or stage intermediate results. Available now on all plans in pre-release v1.113.0.
n8n.io on X, 22 September 2025
n8n.io (@n8n_io) on X, 10 September 2026, a reply in its n8n Assistant thread. It's live today for supported Cloud and self-hosted Docker setups, with more features and improvements coming release by release. It might not get every build right first time. Check the workflow and the execution logs before you rely on it, and tell us where it falls over.
n8n.io on X, 10 September 2026
n8n's own YouTube channel builds a first workflow in its Quick Start Tutorial.

Screenshots of X's own embeds of the posts, taken on 5 November 2026, with the time in UTC. X cuts the first post short with Show more. Select a screenshot to open the post on X.

Common mistakes

  • Forgetting to publish. A schedule trigger fires only after you save and publish the workflow, so one that passes every test run can still sit idle.
  • Asking for a city the sample API lacks. Anything outside its roughly 40 European cities returns an error.
  • Reading a node that has not run. An expression like $('Get Berlin weather') fails with “Referenced node is unexecuted” until you test the workflow up to that node.
  • Typing braces into a fixed field. Switch the field to expression mode first, or drag the value in from the INPUT panel.
  • Treating one green test run as proof the schedule works. Execute runs the workflow once, right now. The 8 AM run depends on publishing and on the timezone.

Try it yourself

Change one thing at a time and run the workflow after each change.

  • Replace berlin in the URL with another city. An error means the sample API does not cover it.
  • Add a second field in Edit Fields that converts temp_c to Fahrenheit. An expression is JavaScript, so {{ $json.temp_c * 9 / 5 + 32 }} is a fair start. Give the table a matching column and check the new row.
  • Open the Executions tab, pick your run and find which node produced each column of the row.
  • Switch the trigger to a Minutes interval, publish, and watch rows arrive. Unpublish or switch it back when you are done.

What to learn next

Your workflow starts on a clock. Many real workflows start when another app calls them, and that is the Webhook node, the subject of lesson 2. Lesson 3 builds an AI agent on the same canvas. If you would rather start from a finished workflow, import one from Mindket's n8n workflows, where each template's nodes are drawn before you download.

Check yourself

  1. Your workflow passes every test run but never fires at 8 AM. What do you check first?

    Show answer

    C. Whether the workflow is published and which timezone it follows A schedule trigger fires only after you publish the workflow, and its 8 AM follows the workflow's timezone or, failing that, the instance's.

  2. How do you pass a field from one node into the next node's parameter?

    Show answer

    B. Drag it from the INPUT panel and n8n writes the expression Dragging a field from the INPUT panel into a parameter makes n8n write the expression for you, such as {{ $json.city }}.

  3. Which kind of run counts toward the quota of a paid plan?

    Show answer

    A. A production execution started by a published trigger Only production executions count, so testing from the editor does not use the quota, and a sub-workflow run counts only through its parent.

  4. A run failed, and you want to fix one step and re-run it on the same data. What do you select in the Executions tab?

    Show answer

    D. Debug in editor For a failed run, Debug in editor copies that run's data into your workflow and pins it to the first node, so you can re-run on the same data.

Frequently asked questions

Is n8n free for beginners?

You can start free in two ways. n8n Cloud has a 14-day free trial with Pro features, and the self-hosted Community edition is free with almost the complete feature set, per n8n's comparison page.

Do I need to code to use n8n?

No. The quickstart lists no coding experience as a prerequisite, and you build by connecting nodes. Code comes in later, since expressions are JavaScript.

What is the difference between a node and a trigger in n8n?

A trigger is the special node that starts a workflow when a condition is met, such as a schedule firing. Every node is one component you compose into the workflow. n8n's glossary defines both.

Can I use my own API instead of the sample weather one?

Yes. The HTTP Request node takes any URL, lets you pick the method from DELETE, GET, HEAD, OPTIONS, PATCH, POST and PUT, and offers authentication, headers and a body for APIs that need them.

Why didn't my n8n workflow run on its schedule?

Start with the timezone. The workflow's own setting wins, and otherwise the instance's applies, which defaults to America/New York when you self-host. After that, confirm the workflow is published, since an unpublished schedule trigger never fires.

Where can I practice n8n after this?

The courses at n8n Academy, listed under learning paths, have hands-on exercises, quizzes and a final exam. A 70% passing grade earns a badge and a certificate.

Sources

  1. n8n Docs: Build your first workflow (read November 4, 2026)https://docs.n8n.io/build-your-first-workflow
  2. n8n Docs: Understand n8n's data structure (read November 4, 2026)https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure
  3. n8n Docs: Expressions for data transformation (read November 4, 2026)https://docs.n8n.io/build/work-with-data/transform-data/expressions-for-data-transformation
  4. n8n Docs: Expression reference (read November 4, 2026)https://docs.n8n.io/build/work-with-data/transform-data/expression-reference
  5. n8n Docs: Understand executions (read November 4, 2026)https://docs.n8n.io/build/understand-workflows/understand-executions
  6. n8n Docs: Debug executions (read November 4, 2026)https://docs.n8n.io/build/understand-workflows/understand-executions/debug-executions
  7. n8n Docs: Key concept glossary (read November 4, 2026)https://docs.n8n.io/key-concept-glossary
  8. n8n Docs: Schedule Trigger node (read November 4, 2026)https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger
  9. n8n Docs: Edit Fields (Set) node (read November 4, 2026)https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set
  10. n8n Docs: HTTP Request node (read November 4, 2026)https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest
  11. n8n Docs: Choose how to use n8n (read November 4, 2026)https://docs.n8n.io/choose-how-to-use-n8n
  12. n8n Docs: Learning paths (read November 5, 2026)https://docs.n8n.io/learning-paths
  13. n8n.io on X: data tables are here, 22 September 2025 (read November 5, 2026)https://x.com/n8n_io/status/1970148748840874288
  14. n8n.io on X: n8n Assistant is live, check the execution logs, 10 September 2026 (read November 5, 2026)https://x.com/n8n_io/status/2097996379301741038
  15. n8n on YouTube: n8n Quick Start Tutorial: Build Your First Workflow [2025] (read November 5, 2026)https://www.youtube.com/watch?v=4cQWJViybAQ

Share this lesson

Start from a finished workflow

Open any n8n workflow on Mindket, see its nodes drawn live, then import it and change one node at a time.

Browse n8n workflows

This lesson as Markdown · n8n course for beginners · All courses