n8n Monitoring & Alerts: Fehler automatisch an Microsoft Teams senden

8. September 2025

n8n Monitoring & Alerts: Fehler automatisch an Microsoft Teams senden

In diesem Leitfaden zeige ich dir, wie du n8n-Fehler automatisch in Microsoft Teams versendest – sauber formatiert, mit Kontext zur fehlgeschlagenen Ausführung und robust gegen Rate Limits. Du lernst außerdem sinnvolle Fallback-Optionen (Graph-API, Teams Workflows) kennen und bekommst Best Practices für den Betrieb.

Hinweis: Für Self-Hosting-Grundlagen siehe Setup-Artikel und Härtung/Backups


Warum das Ganze?

Wenn ein Flow in der Produktion fehlschlägt, zählt jede Minute. Ein zentraler Fehler-Feed in Teams stellt sicher, dass dein Team sofort reagieren kann: mit Link zur n8n-Ausführung, Stacktrace, letztem Node und klaren nächsten Schritten. n8n bringt dafür Error Workflows mit – ein dediziertes Alarm-System, das bei jedem Fehler automatisch startet.


Überblick: Lösungsarchitektur

  1. n8n Error Workflow mit Error Trigger als Startnode
  2. Aufbereitung der Fehlerinformationen (Titel, Zusammenfassung, Deep-Link zur Ausführung)
  3. Versand an Teams über eine der folgenden Optionen:
    • Incoming Webhook (einfach & schnell; Microsoft-Hinweise zu Connectors beachten)
    • Microsoft Graph API (voller Funktionsumfang, granularere Berechtigungen)
    • Teams „Workflows" App (No-Code-Option; „When a Teams webhook request is received")

Voraussetzungen

  • n8n-Instanz (Self-hosted oder Cloud) mit Zugriff auf Executions
  • Microsoft Teams-Kanal für Alerts
  • Für Incoming Webhook: Berechtigung zum Hinzufügen eines Kanalkonnektors (Tenant-Policy prüfen)
  • Für Graph API: Azure App Registration, passende Permissions (z.B. ChannelMessage.Send), Token-Handling

1) Error-Workflow in n8n anlegen

  1. Neuen Workflow erstellen und Startnode Error Trigger setzen
  2. Produktions-Workflow öffnen → Settings → Error workflow auswählen
  3. Speichern – der Error-Workflow startet nun automatisch bei jedem Fehler

Tipp: Der Error Trigger liefert strukturierte Daten wie execution.id, execution.url, lastNodeExecuted, error.message, error.stack. Bei Trigger-Fehlern weicht die Struktur leicht ab (mehr Daten in trigger{} als in execution{}).


2) Teams-Empfänger wählen

OptionVorteileNachteileGeeignet für
Incoming WebhookSehr einfach, schnell, Adaptive Cards möglichMicrosoft 365 Connectors werden schrittweise eingeschränkt/abgeschafft; Tenant-Policy kann blockierenSchneller Start, PoC
Microsoft Graph APIVoller Funktionsumfang, langfristig stabilAzure-App + Permissions, OAuth Token HandlingEnterprise, Compliance
Teams WorkflowsNo-Code, integrierte VorlagenBindung an Benutzer/Owner, EinschränkungenLow-Code-Teams, Fachbereiche

Variante A: Incoming Webhook (einfach & schnell)

Warnung: Microsoft reduziert/ersetzt klassische Connectors schrittweise. Prüfe, ob Incoming Webhook in deinem Tenant noch verfügbar ist.

A1 – Webhook in Teams einrichten

  • Im gewünschten Kanal: App hinzufügen → Incoming Webhook → Namen/Icon wählen → Webhook-URL kopieren
  • Die URL sicher im n8n Credentials Store ablegen

A2 – n8n Nodes verbinden

  • Error Trigger → optional Function (Felder mappen/kürzen) → HTTP Request (POST) zur Webhook-URL
  • Header: Content-Type: application/json

Beispiel: Adaptive Card (kompakt)

{
  "type": "message",
  "attachments": [
    {
      "contentType": "application/vnd.microsoft.card.adaptive",
      "content": {
        "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
        "type": "AdaptiveCard",
        "version": "1.4",
        "body": [
          {
            "type": "TextBlock",
            "size": "Large",
            "weight": "Bolder",
            "text": "n8n Fehler-Alarm"
          },
          {
            "type": "TextBlock",
            "wrap": true,
            "text": "${$json.execution.error.message}"
          },
          {
            "type": "TextBlock",
            "isSubtle": true,
            "wrap": true,
            "text": "Workflow: ${$json.workflow.name} • Node: ${$json.execution.lastNodeExecuted}"
          },
          {
            "type": "TextBlock",
            "wrap": true,
            "text": "Stacktrace (gekürzt): ${$json.execution.error.stack?.slice(0,500) + '…'}"
          },
          {
            "type": "ActionSet",
            "actions": [
              {
                "type": "Action.OpenUrl",
                "title": "Execution öffnen",
                "url": "${$json.execution.url}"
              }
            ]
          }
        ]
      }
    }
  ]
}

Test via cURL:

curl -H 'Content-Type: application/json' \
  -d '{"text":"Hello from n8n"}' \
  https://outlook.office.com/webhook/...   # deine Teams-Webhook-URL

