Zum Inhalt

_# n8n Workflow Automation Cheat Sheet

Im Überblick

n8n ist eine leistungsstarke, Open-Source-Workflow-Automatisierungsplattform, die es Nutzern ermöglicht, verschiedene Systeme, Services und APIs zu verbinden, um automatisierte Workflows mit minimaler Codierung zu erstellen. Was n8n von anderen Automatisierungswerkzeugen unterscheidet, ist seine einzigartige Kombination aus Flexibilität, Erweiterbarkeit und KI-Fähigkeiten, die es sowohl für einfache Automatisierungen als auch für komplexe Unternehmensabläufe geeignet macht.

Als selbst-hostable Lösung gibt n8n den Nutzern vollständige Kontrolle über ihre Daten und Workflows, indem er sich mit Datenschutz- und Sicherheitsfragen befasst, die mit Cloud-only Lösungen kommen. Seine knotenbasierte visuelle Schnittstelle ermöglicht eine intuitive Workflow-Erstellung und bietet weiterhin die Tiefen- und Anpassungsmöglichkeiten, die technische Benutzer benötigen. Mit Unterstützung von JavaScript-Transformationen, bedingter Logik, Fehlerbehandlung und einer wachsenden Integrationsbibliothek hat sich n8n als Favorit bei Entwicklern und technischen Teams entwickelt, die Prozesse automatisieren wollen, ohne die Kontrolle oder Fähigkeiten zu gefährden.

In der KI-Ära hat sich n8n als Schlüsselinstrument für die Orchestrierung von KI-Workflows positioniert, mit integrierten Knoten für populäre KI-Dienste und der Fähigkeit, kundenspezifische Integrationen mit jedem API-accessible KI-Modell oder Service zu erstellen. Dies macht es zu einem unverzichtbaren Werkzeug für Organisationen, die KI in ihre Geschäftsprozesse integrieren möchten, während sie die Governance und Kontrolle beibehalten.

Installation und Inbetriebnahme

Self-Hosted Installation

```bash

Using npm

npm install n8n -g n8n start

Using Docker

docker run -it --rm \ --name n8n \ -p 5678:5678 \ -v ~/.n8n:/home/node/.n8n \ n8nio/n8n

Using Docker Compose

Create docker-compose.yml with:

version: '3'

services:

n8n:

image: n8nio/n8n

restart: always

ports:

- "5678:5678"

volumes:

- ~/.n8n:/home/node/.n8n

environment:

- N8N_ENCRYPTION_KEY=your-secret-key

- N8N_PROTOCOL=https

- N8N_HOST=n8n.example.com

docker-compose up -d ```_

Cloud Installation

n8n bietet eine Cloud-Version unter n8n.cloud mit verschiedenen Preisträgern, von frei nach Unternehmen.

Umweltkonfiguration

```bash

Basic configuration

export N8N_ENCRYPTION_KEY=your-secret-key export N8N_PROTOCOL=https export N8N_HOST=n8n.example.com export N8N_PORT=5678

Database configuration (PostgreSQL)

export DB_TYPE=postgresdb export DB_POSTGRESDB_HOST=postgres export DB_POSTGRESDB_PORT=5432 export DB_POSTGRESDB_DATABASE=n8n export DB_POSTGRESDB_USER=n8n export DB_POSTGRESDB_PASSWORD=password

Queue configuration (Redis)

export QUEUE_BULL_REDIS_HOST=redis export QUEUE_BULL_REDIS_PORT=6379

Authentication

export N8N_BASIC_AUTH_ACTIVE=true export N8N_BASIC_AUTH_USER=admin export N8N_BASIC_AUTH_PASSWORD=password ```_

Kernkonzepte

Workflows

Workflows sind die wichtigsten Bausteine in n8n. Sie bestehen aus Knoten, die miteinander verbunden sind, um einen Prozessfluss zu definieren.

Nodes

