← Zurueck zu n8n
📖

Workflow Grundlagen

⚠️ Ungeprüft

Verstehe die Bausteine von n8n und erstelle deinen ersten Workflow.

⏱️ 20-30 Minuten 📊 Einfach
🔄 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:

  1. Ziehe vom Output-Punkt (rechts) eines Nodes
  2. Zum Input-Punkt (links) des nächsten Nodes
  3. 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.

Beispiel: Output eines Nodes
json
[
  {
    "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.

Expression Syntax
javascript
// 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:

Häufig verwendete Expressions
javascript
// 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:

  1. Node hinzufügen (z.B. Slack)
  2. Bei "Credential" auf "Create New" klicken
  3. Zugangsdaten eingeben (API Key, OAuth, etc.)
  4. 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:

  1. Node-Einstellungen öffnen (Zahnrad)
  2. "Continue On Fail" aktivieren
  3. Oder: Error Output mit separatem Pfad verbinden
  4. 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

  1. Neuen Workflow erstellen
  2. Klicke auf + und suche "Webhook"
  3. HTTP Method: POST
  4. Path: test-webhook

Schritt 2: Telegram Node

  1. Klicke auf + und suche "Telegram"
  2. Operation: Send Message
  3. Credential erstellen (Bot Token von @BotFather)
  4. Chat ID: Deine Chat ID
  5. Text: {{ 'Neue Nachricht: ' + $json.message }}

Schritt 3: Testen

  1. Klicke auf "Test Workflow"
  2. Webhook URL wird angezeigt
  3. Sende Test-Request:
Test-Request senden
bash
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:

javascript
// 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.

Hilfe bei komplexen Workflows?

Wir helfen dir bei der Planung und Umsetzung deiner Automatisierungen.

Beratung anfragen →