n8n-Lernpfad · Präsentation · Teil 4
Daten von außen
Folien zum n8n-Lernpfad: HTTP Request, Split Out, Filter, Sort, Limit, Aggregate, dazu ein Webhook mit Postfach und Sender. Kontrolle: die Zahl am Node.
Ein Kurs von Erik Lorenscheit, Gründer von hilfmirmal · Zuletzt aktualisiert am
Weiter mit den Pfeiltasten oder durch Wischen
1 / 18
Teil 4 · Daten von außen
Daten, die du nicht selbst tippst
In Teil 3 hast du eine Frage ins Internet geschickt und eine Antwort bekommen. Jetzt kommt eine ganze Liste zurück, und danach drehst du die Richtung um. Keine neuen Formeln zum Selberschreiben. Nur klicken, ausführen, hinschauen.
- Manuell startenManual Trigger
- Produkte abrufenHTTP Request
- Liste aufteilenSplit Out
- Filtern, sortieren, kürzenFilter, Sort, Limit
- Alle in ein ItemAggregate
- Webhook empfangenWebhook
- Eingang normalisierenEdit Fields
- Bestätigung sendenRespond to Webhook
hilfmirmal.de · n8n-Lernpfad
Erklärung zur Folie
Teil 3 war viel Neues auf einmal: die erste Uhr, der erste If. Wenn du da noch nicht sicher bist, ist das normal. Dieser Teil wird ruhiger.
Du tippst keine Daten mehr ein, n8n holt sie selbst. Zuerst fragst du eine Schnittstelle nach dreißig Produkten und machst daraus eine Top-5-Liste. Dann drehst du die Richtung um: n8n bekommt ein Postfach, und ein zweiter Workflow wirft eine Nachricht hinein. Alle Bausteine stellst du per Klick ein. Du lernst vor allem eins: hinschauen, was rauskommt, und die Zahl oben rechts am Node lesen. Leg dir dafür einen neuen Workflow an, zum Beispiel „Produktliste“.
Zwei Richtungen: fragen und zugestellt bekommen
| Richtung | Wer ist aktiv? | Node | Beispiel |
|---|---|---|---|
| n8n fragt | n8n | HTTP Request | Wetter abrufen, Produktliste holen |
| n8n bekommt zugestellt | das andere System | Webhook | Shop meldet Bestellung, Formular meldet Eingabe |
Erst fragen, dann zugestellt bekommen. Lektion 4 im Lernpfad spielt beide Richtungen zum Anklicken durch.
Merk dir
Beim Fragen ist n8n aktiv. Beim Zustellen ist es das andere System, und n8n wartet.
Erklärung zur Folie
Es gibt genau zwei Richtungen, wie Daten in n8n kommen. Entweder n8n fragt: Es geht ins Internet und holt sich etwas. Das war der Schirmcheck in Teil 3, n8n hat den Wetterdienst gefragt. Der Node dafür heißt HTTP Request.
Oder n8n bekommt etwas zugestellt. Dann ist das andere System aktiv: Ein Shop meldet eine Bestellung, ein Formulardienst meldet, dass jemand etwas ausgefüllt hat. Der Node dafür heißt Webhook, und er ist ein Trigger, weil er den Workflow startet. Kurzer Test für dich: Der Schirmcheck, welche Richtung? Fragen. Ein Shop meldet eine Bestellung? Zugestellt.
HTTP Request: n8n stellt eine Frage im Internet
| Feld | Was du einträgst | Hier |
|---|---|---|
| Method | GET = fragen, POST = schicken | GET |
| URL | die Adresse | https://dummyjson. |
| Send Query Parameters | Zusatzwünsche hinter dem Fragezeichen | an, limit = 30 |
| Authentication | Zugangsdaten | None |
dummyjson.com ist ein Übungsdienst mit erfundenen Produkten. Kein Konto, keine Kosten.
Merk dir
Will ein Dienst Zugangsdaten, kommen sie unter Authentication als Credential hinein. Nie in ein Textfeld.
Erklärung zur Folie
So baust du es: Add first step, „Trigger manually“, umbenennen in „Manuell starten“. Dann Plus, Suche „HTTP Request“, umbenennen in „Produkte abrufen“.
Vier Felder, mehr brauchst du nicht. GET steht schon drin. Die URL tippst du ab. Send Query Parameters schaltest du an: Name limit, Value 30. Heißt: Gib mir dreißig Stück, nicht alle. Authentication bleibt auf None, der Dienst will keinen Ausweis. Execute step: Rechts kommt genau ein Item. Antwortet der Dienst nicht, stell im Reiter Settings des Nodes Retry On Fail an.
Die Antwort lesen: ein Item, und eine Liste darin
{
"products": [
{ "title": "Essence Mascara Lash Princess", "price": 9.99, "rating": 2.56, ... },
...
],
"total": 194
}
- Geschweifte Klammer: ein Datensatz mit Feldern.
- Eckige Klammer: eine Liste. Hier stecken die 30 Produkte drin.
- Oben rechts im Output: Schema, Table, JSON. Schema zeigt nur die Feldnamen, das ist die entspannte Ansicht.
Erklärung zur Folie
Du musst das nicht lesen können wie jemand, der programmiert. Du musst nur zwei Klammern unterscheiden. Es kommt ein Datensatz zurück, und in dem steckt unter products eine Liste mit dreißig Produkten. Daneben total, die Gesamtzahl beim Dienst.
Klick im Output auf Schema und klapp products auf: Da stehen unter anderem title, price, rating und category. Und schau oben an den Node. Da steht eine 1, ein Item. Die dreißig Produkte sind noch eingepackt.
Split Out: aus einer Liste werden Items
- Im Menü: Plus, Suche „Split Out“, umbenennen in „Liste aufteilen“.
- Fields To Split Out:
products. Tippen oder aus dem Schema links ins Feld ziehen. - Vorher: 1 Item mit einer Liste von 30 Produkten.
- Nachher: 30 Items, jedes ein Produkt.
Merk dir
Ab hier läuft jeder weitere Node dreißig Mal, einmal pro Produkt. Die Zahl oben rechts am Node springt von 1 auf 30.
Erklärung zur Folie
Execute step, dann schau auf die Zahl am Node: 30. Rechts in der Table-Ansicht steht eine Zeile pro Produkt.
Das ist die wichtigste Regel in n8n, deshalb steht sie hier gleich zweimal: Ein Node läuft einmal pro Item. Du baust ihn einmal, n8n wendet ihn auf jedes Item an. Und die Zahl oben rechts sagt dir immer, wie viele gerade unterwegs sind. Lektion 10 zeigt das Prinzip noch einmal zum Ausprobieren. Im Lernpfad blendest du sie oben mit dem Schalter „Fortgeschritten“ ein.
Felder auswählen: nur behalten, was du brauchst
Edit Fields „Felder auswählen“, vier Felder, Werte per Drag-and-drop aus dem Schema:
| Name | Typ | Wert |
|---|---|---|
| produkt | String | {{ $json. |
| preis | Number | {{ $json. |
| bewertung | Number | {{ $json. |
| kategorie | String | {{ $json. |
Include Other Input Fields bleibt aus: Der Rest fliegt raus. Immer noch 30 Items.
Achtung
preis und bewertung brauchen den Typ Number. Als String sortiert der Sort nach Zeichen, nicht nach Wert.
Erklärung zur Folie
Jedes Produkt hat rund zwanzig Felder, du brauchst vier. Und hier ist der Trick, mit dem du nichts tippen musst: Add Field, Name produkt. Dann packst du links im Schema title mit der Maus und ziehst es rechts in das Feld Value. n8n schreibt die Expression selbst: {{ $json., das Feld title aus dem Item, das gerade durchläuft.
Dasselbe dreimal: preis aus price, bewertung aus rating, kategorie aus category. Execute step: immer noch dreißig Items, jetzt mit vier sauberen Feldern. Bleibt preis ein String, steht nach dem Sortieren 9.99 über 100, weil n8n dann Zeichen vergleicht.
Filter, Sort, Limit: drei Werkzeuge, drei Klicks
| Node | Name im Workflow | Einstellung | Items |
|---|---|---|---|
| Filter | Bewertung ab 4? | bewertung, Number, is greater than or equal to, 4 |
von 30 auf etwa 13 |
| Sort | Nach Preis sortieren | Type Simple, Field preis, Order Descending |
bleibt |
| Limit | Nur die ersten 5 | Max Items 5 |
auf 5 |
Merk dir
Filter wirft weg, was nicht passt: kein zweiter Ausgang, kein roter Node. Die Zahl am Node zeigt, wie viele übrig sind.
Wann Filter und wann If: Lektion 12.
Erklärung zur Folie
Der Filter sieht aus wie der If aus Teil 3, hat aber nur einen Ausgang. Was nicht passt, ist weg. Links ziehst du bewertung aus dem Schema hinein, in der Mitte Number, is greater than or equal to, rechts eine 4. Execute step: Aus dreißig werden ungefähr dreizehn. Die genaue Zahl kann sich ändern, es sind Übungsdaten. Brauchst du die verworfenen Items später noch, nimm einen If.
Sort: Type Simple, Add Field To Sort By, Feld preis, Order Descending, das teuerste oben. Gleiche Zahl wie vorher, nur die Reihenfolge ist neu. Limit: Max Items 5, Keep First Items. Execute step: fünf. Geh danach die Zahlen an den Nodes entlang, von „Produkte abrufen“ bis „Nur die ersten 5“: 1, 30, 30, etwa 13, 13, 5. Diese Zahlen erzählen die ganze Geschichte.
Aggregate: alles wieder in ein Item packen
- Im Menü: Plus, Suche „Aggregate“, umbenennen in „Alle in ein Item“.
- Aggregate: All Item Data (Into a Single List).
- Put Output in Field:
produkte. - Aus 5 Items wird 1 Item mit einer Liste
produktevon 5 Produkten.
Merk dir
Das Gegenteil von Split Out. Du brauchst es, wenn am Ende eine Nachricht rausgehen soll, nicht fünf.
Erklärung zur Folie
Execute step, die Zahl am Node: 1. Die fünf Produkte stecken wieder in einem Item, in der Liste produkte. Klapp sie im Schema auf, da sind sie.
Wozu? Stell dir vor, am Ende soll eine Mail mit den fünf Top-Produkten rausgehen. Ohne Aggregate schickt n8n fünf Mails, eine pro Item. Mit Aggregate ist es eine Mail mit einer Liste darin. Aggregate gibt in beiden Modi genau ein Item aus, die Zahl am Node hilft hier also nicht. Fehlt die Liste produkte und stehen stattdessen einzelne Feldlisten wie produkt und preis im Output, steht der Modus auf Individual Fields statt auf All Item Data.
Zum Nachbauen: die Produktliste
- Manuell startenManual Trigger
- Produkte abrufenHTTP Request
- Liste aufteilenSplit Out
- Felder auswählenEdit Fields
- Bewertung ab 4?Filter
- Nach Preis sortierenSort
- Nur die ersten 5Limit
- Alle in ein ItemAggregate
- ZusammenfassungEdit Fields
- Item-Zahlen von „Produkte abrufen“ bis „Zusammenfassung“: 1, 30, 30, etwa 13, 13, 5, 1, 1.
- „Zusammenfassung“ macht aus der Liste einen Satz. Felder und Formel stehen auf der nächsten Folie.
Erklärung zur Folie
Führ die Kette einmal komplett mit Execute workflow aus und geh die Zahlen an den Nodes entlang. Stimmen sie, hast du alles richtig eingestellt. Stimmt eine nicht, öffnest du genau diesen Node und vergleichst Input und Output.
Gewöhn dir auch hier eine Sticky Note an: was der Workflow tut und welche Item-Zahlen du erwartest. Dann weißt du in einem Monat noch, ob er richtig läuft.
Aus der Liste einen Satz bauen
Edit Fields „Zusammenfassung“ mit drei Feldern. In text kommt diese Expression:
{{ $json.produkte.map(p => p.produkt + ' (' + p.preis + ' USD)').join(', ') }}
| Feld | Typ, Schalter, Wert |
|---|---|
| titel | String, Fixed, Top-Produkte ab Bewertung 4 |
| text | String, Expression, die Formel oben |
| anzahl | Number, Expression, {{ $json., ergibt 5 |
Beide Expressions stehen als Rezept im Expression-Baukasten, text dort nur mit den Namen.
Achtung
Leerzeichen zählen mit: vor der Preisklammer, vor USD, nach dem Komma.
Erklärung zur Folie
Das ist die längste Expression in diesem Teil, und du musst sie nicht selbst schreiben. Kopier sie, aber lies sie einmal laut: Nimm die Liste produkte aus Aggregate, mach mit map aus jedem Produkt den Namen mit dem Preis in Klammern und häng mit join alles mit Komma aneinander. Die Vorschau unter dem Feld zeigt dir den fertigen Satz.
Den Anfang „Top-Produkte ab Bewertung 4“ legst du als eigenes Feld titel an, Schalter auf Fixed, also fester Text. So bleibt die Formel kürzer. Brauchst du beides in einem Text, etwa für eine Mail, schreibst du im nächsten Node {{ $json., wie in Teil 2.
Im Expression-Baukasten ist das Rezept „Aggregate: Anzahl in der Liste“ genau die Formel für anzahl. Das Rezept „Aggregate: Liste als Satz“ ist die Grundform von text: nur die Namen, ohne Preis. Dort klickst du sie zusammen und probierst sie mit Beispieldaten aus. Den Preis in Klammern setzt du so dazu wie oben.
Die Zahl am Node ist deine Kontrolle
- Nach jedem Execute step steht oben rechts am Node die Zahl der Items.
- Von 1 auf 30: Split Out hat gearbeitet.
- Von 30 auf 13: Der Filter hat 17 weggeworfen.
- Von 13 auf 5: Das Limit hat gekürzt.
- Von 5 auf 1: Aggregate hat eingepackt.
- 0: Hier ist alles weg. Diesen Node öffnen, Input und Output vergleichen.
Merk dir
Kein Node ist rot, und trotzdem kann das Ergebnis falsch sein. Die Zahl merkt es zuerst.
Erklärung zur Folie
Probier die Falle selbst aus: Stell im Filter die 4 auf 9 und drück Execute step. Null Items. Kein Fehler, nichts rot, aber ab hier ist alles leer. Merkst du das erst am Ende, suchst du lange. Schaust du auf die Zahl, siehst du es sofort. Danach stellst du zurück auf 4.
Wenn etwas nicht stimmt: Zahlen entlanggehen, den ersten Node finden, an dem die Zahl nicht passt, öffnen, Input und Output vergleichen. Der Item-Zahlen-Trainer übt genau das, ganz ohne n8n.
Webhook: ein anderes System klingelt bei dir
- Webhook ist ein Trigger. Im Menü: Add first step, „On webhook call“. n8n baut daraus eine Adresse.
- Test URL: gilt nur, solange du auf Execute workflow gedrückt hast und der Node „Listening“ zeigt, höchstens zwei Minuten lang. Eine Nachricht pro Klick.
- Production URL: dauerhaft, erst nach Publish.
- HTTP Method POST: Der Sender schickt Daten mit. Die landen im Output unter
body. - Respond to Webhook: die Antwort an den Sender, zum Beispiel „angenommen“.
Erklärung zur Folie
Jetzt die zweite Richtung: zugestellt bekommen. Das Bild dazu ist ein Postfach mit Klingel. n8n stellt eine Adresse bereit, und wer etwas an diese Adresse schickt, löst den Workflow aus.
Im Webhook gibst du einen Path ein, zum Beispiel mein-postfach. Oben im Node stehen dann zwei Adressen: Test URL und Production URL. Zum Üben reicht Test. Lauschen lässt du den Webhook mit Execute workflow auf dem Canvas oder im geöffneten Node mit „Listen for test event“. Bei Respond stellst du „Using 'Respond to Webhook' Node“ ein. Dann antwortet der Node Respond to Webhook, hier am Ende der Kette. Höflichkeit unter Systemen: Wer klingelt, bekommt eine Antwort.
Der Sender: HTTP Request mit POST
- Webhook empfangenWebhook
- Eingang normalisierenEdit Fields
- Bestätigung sendenRespond to Webhook
- Manuell startenManual Trigger
- Nachricht bauenEdit Fields
- Nachricht sendenHTTP Request
- Antwort lesenEdit Fields
- Postfach: Execute workflow. Der Webhook zeigt „Listening“.
- Sender: Execute workflow, innerhalb von zwei Minuten. Die Nachricht geht an die Test URL.
- Im Sender steht rechts die Antwort, im Postfach liegt die Nachricht unter
body.
Erklärung zur Folie
Der Sender ist nichts Neues. Es ist der HTTP Request von der Produktliste, nur mit Method POST statt GET. Vorher hat er gefragt, jetzt schickt er.
Öffne die zwei Workflows in zwei Browser-Tabs und stell beide fertig ein, wie auf der nächsten Folie. Erst dann lässt du das Postfach lauschen, denn nach zwei Minuten hört es von selbst auf. Im ersten Tab startest du das Postfach, der Webhook wartet. Im zweiten startest du gleich danach den Sender. Jetzt steht im Sender in „Antwort lesen“ der Status angenommen, und im Postfach ist der Lauf durch: Unter body liegt die Nachricht. Wichtig: Das Postfach muss lauschen, bevor du sendest. Sonst ist niemand zu Hause.
Postfach und Sender einstellen
| Node | Einstellung |
|---|---|
| Webhook empfangen | HTTP Method POST, Path mein-postfach, Respond: Using 'Respond to Webhook' Node |
| Eingang normalisieren | absender = {{ $json., betreff = {{ $json. |
| Bestätigung senden | Respond With JSON, Response Body { "status": "angenommen" } |
| Nachricht bauen | absender Muster GmbH, betreff ein kurzer Satz, vorgang V-1001 |
| Nachricht senden | POST, URL = Test URL des Postfachs, Send Body an, JSON, drei Felder |
| Antwort lesen | antwort_ = {{ $json. |
Erklärung zur Folie
Die Test URL kopierst du oben aus dem Webhook-Node. Sie endet auf webhook-test/mein-postfach. Im Sender stellst du im HTTP Request Send Body an, Body Content Type JSON, Specify Body „Using Fields Below“, und legst drei Felder an: absender, betreff, vorgang. Die Werte ziehst du aus dem Schema von „Nachricht bauen“.
Im Postfach kannst du die Expressions für absender und betreff vorher tippen. Sobald die erste Nachricht da war, ziehst du sie aus dem Schema unter body. Den Webhook-Simulator kannst du vorher durchklicken, ganz ohne n8n.
Wenn es hakt: Liste und Webhook
| Symptom | Ursache | Was tun |
|---|---|---|
| Split Out: 0 Items, „wasn't found“ | Feldname falsch geschrieben | products aus dem Schema ziehen |
| Sort sortiert komisch | preis ist ein String | Typ Number in „Felder auswählen“ |
| Filter liefert 0 | Grenze zu hoch | Zahl lesen, Input gegen Output |
| Filter rot: „Wrong type“ | bewertung ist Text | Typ Number in „Felder auswählen“ |
Aggregate: Feldlisten statt produkte |
Modus Individual Fields | All Item Data, Feld produkte |
| Sender bekommt 404 | Postfach lauscht nicht, Pfad anders | erst Postfach starten, URL kopieren |
| Postfach zeigt kein „Listening“ mehr | lauscht höchstens zwei Minuten | Postfach neu starten, gleich senden |
| body im Postfach leer | Send Body aus oder keine Felder | Send Body an, JSON, drei Felder |
| zweite Nachricht kommt nicht an | Test URL gilt für eine Nachricht | Postfach neu starten, dann senden |
Erklärung zur Folie
Diese neun Dinge gehen bei Listen und Webhooks am häufigsten schief. Bei der Liste hilft fast immer derselbe Blick: Zahl am Node lesen, den ersten Node mit falscher Zahl öffnen, Input gegen Output.
Bei Split Out verrät dir die Zahl sogar die Ursache. 0 Items und rechts im Output der Hinweis „The field … wasn't found in any input item“: Der Feldname stimmt nicht, etwa Products statt products. Bleibt es bei 1 Item, gibt es das Feld, aber es steckt keine Liste darin, etwa total. Liefert der Filter 0 Items und bleibt grün, war die Grenze zu hoch. Wird er rot und meldet „Wrong type“, kommt bewertung als Text an. Dann stellst du in „Felder auswählen“ den Typ auf Number.
Beim Webhook ist es meistens die Reihenfolge. Erst lauscht das Postfach, dann sendet der Sender, und zwar innerhalb von zwei Minuten. Danach hört das Postfach von selbst auf. Und die Adresse kopierst du, statt sie abzutippen. Schon ein falscher Buchstabe im Pfad ergibt einen 404.
Dein Auftrag
- Nachbauen: die Produktliste komplett. Einmal ausführen, die Item-Zahl jedes Nodes notieren.
- Abwandeln: Filter auf 4.5, Sortierung Ascending, Limit 3. Nach jeder Variante die Zahlen notieren und erklären.
- Titel anpassen: Ändert sich die Filtergrenze, passt du die Zahl in
titelder Zusammenfassung an. - Postfach und Sender: zwei Workflows. Nachricht schicken, Antwort und body prüfen. Dann im Postfach nur den Pfad ändern, wieder lauschen lassen, noch einmal senden.
Merk dir
Das Postfach nicht veröffentlichen. Zum Üben reicht die Test URL.
Erklärung zur Folie
Erwartete Zahlen, als Richtwerte, weil sich die Übungsdaten ändern können. Grundlauf von „Produkte abrufen“ bis „Zusammenfassung“, wie auf der Folie zum Nachbauen: 1, 30, 30, etwa 13, 13, 5, 1, 1. Davor zeigt „Manuell starten“ eine 1. Filter 4.5: etwa 6 nach dem Filter, das Limit kürzt trotzdem auf 5. Ascending: dieselben Zahlen, aber jetzt stehen die billigsten oben. Limit 3: am Ende 3 statt 5, die Liste in Aggregate hat drei Einträge.
Beim Postfach geht es um den Pfad: Hat das Postfach einen anderen Pfad als die URL im Sender, bekommt der Sender einen 404. Der Pfad muss auf beiden Seiten gleich sein. Kopier die neue Test URL in den Sender, lass das Postfach lauschen und sende noch einmal.
Wer noch weiter will: Tausch den Manual Trigger gegen einen Schedule Trigger, täglich um 8 Uhr. Oder nimm in „Felder auswählen“ ein fünftes Feld lager aus stock dazu und prüf, ob es bis hinten durchkommt. Zum Schluss zwei Sätze für dich: Welchen Baustein kann ich jemandem zeigen? Wo habe ich am längsten gehangen?
Was bleibt hängen?
Was macht Split Out, und woran siehst du, dass es funktioniert hat?
Antwort
Aus einem Item mit einer Liste darin werden dreißig Items. Die Zahl am Node springt von 1 auf 30.
Warum ist die Zahl am Node wichtiger als die Farbe?
Antwort
Ein Node kann grün sein und trotzdem 0 Items liefern. Grün heißt nur, dass er durchgelaufen ist.
Wer ist beim Webhook aktiv, wer beim HTTP Request?
Antwort
Webhook: Das andere System sendet. HTTP Request: n8n fragt, auch der Sender mit POST.
Warum schweigt das Postfach, wenn niemand Execute workflow gedrückt hat?
Antwort
Die Test URL gilt nur bei „Listening“, höchstens zwei Minuten lang. Dauerhaft gilt die Production URL, erst nach Publish.
Erklärung zur Folie
Beantworte die Fragen zuerst für dich, dann klapp die Antworten auf. Zum Nachlesen: Lektion 4 für Webhook und Schnittstellen, Lektion 10 für Items. Beides hast du hier mit den Händen gemacht, da ist das Nachlesen leicht.
Im nächsten Teil geht es um Regeln: Wer darf was freigeben? Ein Formular davor ist dort ein Zusatz.
Weiter im Kurs
- LernpfadLektionen zum Nachklicken4 · Schnittstelle10 · Items und DatenstrukturLektion 10 bis 17 blendest du im Lernpfad mit dem Schalter „Fortgeschritten“ ein.
- Übung 2Item-Zahlen-Trainer
- Übung 3Webhook-Simulator: Sender und Postfach
- WissensboxDie wichtigsten Dinge, in Bewegung
- Nächster TeilTeil 5: Bestellanforderung freigeben
ErikDu willst mehr als Selbstlernen? Dann lernst du n8n mit mir 1:1. Auf Anfrage bringe ich es auch Unternehmerinnen, Unternehmern und ganzen Teams bei. Erzähl mir im Erstgespräch, was du vorhast.
15 Minuten mit Erik