Nodes repräsentieren Aktionen, Trigger oder Operationen in einem Workflow. Jeder Knoten hat spezifische Funktionalitäten, wie das Senden einer E-Mail, das Abfragen einer Datenbank oder die Verarbeitung von Daten.

Verbindungen

Verbindungen verbinden Knoten miteinander und definieren den Datenfluss von einem Knoten zu einem anderen.

Triggers

Trigger sind spezielle Knoten, die eine Workflow-Ausführung, wie Webhooks, Zeitplan oder Ereignisse von externen Systemen starten.

Executions

Ausführungsbeispiele eines Arbeitsablaufs werden manuell oder automatisch ausgelöst.

oder Grundlagen der Workflow-Erstellung

Einen neuen Workflow erstellen

ANHANG Navigieren Sie zur n8n Schnittstelle (Standard: n8n.example.com) 2. Klicken Sie auf "Workflows" in der Seitenleiste 3. Klicken Sie auf "Neuer Workflow erstellen" 4. Geben Sie einen Namen für Ihren Workflow ein 5. Klicken Sie auf "Save"

Hinzufügen und Verbinden von Nodes

ANHANG Klicken Sie auf die Schaltfläche "+" um einen Knoten hinzuzufügen 2. Suche nach dem gewünschten Knotentyp 3. Konfigurieren der Einstellungen des Knotens 4. Verbindungsknoten durch Ziehen von dem Ausgangspunkt eines Knotens zum Eingangspunkt eines anderen Knotens 5. Klicken Sie auf "Execute Workflow" um zu testen

Basic Workflow Beispiel

```javascript // HTTP Request Node Configuration \\{ "url": "https://api.example.com/data", "method": "GET", "authentication": "Basic Auth", "username": "user", "password": "pass" \\}

// Function Node to Transform Data function transform(items) \\{ return items.map(item => \\{ return \\{ id: item.json.id, name: item.json.name.toUpperCase(), created: new Date(item.json.created_at).toISOString() \\}; \\}); \\}

// Send Email Node Configuration \\{ "to": "recipient@example.com", "subject": "Data Report", "text": "=== Please find the data report attached ===", "attachments": "=\\{\\{ $json.report \\}\\}" \\} ```_

Trigger und Scheduling

Webhook Trigger

```javascript // Webhook Node Configuration \\{ "path": "incoming-data", "responseMode": "onReceived", "responseData": "firstEntryJson" \\}

// Access in browser or via curl // https://n8n.example.com/webhook/incoming-data // curl -X POST -H "Content-Type: application/json" -d '\\{"data":"test"\\}' https://n8n.example.com/webhook/incoming-data ```_

Schedule Trigger

```javascript // Cron Node Configuration \\{ "triggerTimes": \\{ "item": [ \\{ "mode": "everyWeek", "hour": 9, "minute": 0, "dayOfWeek": 1 // Monday \\} ] \\} \\}

// Every 5 minutes \\{ "triggerTimes": \\{ "item": [ \\{ "mode": "everyX", "unit": "minutes", "value": 5 \\} ] \\} \\} ```_

Trigger auf Dateiänderungen

javascript // Watch Files Node Configuration \\\\{ "folder": "/data/incoming", "includeSubfolders": true, "fileExtensions": [ "csv", "xlsx" ] \\\\}_

oder Datenverarbeitung

Funktion Node

``javascript // Basic transformation function transform(items) \\\\{ return items.map(item => \\\\{ return \\\\{ ...item.json, fullName:$\{item.json.firstName\} $\{item.json.lastName\}`, age: calculateAge(item.json.birthDate) \\}; \\}); \\}

function calculateAge(birthDate) \\{ const today = new Date(); const birth = new Date(birthDate); let age = today.getFullYear() - birth.getFullYear(); const monthDiff = today.getMonth() - birth.getMonth();

if (monthDiff < 0||(monthDiff === 0 && today.getDate() < birth.getDate())) \\{ age--; \\}

return age; \\}

// Filtering data function filter(items) \\{ return items.filter(item => \\{ return item.json.status === 'active' && item.json.age > 18; \\}); \\}

