honk

n8n community node for Honk (honk-me.app): send messages from your workflows to your phone, with idempotency keys so retries never notify twice.

Package Information

Released: this month
Downloads: 0 weekly / 0 monthly
Latest Version: 0.1.2
Author: Honk

Available Nodes

Documentation generating…

Documentation

n8n-nodes-honk

CI
npm

An n8n community node for Honk, the inbox that turns
events from your apps, scripts, cron jobs and workflows into calm, grouped push notifications
on your phone. Add a Honk node to any workflow to send a message: a new customer request,
a failed backup, a finished import.

  • One action, Send message, with every field of the Honk ingestion API.
  • Retries never notify twice: every message carries an idempotency key, by default built from
    the execution, the node and the item.
  • Clear errors for invalid fields, a wrong key, quotas and rate limits.
  • No runtime dependencies.

Installation · Credentials · Usage ·
Example workflow · Errors · Compatibility

Installation

Self-hosted n8n: Settings → Community Nodes → Install → enter n8n-nodes-honk →
confirm → Install. The Honk node then appears in the nodes panel.

Without the UI (Docker or npm installs), in the n8n user folder:

cd ~/.n8n/nodes && npm install n8n-nodes-honk
# then restart n8n

See n8n's community node installation guide
for queue mode and other setups.

Credentials

Create a Honk API credential:

Field Value
Server URL https://honk-me.app (the default), or the base address of your own Honk server
Ingestion Key a project ingestion key (honk_…): in Honk, open the project → Keys → create a key

Test checks the key without sending anything to your phone: it posts an empty message,
which Honk rejects after accepting the key (422 message is required). Nothing is stored.

The ingestion key can only send messages into its project. Treat it as a secret.

Usage

Add the Honk node and choose Message → Send.

Parameter Notes
Message required; up to 8192 bytes, line breaks kept
Title one line, up to 160 characters; empty uses the first line of the message
Severity the Honk scale: Light Honk (Info), Beep-Beep (Success), Loud Honk (Warning), Long Honk (Error), Blast (Critical). Error and critical push at least as high priority
Additional Fields → Priority Low, Normal, High, Urgent (urgent needs a key that allows it)
Additional Fields → Group Key messages with the same key form one group: the first pushes, repeats update it calmly. Use one key per request (requests/{{ $json.id }}), a shared key only for repeats of the same problem
Additional Fields → Event Type Event, Problem (opens an incident for the group), Recovery (closes it; needs a group key)
Additional Fields → Category Automation, Backups, Customers, Deployments, Infrastructure, Other, Payments, Personal, Sales, Security
Additional Fields → Source, Environment, Channel up to 64, 32 and 64 characters; defaults api, default, general
Additional Fields → URL an https link shown as "Open link"
Additional Fields → Image URL an https image shown with the notification
Additional Fields → Metadata up to 16 name/value fields
Additional Fields → Occurred At when it happened at the source
Options → Idempotency Key see below

The node sends one request per input item and outputs Honk's answer for each:

{ "id": "msg_01k6…", "status": "accepted", "duplicate": false, "received_at": "2026-10-04T12:20:05.123Z" }

accepted means Honk has stored the message; it then groups it and pushes it to your phone.

Idempotency: retries never notify twice

Every message carries an idempotency key. Honk accepts a key once in 24 hours: sending the same
message with the same key again returns the original id with duplicate: true and nothing is
pushed twice.

  • Default: n8n-<execution id>-<node id>-<item index>. The node's Settings → Retry On
    Fail
    and any retry within the same execution reuse it.
  • Your own key (Options → Idempotency Key) when the same event can arrive in different
    executions, e.g. a webhook that is delivered twice: request-{{ $json.body.id }}.

The same key with a different message is rejected as a conflict.

Example workflow

examples/quote-request.json: a webhook receives a quote request
and Honk pushes it to your phone, one group and one idempotency key per request. Import it with
Workflows → Import from File, pick your Honk API credential in the Honk node, and send:

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"}'

Errors

Honk answer n8n error What to do
invalid fields (checked before sending, or 422 from Honk) "Invalid message: …" / "Honk rejected the message", every field in the details fix the parameters
401 invalid_key "The Honk ingestion key is invalid or revoked" fix the credential
403 priority_not_allowed "This ingestion key may not send urgent messages" another priority, or allow urgent for the key
409 idempotency_conflict "This idempotency key was already used with a different message" a new key, or the original message
429 quota_exceeded "The daily message quota … is used up" (resets at midnight UTC) wait, or a bigger plan
429 rate_limited, 5xx, network "Honk asked to slow down" / "Honk is temporarily unavailable" enable Retry On Fail (safe: same key)

With Settings → On Error → Continue, a failed item becomes an output item with error,
description, httpCode and idempotencyKey, and the other items are still sent.

Compatibility

n8n 1.x and 2.x (Node API version 1). Tested with n8n-workflow 2.41 and @n8n/node-cli 0.50.

Development

npm ci
npm run lint     # n8n's community-node rules
npm test         # build, then unit tests (no network)
npm run dev      # n8n with this node, on http://localhost:5678
HONK_URL=… HONK_KEY=… npm run test:integration   # the credential test against a real server (sends nothing)

Releases: push a tag vX.Y.Z matching package.json; the release workflow publishes to npm
from GitHub Actions with provenance (see CHANGELOG.md).

Links

MIT License.

Discussion