Workflow Grundlagen
⚠️ UngeprüftVerstehe die Bausteine von n8n und erstelle deinen ersten Workflow.
🔄 Was ist ein Workflow?
Ein Workflow ist eine automatisierte Abfolge von Aktionen. Stell dir vor: "Wenn X passiert, dann mache Y und Z."
Trigger → Aktion 1 → Aktion 2 → Ergebnis
Beispiel: Neue E-Mail mit Rechnung → PDF extrahieren → In Paperless speichern → Slack-Nachricht senden
🧱 Nodes - Die Bausteine
Nodes sind die einzelnen Bausteine eines Workflows. Jeder Node macht genau eine Sache.
⚡ Trigger Nodes
Starten den Workflow wenn etwas passiert
- • Webhook (HTTP Request empfangen)
- • Schedule (Zeitplan, z.B. täglich 9 Uhr)
- • Email Trigger (neue E-Mail)
- • App-spezifisch (Slack, Telegram, etc.)
⚙️ Action Nodes
Fuehren eine Aktion aus
- • HTTP Request (API aufrufen)
- • Send Email (E-Mail senden)
- • Slack (Nachricht senden)
- • Database (Daten speichern/lesen)
🔀 Logic Nodes
Steuern den Ablauf
- • IF (Bedingung prüfen)
- • Switch (mehrere Pfade)
- • Merge (Daten zusammenführen)
- • Loop (Wiederholen)
🔧 Transform Nodes
Veraendern Daten
- • Set (Werte setzen)
- • Code (JavaScript/Python)
- • Split Out (Array aufteilen)
- • Aggregate (Zusammenfassen)
Node hinzufuegen
Klicke auf das + Symbol oder druecke Tab um einen neuen Node hinzuzufuegen. Nutze die Suche um den richtigen Node zu finden.
🔗 Connections - Datenfluss
Connections verbinden Nodes und definieren wie Daten fliessen.
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Webhook │──────▶│ HTTP Req │──────▶│ Slack │
│ (Trigger) │ JSON │ (Action) │ JSON │ (Action) │
└─────────────┘ └─────────────┘ └─────────────┘
│
│ JSON (bei Fehler)
▼
┌─────────────┐
│ Email │
│ (Action) │
└─────────────┘ So verbindest du Nodes:
- Ziehe vom Output-Punkt (rechts) eines Nodes
- Zum Input-Punkt (links) des nächsten Nodes
- Die Verbindung wird als Linie angezeigt
Datenformat beachten
Daten fliessen als JSON zwischen Nodes. Jeder Node gibt ein Array von Items aus. Wenn ein Node 5 Items ausgibt, wird der nächste Node 5x ausgeführt (einmal pro Item).
📊 Datenstruktur verstehen
n8n arbeitet mit Items. Jeder Node empfängt und sendet Items im JSON-Format.
[
{
"json": {
"name": "Max Mustermann",
"email": "max@beispiel.de",
"amount": 150.00
}
},
{
"json": {
"name": "Anna Schmidt",
"email": "anna@beispiel.de",
"amount": 89.50
}
}
] Wichtige Konzepte:
| Begriff | Beschreibung |
|---|---|
| Item | Ein einzelnes Datenelement (z.B. eine E-Mail, ein Kontakt) |
| json | Die eigentlichen Daten eines Items |
| binary | Binärdaten (Dateien, Bilder, PDFs) |
| $input | Zugriff auf Input-Daten im aktuellen Node |
✨ Expressions - Dynamische Werte
Mit Expressions greifst du dynamisch auf Daten aus vorherigen Nodes zu.
Expressions werden in {{ }} geschrieben.
// Aktuelles Item
__LBRACE2__ $json.name __RBRACE2__ // → "Max Mustermann"
__LBRACE2__ $json.email __RBRACE2__ // → "max@beispiel.de"
// Verschachtelte Daten
__LBRACE2__ $json.address.city __RBRACE2__ // → "Berlin"
__LBRACE2__ $json.items[0].name __RBRACE2__ // → Erstes Element im Array
// Daten aus anderem Node
__LBRACE2__ $('HTTP Request').item.json.id __RBRACE2__ // → Daten vom Node "HTTP Request"
// Alle Items eines Nodes
__LBRACE2__ $('Webhook').all() __RBRACE2__ // → Array aller Items Nuetzliche Expressions:
// Datum & Zeit
__LBRACE2__ $now __RBRACE2__ // Aktuelles Datum/Zeit
__LBRACE2__ $today __RBRACE2__ // Heute (ohne Uhrzeit)
__LBRACE2__ $now.format('DD.MM.YYYY') __RBRACE2__ // → "15.01.2026"
// Text-Manipulation
__LBRACE2__ $json.name.toUpperCase() __RBRACE2__ // → "MAX MUSTERMANN"
__LBRACE2__ $json.email.split('@')[1] __RBRACE2__ // → "beispiel.de"
// Mathematik
__LBRACE2__ $json.price * 1.19 __RBRACE2__ // Preis + MwSt
__LBRACE2__ Math.round($json.amount) __RBRACE2__ // Runden
// Bedingungen (ternärer Operator)
__LBRACE2__ $json.status === 'active' ? 'Aktiv' : 'Inaktiv' __RBRACE2__
// Workflow-Info
__LBRACE2__ $workflow.name __RBRACE2__ // Name des Workflows
__LBRACE2__ $execution.id __RBRACE2__ // Aktuelle Execution ID Expression Editor
Klicke auf das fx Symbol neben einem Feld um den Expression Editor zu öffnen. Er zeigt dir verfügbare Daten und Funktionen an.
🔑 Credentials - Zugangsdaten
Credentials speichern Zugangsdaten sicher und verschlüsselt. API-Keys, Passwörter und Tokens werden nie im Workflow selbst gespeichert.
Credential erstellen:
- Node hinzufügen (z.B. Slack)
- Bei "Credential" auf "Create New" klicken
- Zugangsdaten eingeben (API Key, OAuth, etc.)
- Speichern - wird verschlüsselt abgelegt
Backup wichtig!
Credentials werden mit einem Encryption Key verschlüsselt. Ohne Backup des n8n-Volumes kannst du Credentials nicht wiederherstellen! Siehe Backup Guide.
API Key
Einfachste Methode. Key in Header oder URL.
OAuth2
Für Google, Microsoft, etc. Sicherer aber komplexer.
Basic Auth
Benutzername + Passwort. Für einfache APIs.
🚨 Error Handling
Workflows können fehlschlagen. Mit Error Handling reagierst du auf Fehler.
┌─────────────┐ ┌─────────────┐
│ Webhook │──────▶│ HTTP Req │──────▶ Erfolg ──▶ Slack
└─────────────┘ └─────────────┘
│
│ Error Output
▼
┌─────────────┐
│ Error Email │ ← Benachrichtigung bei Fehler
└─────────────┘ Error Workflow einrichten:
- Node-Einstellungen öffnen (Zahnrad)
- "Continue On Fail" aktivieren
- Oder: Error Output mit separatem Pfad verbinden
- Bei Fehler: Benachrichtigung senden oder loggen
Global Error Workflow
Unter Settings → Workflow Settings kannst du einen Error Workflow definieren, der bei jedem Fehler in allen Workflows ausgeführt wird. Perfekt für zentrale Benachrichtigungen.
🚀 Dein erster Workflow
Lass uns einen einfachen Workflow bauen: Webhook → Telegram Nachricht
Schritt 1: Trigger erstellen
- Neuen Workflow erstellen
- Klicke auf + und suche "Webhook"
- HTTP Method:
POST - Path:
test-webhook
Schritt 2: Telegram Node
- Klicke auf + und suche "Telegram"
- Operation:
Send Message - Credential erstellen (Bot Token von @BotFather)
- Chat ID: Deine Chat ID
- Text:
{{ 'Neue Nachricht: ' + $json.message }}
Schritt 3: Testen
- Klicke auf "Test Workflow"
- Webhook URL wird angezeigt
- Sende Test-Request:
curl -X POST https://n8n.deine-domain.de/webhook/test-webhook \
-H "Content-Type: application/json" \
-d '{"message": "Hallo von curl!"}' Geschafft!
Wenn alles funktioniert, erhältst du eine Telegram-Nachricht. Aktiviere den Workflow mit dem Toggle oben rechts für den Produktiv-Betrieb.
💡 Best Practices
Workflows benennen
Aussagekräftige Namen wie "Invoice-to-Paperless" statt "Workflow 1"
Sticky Notes nutzen
Dokumentiere komplexe Workflows mit Sticky Notes (rechtsklick → Add Sticky Note)
Nodes umbenennen
Doppelklick auf Node-Name. "Get Customer Data" statt "HTTP Request"
Einzelne Nodes testen
Klicke auf "Execute Node" um nur einen Node zu testen
Versionierung
Exportiere Workflows als JSON und speichere sie in Git
Haeufige Fragen
Wie debugge ich einen Workflow?
- Klicke auf einen Node um die Output-Daten zu sehen
- "Execute Node" führt nur diesen Node aus
- Nutze den "Code" Node für console.log()
- Execution History zeigt alle Durchläufe
Warum wird mein Workflow nicht ausgeloest?
- Ist der Workflow aktiviert (Toggle oben rechts)?
- Bei Webhook: Nutzt du die Production URL (nicht Test URL)?
- Bei Schedule: Stimmt die Zeitzone?
- Prüfe die Execution History auf Fehler
Wie kann ich Daten zwischen Nodes teilen?
Mit Expressions greifst du auf Daten vorheriger Nodes zu:
// Direkt verbundener Node
__LBRACE2__ $json.fieldName __RBRACE2__
// Bestimmter Node (nach Name)
__LBRACE2__ $('Node Name').item.json.fieldName __RBRACE2__
// Alle Items eines Nodes
__LBRACE2__ $('Node Name').all() __RBRACE2__ Wie verarbeite ich mehrere Items?
n8n verarbeitet Items automatisch. Wenn ein Node 10 Items ausgibt, wird der nächste Node 10x ausgeführt. Nutze Loop Over Items für komplexere Schleifen oder Aggregate um Items zusammenzufassen.
Naechste Schritte
Du kennst jetzt die Grundlagen! Schau dir praktische Beispiele an:
Hilfe bei komplexen Workflows?
Wir helfen dir bei der Planung und Umsetzung deiner Automatisierungen.
Beratung anfragen →