// Aggregating data function aggregate(items) \\{ const result = \\{ count: items.length, sum: 0, average: 0, min: Infinity, max: -Infinity \\};

items.forEach(item => \\{ const value = item.json.amount; result.sum += value; result.min = Math.min(result.min, value); result.max = Math.max(result.max, value); \\});

result.average = result.sum / result.count;

return [\\{ json: result \\}]; \\} ```_

Split in Batches Node

javascript // Split In Batches Node Configuration \\\\{ "batchSize": 10, "options": \\\\{ "includeBatchIndex": true \\\\} \\\\}_

Merge Node

```javascript // Merge Node Configuration \\{ "mode": "merge", "mergeByFields": \\{ "values": [ \\{ "field1": "id", "field2": "userId" \\} ] \\} \\}

// Concatenate mode \\{ "mode": "concatenate" \\}

// Multiplex mode (combine all items from all inputs) \\{ "mode": "multiplex" \\} ```_

Fehlerbehandlung und Durchflusskontrolle

Error Workflow

```javascript // Error Trigger Node // This node triggers when another workflow fails

// Error Workflow Example // 1. Error Trigger Node // 2. Send Email Node with error details \\{ "to": "admin@example.com", "subject": "Workflow Error: \\{\\{ $workflow.name \\}\\}", "text": "Error in workflow: \\{\\{ $workflow.name \\}\\}\n\nError: \\{\\{ $json.error \\}\\}\n\nExecution ID: \\{\\{ $execution.id \\}\\}" \\} ```_

IF Node

```javascript // IF Node Configuration \\{ "conditions": \\{ "string": [ \\{ "value1": "=\\{\\{ $json.status \\}\\}", "operation": "equal", "value2": "success" \\} ] \\} \\}

// Multiple conditions with AND/OR \\{ "conditions": \\{ "string": [ \\{ "value1": "=\\{\\{ $json.status \\}\\}", "operation": "equal", "value2": "pending" \\} ], "number": [ \\{ "value1": "=\\{\\{ $json.amount \\}\\}", "operation": "larger", "value2": 1000 \\} ], "boolean": [ \\{ "value1": "=\\{\\{ $json.isVIP \\}\\}", "operation": "equal", "value2": true \\} ], "combinationMode": "any" // "all" for AND, "any" for OR \\} \\} ```_

Switch Node

javascript // Switch Node Configuration \\\\{ "rules": \\\\{ "values": [ \\\\{ "conditions": \\\\{ "string": [ \\\\{ "value1": "=\\\\{\\\\{ $json.status \\\\}\\\\}", "operation": "equal", "value2": "new" \\\\} ] \\\\}, "outputIndex": 0 \\\\}, \\\\{ "conditions": \\\\{ "string": [ \\\\{ "value1": "=\\\\{\\\\{ $json.status \\\\}\\\\}", "operation": "equal", "value2": "processing" \\\\} ] \\\\}, "outputIndex": 1 \\\\}, \\\\{ "conditions": \\\\{ "string": [ \\\\{ "value1": "=\\\\{\\\\{ $json.status \\\\}\\\\}", "operation": "equal", "value2": "completed" \\\\} ] \\\\}, "outputIndex": 2 \\\\} ] \\\\}, "fallbackOutput": 3 \\\\}_

Wait Node

```javascript // Wait Node Configuration \\{ "amount": 5, "unit": "minutes" \\}

// Wait until specific date \\{ "dateTime": "=\\{\\{ new Date($json.scheduledTime).toISOString() \\}\\}" \\} ```_

Arbeiten mit APIs

HTTP Request Node

