# n8n-Workflows: Push-Benachrichtigungen aufs iPhone

> Ergebnisse und Fehler von n8n-Workflows als Push aufs iPhone, per Honk-Node oder HTTP-Request-Node. Erneute Versuche benachrichtigen nie doppelt.

Source: https://honk-me.app/de/anleitungen/n8n-workflow-push

n8n kann auf viele Arten benachrichtigen, etwa mit dem eingebauten [Pushover-Node](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.pushover/) oder über Chat-Apps. Sie alle schicken jede Nachricht für sich. Honk ergänzt, was Workflows brauchen, sobald sie unbeaufsichtigt laufen: Wiederholungen landen in einer Gruppe, ein Fehler und seine Entwarnung bleiben zusammen, und erneute Versuche benachrichtigen nie doppelt.

Diese Anleitung zeigt beide Wege zu Honk: den Community-Node und, für Instanzen ohne Community-Nodes, den einfachen HTTP-Request-Node. Danach baust du einen Error-Workflow, der jede fehlgeschlagene Ausführung meldet.

## Voraussetzungen

- Ein Honk-Konto (vorerst nur auf Einladung: [Zugang anfragen](https://honk-me.app/de/zugang-anfragen)) und ein Projekt für deine Workflows mit Ingest-Schlüssel: Öffne in der Web-App das Projekt, dann **Schlüssel**.
- n8n 1.x oder 2.x.

## Option 1: der Honk-Node

Auf selbst gehostetem n8n installierst du den Community-Node unter **Settings ▸ Community Nodes** oder mit npm:

```sh
# Self-hosted n8n: Settings → Community Nodes → Install → n8n-nodes-honk
# Without the UI (Docker or npm installs), in the n8n user folder:
cd ~/.n8n/nodes && npm install n8n-nodes-honk
# then restart n8n
```

Leg ein Credential **Honk API** mit der Server-URL und dem Ingest-Schlüssel an. **Test** prüft den Schlüssel, ohne etwas an dein Handy zu schicken. Dann fügst du **Honk ▸ Send message** in einen Workflow ein:

```text
1. Settings → Community Nodes → Install → n8n-nodes-honk
2. Credentials → New → Honk API
     Server URL:     https://honk-me.app
     Ingestion Key:  honk_…
     (Test checks the key; nothing is sent to your phone)
3. Add the node Honk → Send message
     Message:   Wants a quote for an online shop, budget €4,000. Reply within a day.
     Title:     New request from Ana Pop
     Severity:  Light Honk (Info)
   Additional Fields
     Priority:  High
     Category:  Customers
     Source:    n8n
     Group Key: requests/{{ $json.id }}
   Options
     Idempotency Key: request-{{ $json.id }}   (default: execution + node + item)
4. Node Settings → Retry On Fail: on (the same key, so never a duplicate)
```

Der Node sendet eine Anfrage pro Eingabe-Item. Jedes Item bekommt einen Idempotency-Key, standardmäßig aus Ausführung, Node und Item gebildet. **Retry On Fail** ist deshalb sicher: Ein Retry liefert das ursprüngliche Ereignis zurück, statt ein zweites Mal zu pushen.

Kann dasselbe Ereignis in verschiedenen Ausführungen ankommen, etwa bei einem Webhook, den der Absender zweimal zustellt, setz unter **Options ▸ Idempotency Key** einen eigenen Schlüssel, zum Beispiel `request-{{ $json.body.id }}`. Honk nimmt jeden Schlüssel innerhalb von 24 Stunden nur einmal an.

## Option 2: der HTTP-Request-Node

Auf n8n Cloud oder überall, wo Community-Nodes abgeschaltet sind, erledigt der eingebaute HTTP-Request-Node dasselbe, nur mit ein paar Feldern mehr. Speichere den Schlüssel in einem n8n-Credential (Header Auth), nie im Node selbst:

```text
HTTP Request node
  Method:          POST
  URL:             https://honk-me.app/v1/messages
  Authentication:  Generic Credential Type → Header Auth
                   Name "Authorization", Value "Bearer honk_…" (an n8n credential)
  Header:          Idempotency-Key = {{ $execution.id }}-{{ $runIndex }}
  Settings:        Retry On Fail (3 tries, 2000 ms)
  Body (JSON):
  {
    "title": "New request from Ana Pop",
    "message": "Wants a quote for an online shop, budget €4,000. Reply within a day.",
    "severity": "light",
    "priority": "high",
    "category": "customers",
    "source": "n8n",
    "group_key": "requests/{{ $json.id }}"
  }
```

Der Header `Idempotency-Key` nutzt die Ausführungs-ID und den Run-Index, Retry On Fail verwendet ihn also wieder.

## Jede fehlgeschlagene Ausführung melden

n8n startet einen *Error-Workflow*, sobald ein Workflow fehlschlägt, der ihn in seinen Einstellungen angibt. Bau einen, der den Fehler an Honk sendet, gruppiert pro Workflow:

```text
Workflow "Honk: workflow errors"
  1. Error Trigger
  2. Honk → Send message
       Message:   {{ $json.execution.error.message }}
       Title:     n8n: {{ $json.workflow.name }} failed
       Severity:  Long Honk (Error)
     Additional Fields
       Event Type:  Problem
       Group Key:   n8n/{{ $json.workflow.id }}
       Source:      n8n
       Category:    Automation
       URL:         {{ $json.execution.url }}
     Options
       Idempotency Key: n8n-error-{{ $json.execution.id }}

Then, in every workflow that should report: Settings → Error Workflow → "Honk: workflow errors"
```

Jeder Workflow bekommt seine eigene Gruppe, `n8n/<workflow id>`. Der erste Fehler wird als Langes Hupen gepusht, mit einem Link zur fehlgeschlagenen Ausführung. Schlägt der Workflow danach alle fünf Minuten weiter fehl, bekommst du ruhige Updates mit Zähler statt eines Pushes pro Ausführung.

## Mit einem Webhook ausprobieren

Im Repository des Nodes liegt ein Beispiel-Workflow, `examples/quote-request.json`: Ein Webhook empfängt eine Angebotsanfrage, und Honk pusht sie, mit einer Gruppe pro Anfrage. Importiere ihn über **Workflows ▸ Import from File**, wähle dein Honk-Credential, aktiviere ihn und schick ihm eine Anfrage:

```sh
curl -X POST https://your-n8n.example.com/webhook/quote-request \
  -H 'Content-Type: application/json' \
  -d '{"id": 4812, "name": "Ana", "email": "ana@example.com", "summary": "3 rooms, 2 bathrooms"}'
```

## Was Honk ergänzt

Ein Node für Mitteilungen schickt eine Nachricht, mehr nicht. Honk führt eine Gruppe pro laufendem Problem und entscheidet, wann dein Handy vibriert. Es schließt den Vorfall, sobald die Entwarnung kommt, und zeigt deine Workflows im selben Posteingang wie Server, Skripte und Zuhause. Für die Routineläufe gibt es Ruhezeiten und die Zusammenfassung.
