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 }}.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.

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.

Close the window, select + after the trigger, search for
httpand pick HTTP Request. Puthttps://mockingbird.n8n.io/v1/weather/berlinin URL and select Execute step, then rename the node Get Berlin weather. The output listscity,temp_candcondition. The picture shows a stand-in address on the computer that took it, so its values will differ from yours.
Select +, then Data transformation, then Edit Fields (Set). Add a field called
reportand build its Value from the sentence above, typing the words and draggingcity,temp_candconditionin from INPUT. Select Execute step and rename the node Add weather report.
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.

In the new tab, name the table and select Create. Then select Add Column, type
reportas the name, keep the type as string and select Add Column. Close the tab.
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.

Open Personal, then Data tables, then your table. The new row holds the sentence the workflow wrote.

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.
- Select Publish in the canvas header and follow the prompts.
- 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.
Every day at 8 AM
The schedule fires and starts the run.
Get Berlin weather
Calls the sample API and returns
city,temp_candcondition.Add weather report
Builds the
reportsentence from those three fields.Save weather log
Inserts the sentence as a new row in the data table.
| Expression | What it reads | Example |
|---|---|---|
$json | The current item's data | {{ $json.temp_c }} |
$('Node Name') | Data from a node you name | {{ $('Get Berlin weather').item.json.city }} |
$now | The current moment, in the workflow's time zone | {{ $now }} |
$itemIndex | The 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 run | Starts when | Counts toward a paid plan's quota |
|---|---|---|
| Manual execution | You select Execute | No |
| Production execution | A published workflow's trigger fires | Yes |
| Sub-workflow run | A parent workflow calls it | No, 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.

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