```javascript // Basic GET request \\{ "url": "https://api.example.com/users", "method": "GET", "authentication": "None", "options": \\{\\} \\}

// POST request with JSON body \\{ "url": "https://api.example.com/users", "method": "POST", "authentication": "Bearer Token", "token": "\\{\\{ $node['Get Token'].json.access_token \\}\\}", "bodyContentType": "json", "body": \\{ "name": "\\{\\{ $json.name \\}\\}", "email": "\\{\\{ $json.email \\}\\}", "role": "user" \\}, "options": \\{ "redirect": \\{ "follow": true, "maxRedirects": 5 \\}, "timeout": 10000 \\} \\}

// Handling pagination \\{ "url": "https://api.example.com/users", "method": "GET", "authentication": "None", "options": \\{ "qs": \\{ "page": "=\\{\\{ $parameter.page||1 \\}\\}", "limit": 100 \\} \\} \\} ```_

OAuth Authentication

javascript // OAuth2 Configuration \\\\{ "authentication": "OAuth2", "oAuth2Api": "custom", "authUrl": "https://auth.example.com/oauth/authorize", "accessTokenUrl": "https://auth.example.com/oauth/token", "clientId": "your-client-id", "clientSecret": "your-client-secret", "scope": "read write", "authQueryParameters": "", "authentication": "body" \\\\}_

Webhook Response Node

javascript // Webhook Response Node Configuration \\\\{ "respondWith": "json", "responseBody": "=\\\\{\\\\{ \\\\{ success: true, data: $json.processedData \\\\} \\\\}\\\\}", "options": \\\\{ "responseCode": 200, "responseHeaders": \\\\{ "X-Powered-By": "n8n" \\\\} \\\\} \\\\}_

Datenbankeinsätze

Postgres Node

```javascript // Query execution \\{ "operation": "executeQuery", "query": "SELECT * FROM users WHERE status = $1 AND created_at > $2", "values": [ "=\\{\\{ $json.status \\}\\}", "=\\{\\{ $json.date \\}\\}" ] \\}

// Insert operation \\{ "operation": "insert", "table": "users", "columns": "firstName,lastName,email,createdAt", "values": [ "=\\{\\{ $json.first_name \\}\\}", "=\\{\\{ $json.last_name \\}\\}", "=\\{\\{ $json.email \\}\\}", "=\\{\\{ new Date().toISOString() \\}\\}" ] \\}

// Update operation \\{ "operation": "update", "table": "users", "updateKey": "id", "columns": "status,updatedAt", "values": [ "active", "=\\{\\{ new Date().toISOString() \\}\\}" ] \\} ```_

MongoDB Node

```javascript // Find documents \\{ "operation": "find", "collection": "users", "options": \\{ "limit": 100, "sort": \\{ "createdAt": -1 \\} \\}, "query": "=\\{\\{ \\{ status: $json.status \\} \\}\\}" \\}

// Insert document \\{ "operation": "insertOne", "collection": "logs", "document": "=\\{\\{ \\{ action: $json.action, userId: $json.userId, timestamp: new Date(), details: $json.details \\} \\}\\}" \\}

// Update document \\{ "operation": "updateOne", "collection": "users", "filter": "=\\{\\{ \\{ id: $json.userId \\} \\}\\}", "update": "=\\{\\{ \\{ $set: \\{ status: $json.newStatus, updatedAt: new Date() \\} \\} \\}\\}", "options": \\{ "upsert": false \\} \\} ```

Dateioperationen

Binary Files Node lesen

```javascript // Read Binary Files Node Configuration \\{ "filePath": "/data/reports/latest.pdf" \\}

// Read multiple files with pattern \\{ "filePath": "/data/reports/*.csv" \\} ```_

Binary File Node schreiben

javascript // Write Binary File Node Configuration \\\\{ "filePath": "=\\\\{\\\\{ '/data/processed/' + $json.filename \\\\}\\\\}", "fileName": "=\\\\{\\\\{ $json.filename \\\\}\\\\}", "binaryPropertyName": "data", "options": \\\\{ "encoding": "utf8", "createParentPath": true \\\\} \\\\}_