Rate Limits: Bei 429-Antworten Exponential Backoff verwenden. Webhooks haben dokumentierte Grenzwerte.


Variante B: Microsoft Graph API (zukunftssicher)

Wenn Connectors blockiert sind oder du mehr Kontrolle benötigst, versende Nachrichten per Graph API:

  1. Azure App Registration erstellen, passende Permissions vergeben (z.B. ChannelMessage.Send/Group.ReadWrite.All), Admin Consent einholen
  2. In n8n: HTTP Request mit OAuth2-Credential zum Graph-Endpoint, z.B. POST /teams/{team-id}/channels/{channel-id}/messages

Beispiel-Body (vereinfacht):

{
  "body": {
    "contentType": "html",
    "content": "<b>n8n Fehler:</b> {{$json.execution.error.message}}<br/>Workflow: {{$json.workflow.name}}<br/><a href='{{$json.execution.url}}'>Execution öffnen</a>"
  }
}

Hinweis: Teams hat HTML-Einschränkungen – nicht alle Tags/Styles sind erlaubt.


Konfiguration & Sicherheit

  • Secrets/URLs im Credentials Store speichern, niemals im Node hardcoden
  • Least Privilege: Für Graph API nur benötigte Permissions vergeben
  • PII/Logs: Stacktraces können sensible Daten enthalten → filtern/kürzen
  • Rate Limits: Webhook & Graph API drosseln → Backoff/Retry einplanen
  • Tenant-Policy: Prüfen, ob Connectors erlaubt oder eingeschränkt sind

Best Practices & häufige Fehlerquellen

  • Einen Error-Workflow für mehrere Flows verwenden; Metadaten per Expressions dynamisch generieren
  • Trigger-Fehler abfangen: Payload-Struktur unterscheidet sich (Trigger vs. Node)
  • Deduplication: Wiederholte Retries nicht mehrfach posten (Hash/Key verwenden)
  • Alert-Hygiene: Noise vermeiden (nur „hard fails", Schwellwerte definieren)
  • Deep-Links: execution.url mitsenden → Ein Klick zur Root Cause

Praxisbeispiel: Minimaler n8n Error-Flow

Nodes:

  1. Error Trigger
  2. Set/Function – Felder mappen:
    • title: n8n Fehler – {{$json.workflow.name}}
    • summary: {{$json.execution.error.message}}
    • executionUrl: {{$json.execution.url}}
  3. HTTP Request – POST an Teams (Webhook oder Graph)

HTTP Request (Webhook) – Body (Expression aktiviert):

{{
{
  "type": "message",
  "attachments": [
    {
      "contentType": "application/vnd.microsoft.card.adaptive",
      "content": {
        "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
        "type": "AdaptiveCard",
        "version": "1.4",
        "body": [
          { "type": "TextBlock", "size": "Large", "weight": "Bolder", "text": $json.title },
          { "type": "TextBlock", "wrap": true, "text": $json.summary },
          { "type": "ActionSet", "actions": [
            { "type": "Action.OpenUrl", "title": "Execution öffnen", "url": $json.executionUrl }
          ]}
        ]
      }
    }
  ]
}
}}

Alternativen & Fallbacks

  • Teams Workflows (Power Automate in Teams): No-Code „When a Teams webhook request is received" – n8n sendet per HTTP → gut für Fachbereiche
  • E-Mail/Slack: n8n-Nodes out-of-the-box verfügbar; sinnvoll als Fallback, falls Teams im Tenant eingeschränkt ist
  • Observability: Bei vielen Flows zusätzlich Log-Streaming/Monitoring in n8n aktivieren

Häufig gestellte Fragen (FAQ)

Wie bekomme ich den Link zur fehlgeschlagenen Ausführung?
Über execution.url in der Error-Payload. Voraussetzung: Executions werden gespeichert.

Warum werden meine Adaptive Cards beim Incoming Webhook nicht angezeigt?
Struktur prüfen (type: message, attachments[], contentType = AdaptiveCard). Ältere MessageCard-Formate sind teilweise inkompatibel.

Unser Tenant blockiert Connectors – was nun?
Auf Microsoft Graph API umsteigen (App Registration + Permissions) oder Teams Workflows verwenden.

Ich bekomme 429/Throttling-Fehler – was tun?
Bei 429-Antworten Backoff/Retry implementieren (z.B. exponentiell mit Jitter).

Löst der Error Trigger auch bei manuellem Testen aus?
Nein, er reagiert nur auf automatische Workflow-Fehler, nicht bei manuellen Ausführungen.


Fazit

Mit einem zentralen Error-Workflow in n8n und automatischem Versand nach Microsoft Teams hast du einen schnellen, zuverlässigen Incident-Kanal. Für den Start ist der Incoming Webhook am einfachsten – plane jedoch Graph API oder Teams Workflows als nachhaltige Lösung ein.

Nächste Schritte:

  1. Error-Workflow anlegen und auf Produktions-Workflows anwenden
  2. Teams-Empfangsweg wählen (Webhook → Graph/Workflows langfristig planen)
  3. Rate-Limit-sichere Retries/Backoff implementieren
  4. Alerts regelmäßig auf Verständlichkeit und Umsetzbarkeit prüfen

Quellen

Weiterführende Artikel