Większość ludzi rozumie pojedyncze nody, a mimo to ich workflow „nie działa". Powód jest prawie zawsze ten sam: nie rozumieją, jak płyną dane i jak się do nich odwołać. To obszar o mechanice n8n – fundament, na którym stoi wszystko inne. I jednocześnie miejsce, w którym po polsku prawie nie ma dobrych treści.
TL;DR
- Nody to klocki: trigger (uruchamia), action (robi coś), helper (przetwarza: IF, Switch, Merge, Loop, Code).
- Dane to items – obiekty JSON płynące jeden po drugim. To klucz do zrozumienia wszystkiego.
- Expressions (
{{ }}) to sposób sięgania po dane z poprzednich kroków. Tu zacina się najwięcej osób. - Zrozum items + expressions, a przestaniesz „zgadywać", czemu coś jest
undefined.
Trzy typy nodów
- Trigger – punkt wejścia. Webhook (żądanie HTTP), Schedule (harmonogram/cron), event z aplikacji albo Manual (do testów).
- Action – wykonuje operację: wyślij maila, zapisz do bazy, wywołaj API.
- Helper – steruje danymi i logiką: IF/Switch (warunki), Merge (łączenie), Loop / Split in Batches (pętle), Code (własna logika JS/Python), Edit Fields (Set) (przekształcanie).
Najważniejsze: jak płyną dane (items)
To pojęcie, które zmienia wszystko. Dane w n8n to items – lista obiektów JSON. Każdy node dostaje listę items z poprzedniego, przetwarza ją i przekazuje swoją listę dalej.
Pobierasz 100 rekordów z bazy? To 100 items. Kolejny node wykona się dla każdego z nich osobno. Gdy to zrozumiesz, przestajesz się dziwić, czemu „akcja wykonała się 100 razy" – to nie błąd, to natura n8n. Większość problemów początkujących to nieporozumienie wokół tego, jak items wchodzą i wychodzą z noda.
Expressions – jak sięgnąć po dane (punkt zacięcia #1)
Expressions to dynamiczne wartości w polach noda, zapisywane w podwójnych klamrach. Najczęstsze:
{{ $json.pole }} // pole z bieżącego item
{{ $('Nazwa noda').item.json.pole }} // pole z konkretnego, wcześniejszego noda
{{ $now.format('yyyy-MM-dd') }} // dzisiejsza data
Najczęstsza pomyłka: odwołujesz się do {{ $json.email }}, a pole nazywa się Email albo siedzi głębiej, w {{ $json.dane.email }}. n8n pozwala przeciągać pola myszką z panelu po lewej – korzystaj z tego, zamiast wpisywać ścieżki z pamięci. „undefined" to prawie zawsze zła ścieżka do danych, nie błąd n8n.
Gdy logika przerasta klikanie, sięgasz po Code node (JS/Python) – ale do większości rzeczy expressions wystarczą.
Testowanie zamiast zgadywania
n8n pozwala uruchamiać workflow krok po kroku i „przypinać" dane (pinned data), żeby testować bez ciągłego odpytywania prawdziwego API. To oszczędza czas i nerwy – zwłaszcza przy expressions. Gdy coś pada, zaglądasz do obszaru błędów i troubleshootingu.
Od mechaniki do gotowego przepływu
Najlepiej uczyć się na konkrecie. Zbuduj pierwszy przepływ krok po kroku: Pierwszy workflow w n8n. Triggery typu webhook rozkładamy w n8n Webhooks, a modularność i Code node w sub-workflows i Code node.
Co dalej w tym obszarze
Rozwijamy tu osobne przewodniki: n8n expressions – jak odwołać się do danych, schedule/cron, IF / Switch / Merge / Loop, Code node (JS/Python) oraz jak testować workflow (pinned data).
Mamy darmowe materiały, szkolenia i webinary o agentach AI, automatyzacji i n8n – po polsku, z praktyki. Zajrzyj na stormit.pl/webinary.
Pełny kontekst całego n8n: kompletny poradnik n8n.