CSV Node ```javascript // Parse CSV \\{ "operation": "parse", "options": \\{ "headerRow": true, "delimiter": ",", "includeEmptyLines": false, "skipLines": 0 \\} \\}

// Create CSV \\{ "operation": "create", "options": \\{ "headerRow": true, "delimiter": ",", "includeEmptyLines": false \\} \\} ```_

• KI Integration

OpenAI Node

```javascript // Text completion \\{ "authentication": "apiKey", "apiKey": "\\{\\{ $node['Credentials'].json.openai_api_key \\}\\}", "operation": "completion", "model": "gpt-4", "options": \\{ "prompt": "=\\{\\{ 'Summarize the following text in 3 bullet points:\n\n' + $json.text \\}\\}", "maxTokens": 500, "temperature": 0.7, "topP": 1, "presencePenalty": 0, "frequencyPenalty": 0, "stop": [] \\} \\}

// Chat completion \\{ "authentication": "apiKey", "apiKey": "\\{\\{ $node['Credentials'].json.openai_api_key \\}\\}", "operation": "chatCompletion", "messages": "=\\{\\{ [ \\{ role: 'system', content: 'You are a helpful assistant.' \\}, \\{ role: 'user', content: $json.userMessage \\} ] \\}\\}", "model": "gpt-4", "options": \\{ "temperature": 0.7, "maxTokens": 1000 \\} \\} ```_

Anthropic Node

javascript // Claude message \\\\{ "authentication": "apiKey", "apiKey": "\\\\{\\\\{ $node['Credentials'].json.anthropic_api_key \\\\}\\\\}", "operation": "message", "model": "claude-3-opus-20240229", "messages": "=\\\\{\\\\{ [ \\\\{ role: 'user', content: $json.userMessage \\\\} ] \\\\}\\\\}", "options": \\\\{ "temperature": 0.7, "maxTokens": 1000 \\\\} \\\\}_

AI Document Processing

javascript // Document processing workflow // 1. Read Binary Files Node (PDF) // 2. PDF Extract Node \\\\{ "operation": "extractText" \\\\} // 3. Text Splitter Node \\\\{ "operation": "splitByCharacter", "options": \\\\{ "chunkSize": 1000, "chunkOverlap": 200 \\\\} \\\\} // 4. OpenAI Node (for each chunk) \\\\{ "operation": "chatCompletion", "messages": "=\\\\{\\\\{ [ \\\\{ role: 'system', content: 'Extract key information from this document chunk.' \\\\}, \\\\{ role: 'user', content: $json.text \\\\} ] \\\\}\\\\}", "model": "gpt-4", "options": \\\\{ "temperature": 0.3 \\\\} \\\\} // 5. Merge Node (combine all extracted information) // 6. OpenAI Node (final summary) \\\\{ "operation": "chatCompletion", "messages": "=\\\\{\\\\{ [ \\\\{ role: 'system', content: 'Create a comprehensive summary of this document based on the extracted information.' \\\\}, \\\\{ role: 'user', content: $json.extractedInfo \\\\} ] \\\\}\\\\}", "model": "gpt-4", "options": \\\\{ "temperature": 0.5 \\\\} \\\\}_

Erweiterte Eigenschaften

Subworkflows

```javascript // Execute Workflow Node Configuration \\{ "workflowId": 123, "options": \\{ "waitForResponse": true \\} \\}

// Passing data to subworkflow \\{ "workflowId": 123, "options": \\{ "waitForResponse": true \\}, "parameters": "=\\{\\{ \\{ userId: $json.id, action: 'process', data: $json.payload \\} \\}\\}" \\} ```_

Erstellungsmanagement

javascript // Access credentials in HTTP Request Node \\\\{ "url": "https://api.example.com/data", "method": "GET", "authentication": "Basic Auth", "username": "=\\\\{\\\\{ $credentials.username \\\\}\\\\}", "password": "=\\\\{\\\\{ $credentials.password \\\\}\\\\}" \\\\}_

Webhook Authentication

