Push notifications for your website, shop and servers
30 failed payments. One honk.
Honk tells you when something needs you: a new order in your shop, a quote request on your website, a leak at home, a server in trouble. Repeats fold into a single push, and everything else waits quietly in your inbox.
Works with WordPress and WooCommerce, n8n, Zapier, Make, Home Assistant, Uptime Kuma and your own code. See the guides Coming soon to the App Store
How one problem reaches your phone
Your tools tell Honk what happened.
Your shop, a contact form, a sensor at home, an n8n workflow or a server sends Honk a short message. Honk saves it before it replies, so a crash a second later can’t lose it.
n8n
Honk → Send message
Message: Stripe API timed out after 10 s for order #1087
Title: Payment provider timeouts
Severity: Long Honk (Error)
Additional Fields
Category: Payments
Group Key: payments/stripe
Event Type: Problem
Source: checkout Home Assistant
# automations.yaml (the Home Assistant guide has the rest_command)
actions:
- action: rest_command.honk
data:
title: "Water leak in the basement"
message: "The sensor under the boiler detected water."
severity: blast
event_type: problem
group_key: home/leak/basement WooCommerce
// wp-content/mu-plugins/honk.php (the WooCommerce guide has the whole file)
add_action('woocommerce_order_status_failed', function ($order_id, $order) {
honk_send([
'title' => 'Payment failed: order #' . $order->get_order_number(),
'message' => $order->get_payment_method_title() . ' could not take the payment.',
'severity' => 'long',
'event_type' => 'problem',
'category' => 'payments',
'group_key' => 'payments/' . $order->get_payment_method(),
], 'wc-' . $order_id . '-failed');
}, 10, 2); cURL
curl -sS https://honk-honk.app/v1/messages \
-H "Authorization: Bearer $HONK_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Payment provider timeouts",
"message": "Stripe API timed out after 10 s for order #1087",
"severity": "long",
"category": "payments",
"source": "checkout",
"group_key": "payments/stripe",
"event_type": "problem"
}' Laravel
use Honk\Laravel\Facades\Honk;
Honk::uhoh('payments/stripe', 'Payment provider timeouts',
'Stripe API timed out after 10 s for order #1087', ['source' => 'checkout']); CLI
honk uhoh --group-key payments/stripe --source checkout \
--title "Payment provider timeouts" \
--message "Stripe API timed out after 10 s for order #1087" Repeats fold into one group.
Events about the same thing land in one group. When the payment provider stops answering at checkout, the second failed payment doesn’t buzz your phone, and neither does the 43rd. The same goes for a website that fails its uptime check every minute, or a leak sensor that keeps going off.
43 events in 1 group
The first one honks.
The first event of a new problem goes out right away to everyone who follows the project, on iPhone, Apple Watch and the web. A Long honk or a Blast can also start a Live Activity on the Lock Screen.
Then it stays calm.
After that, you get at most one update every 5 minutes, with the running count. When several problems start together, like three servers going down at once, each one still gets its own notification right away, but only the first one makes a sound. If it gets louder, you hear about it right away. Routine events wait for the digest, and quiet hours hold anything that isn’t urgent.
Activity
Earlier messages
When it’s fixed, you hear that too.
When the shop reports that payments go through again, you get one last push and the problem closes. The 43 events stay in the group for as long as your plan keeps messages, and on Apple Watch, Double Tap marks it handled.
Five levels, from Light honk to Blast.
Every event has a severity. Your code can send the technical name (warning) or the horn name (loud), and the apps give each level its own horn icon, so you can tell them apart without relying on color.
- Light honk API value:
info·lightRoutine news: a finished import, a package at the door.
- Beep-beep API value:
success·beepSomething went well: a deploy, a backup, a payment.
- Loud honk API value:
warning·loudWorth a look soon: a disk that’s 91% full.
- Long honk API value:
error·longSomething failed. Always sent at High priority or above.
- Blast API value:
critical·blastSomething is down. Always sent at High priority or above.
On the Lock Screen, the Home Screen and your wrist.
Honk for iPhone is an inbox that works like Mail, and often you won’t need to open it. On Apple Watch, it shows what needs you, and Double Tap marks it handled.
Shown at the size iOS draws them on iPhone 18 Pro.
No code needed.
Most tools you already use can send to Honk on their own. Each guide walks you through one, from start to finish.
- WooCommerce order notifications on your iPhone A WordPress plugin sends Honk your orders, failed payments, stock alerts and form entries. You choose what each notification says.
- Contact form notifications on your iPhone Every contact or quote form submission as a push with all its fields, from WordPress, hosted form tools or your own code.
- Website down alerts on your iPhone One push when your site goes down and one when it’s back up, from a cron check or Uptime Kuma.
- Home Assistant alerts on your iPhone A rest_command for configuration.yaml, a leak alert that folds its repeats, and a doorbell with a snapshot.
- n8n workflow notifications on your iPhone The Honk node or the HTTP Request node, plus an error workflow that reports every failed execution.
For developers: one HTTP call, or a library.
Official libraries for six languages, a CLI for shell scripts and CI, and a community node for n8n. They all work the same way: a helper for each level of the Honk scale, automatic retries that never send twice, and the same error types in every language.
cURL
curl -sS https://honk-honk.app/v1/messages \
-H "Authorization: Bearer $HONK_KEY" \
-H "Idempotency-Key: backup-$(date +%Y%m%d)" \
-H "Content-Type: application/json" \
-d '{
"title": "Backup failed",
"message": "pg_dump exited with 1",
"severity": "long",
"group_key": "db/backup",
"event_type": "problem"
}'
# → 202 {"id":"msg_…","status":"accepted","duplicate":false,"received_at":"…"} Laravel
use Honk\Laravel\Facades\Honk;
Honk::beep('Backup finished', 'nightly pg_dump took 42 s');
Honk::loud('Disk 91%', '/var on app-01', ['groupKey' => 'disk/app-01/var']); Node.js
import { Honk } from 'honk-me';
const honk = new Honk({ url: process.env.HONK_URL, key: process.env.HONK_KEY });
await honk.beep('Backup finished', 'nightly pg_dump took 42 s'); Go
import honk "github.com/honk-me/honk-go" // package honk
c, err := honk.FromEnv() // HONK_URL, HONK_KEY (+ optional HONK_SOURCE, HONK_ENVIRONMENT, HONK_CHANNEL)
if err != nil {
log.Fatal(err)
}
_, err = c.Beep(ctx, "Backup finished", "nightly pg_dump took 42 s") Swift
import HonkMe
let honk = try Honk.fromEnvironment() // HONK_URL, HONK_KEY (+ HONK_SOURCE, HONK_ENVIRONMENT, HONK_CHANNEL)
try await honk.beep("Backup finished", "nightly pg_dump took 42 s") Kotlin
import app.honkme.Honk
val honk = Honk.fromEnvironment() // HONK_URL, HONK_KEY (+ HONK_SOURCE, HONK_ENVIRONMENT, HONK_CHANNEL)
honk.beep("Backup finished", "nightly pg_dump took 42 s") // suspend Rust
use honk::Honk;
#[tokio::main]
async fn main() -> honk::Result<()> {
let honk = Honk::from_env()?; // HONK_URL, HONK_KEY (+ HONK_SOURCE, HONK_ENVIRONMENT, HONK_CHANNEL)
honk.beep("Backup finished", "nightly pg_dump took 42 s").await?;
Ok(())
} CLI
export HONK_URL=https://honk-honk.app HONK_KEY=honk_… # better: your secret store
honk beep "Backup finished" "nightly pg_dump took 42 s"
honk loud "Disk 91%" --group-key "disk/$(hostname)/var" n8n
1. Settings → Community Nodes → Install → n8n-nodes-honk
2. Credentials → New → Honk API
Server URL: https://honk-honk.app
Ingestion Key: honk_…
3. Add the node Honk → Send message
Message: nightly pg_dump took 42 s
Title: Backup finished
Severity: Beep-Beep (Success) No ads, no tracking, no analytics SDKs.
- No passwords. You sign in with a 6-digit code from your email.
- Stored in Germany. Messages live on a server in Germany and are deleted after 3, 14 or 30 days, depending on your plan.
- AI stays on your iPhone. Apple Intelligence sorts messages into categories and picks out the key details of a request, on the device. Nothing is sent to a server for AI, and AI never hides or delays a notification.
Who makes Honk
Honk is made by Dan Florian in Cluj‑Napoca, Romania, and runs on a server in Germany. Send questions, bug reports and invitation requests to [email protected].
Questions
How do I get an invitation?
Request access with your email address. If your request is approved, the invitation arrives by email and you sign in with a 6-digit code. You start with a personal workspace.
Do I need to write code?
No. WordPress, Zapier, Make, n8n, Home Assistant and uptime monitors can all send to Honk, and the guides walk you through each one. For your own apps, there are libraries for six languages.
Is there an Android app?
Not a native one. The web app at honk-honk.app installs from Chrome on Android and gets notifications through Web Push.
What happens when I reach a limit?
It depends on the limit. At the daily push limit, messages keep arriving in the inbox, pushes pause until midnight UTC, and everyone affected gets one notice. At the daily message limit, new messages are refused until midnight UTC, and your apps are told when to retry. The response codes are in the docs.
Does Honk monitor my servers?
Honk doesn’t poll your servers, but it notices silence: a heartbeat expects a check-in from your cron job, backup or worker, and when the check-ins stop, Honk opens a problem. For websites, pair it with an uptime check that reports to Honk.
Can my team use it?
Yes. Create a shared workspace and invite people as owners, admins or members. Owners and admins see every project; members see the projects they have access to. See how workspaces and projects work.