```javascript // Webhook Node with Basic Auth \\{ "path": "secure-endpoint", "authentication": \\{ "basicAuth": \\{ "user": "admin", "password": "secret" \\} \\}, "responseMode": "onReceived", "responseData": "firstEntryJson" \\}

// Webhook Node with Custom Auth (Header) \\{ "path": "api-endpoint", "httpMethod": "POST", "authentication": \\{ "customAuth": \\{ "checkOn": "header", "name": "X-API-KEY", "value": "your-secret-api-key" \\} \\}, "responseMode": "lastNode", "responseData": "firstEntryJson" \\} ```_

Rate Limiting

javascript // Limit Node Configuration \\\\{ "maxConcurrency": 5, "options": \\\\{ "batchSize": 10, "batchInterval": 1000 \\\\} \\\\}_

Workflow Variables

```javascript // Set Variable Node \\{ "variableName": "totalAmount", "value": "=\\{\\{ $json.amount \\}\\}" \\}

// Get Variable Node \\{ "variableName": "totalAmount" \\}

// Using variables in expressions "=\\{\\{ $vars.totalAmount * 1.1 \\}\\}" // Add 10% tax ```_

Beschäftigung und Produktion

Umgebungsvariablen

```bash

Set environment variables for production

export N8N_ENCRYPTION_KEY=your-production-key export N8N_PROTOCOL=https export N8N_HOST=n8n.yourdomain.com export N8N_PORT=5678 export N8N_BASIC_AUTH_ACTIVE=true export N8N_BASIC_AUTH_USER=admin export N8N_BASIC_AUTH_PASSWORD=secure-password

Database configuration

export DB_TYPE=postgresdb export DB_POSTGRESDB_HOST=production-db.yourdomain.com export DB_POSTGRESDB_PORT=5432 export DB_POSTGRESDB_DATABASE=n8n_prod export DB_POSTGRESDB_USER=n8n_user export DB_POSTGRESDB_PASSWORD=db-password

Queue configuration

export QUEUE_BULL_REDIS_HOST=redis.yourdomain.com export QUEUE_BULL_REDIS_PORT=6379 ```_

Docker Compose for Production

```yaml version: '3.8'

services: n8n: image: n8nio/n8n:latest restart: always ports: - "5678:5678" environment: - N8N_ENCRYPTION_KEY=\(\\\\{N8N_ENCRYPTION_KEY\\\\} - N8N_PROTOCOL=https - N8N_HOST=\)\\{N8N_HOST\\} - N8N_PORT=5678 - N8N_BASIC_AUTH_ACTIVE=true - N8N_BASIC_AUTH_USER=\(\\\\{N8N_BASIC_AUTH_USER\\\\} - N8N_BASIC_AUTH_PASSWORD=\)\\{N8N_BASIC_AUTH_PASSWORD\\} - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=n8n - DB_POSTGRESDB_USER=\(\\\\{DB_USER\\\\} - DB_POSTGRESDB_PASSWORD=\)\\{DB_PASSWORD\\} - QUEUE_BULL_REDIS_HOST=redis - QUEUE_BULL_REDIS_PORT=6379 - EXECUTIONS_PROCESS=main - EXECUTIONS_MODE=queue - GENERIC_TIMEZONE=UTC volumes: - n8n_data:/home/node/.n8n depends_on: - postgres - redis

postgres: image: postgres:14 restart: always environment: - POSTGRES_DB=n8n - POSTGRES_USER=\(\\\\{DB_USER\\\\} - POSTGRES_PASSWORD=\)\\{DB_PASSWORD\\} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U $\\{DB_USER\\} -d n8n"] interval: 10s timeout: 5s retries: 5

redis: image: redis:7-alpine restart: always volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5

volumes: n8n_data: postgres_data: redis_data: ```_

Scaling with Multiple Workers

```bash

Main process (API, UI, Webhook)

export EXECUTIONS_PROCESS=main export EXECUTIONS_MODE=queue

Worker processes (execute workflows)

export EXECUTIONS_PROCESS=worker export EXECUTIONS_MODE=queue ```_

Backup and Restore

```bash

Export workflows

n8n export:workflow --all --output=workflows-backup.json

Import workflows

n8n import:workflow --input=workflows-backup.json

Backup credentials (encrypted)

n8n export:credentials --all --output=credentials-backup.json

Import credentials

n8n import:credentials --input=credentials-backup.json --separate ```_

oder Best Practices

Workflow Organization

  • Nennungsübereinkommen Verwenden Sie klare, beschreibende Namen für Workflows und Nodes
  • ** Aussprache**: Beschreibungen zu Workflows und komplexen Knoten hinzufügen
  • ** Modularisierung*: Komplexe Prozesse in Subworkflows brechen
  • **Tags*: Verwenden Sie Tags, um Workflows zu kategorisieren und zu organisieren
  • Version Control: Export wichtiger Workflows regelmäßig

Leistungsoptimierung

  • **Batch Processing*: Verwenden Sie Split In Batches für große Datensätze
  • Pagination: Implementieren Sie richtige Pagination für API-Anrufe
  • Caching: Verwenden Sie Set/Get Variable Nodes, um wiederholte Daten zu speichern
  • **Limit Concurrency*: Verwenden Sie Limit-Knoten, um überwältigende externe Dienste zu verhindern
  • Datenbankeffizienz: Schreiben Sie effiziente Abfragen und verwenden Sie Indexe

Error Handling

  • **Error Workflows*: Dedizierte Fehlerbehandlungs-Workflows erstellen
  • **Retry Mechanisms*: Implementierung von Retry-Logik für transiente Fehler
  • Validation: Gültige Daten vor der Verarbeitung
  • Logging: Wichtige Ereignisse und Fehler melden
  • **Anmerkungen*: Alarme für kritische Fehler einrichten

Sicherheit

  • **Credentials*: Verwenden Sie das eingebaute Anmeldesystem anstelle von Hardcoding
  • ** Umgebungsvariablen*: Speichern Sie sensible Informationen in Umgebungsvariablen
  • **Authentication*: Secure Webhook Endpunkte mit Authentifizierung
  • Access Control: Implementieren von richtigen Benutzerberechtigungen
  • **Audit Logs*: Workflow-Ausführungen und Änderungen überwachen

Fehlerbehebung

Häufige Fragen

Workflow Nicht Triggering - Cause: Falsche Trigger-Konfiguration, Webhook-URL nicht zugänglich oder Terminierungsprobleme - Solution: Überprüfen Sie die Triggereinstellungen, überprüfen Sie die Webhook Zugänglichkeit und bestätigen Sie die Zeitzoneneinstellungen

Keine Ausführunfälle - Cause: Invalides Datenformat, fehlende benötigte Felder oder API-Ratengrenzen - Solution: Verwenden Sie Funktionsknoten, um Daten zu validieren und zu transformieren, Fehlerbehandlung durchzuführen und die Geschwindigkeitsbegrenzung hinzuzufügen

Leistungen - ** Ursache**: Verarbeitung großer Datensätze, ineffiziente Abfragen oder Ressourcenzwänge - Lösung: Implementieren Sie die Batch-Verarbeitung, optimieren Sie die Datenbankabfragen und skalieren Sie n8n-Einsatz

Authentication Fehler - Cause: Ausgenommene Anmeldeinformationen, falsche API-Schlüssel oder OAuth-Token-Probleme - Lösung: Aktualisieren Sie Anmeldeinformationen, überprüfen Sie API-Schlüsselrechte und aktualisieren Sie OAuth-Tokens

--

*Diese umfassende n8n-Cheatsheet bietet alles, was nötig ist, um anspruchsvolle Workflow-Automatisierungen aufzubauen. Von grundlegender Einrichtung bis hin zu fortschrittlichen Produktions-Bereitstellungsmustern, verwenden Sie diese Beispiele und Best Practices, um leistungsstarke, flexible Automatisierungs-Workflows mit n8n vielseitiger Plattform zu erstellen. *