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.

Honk for iPhone, Attention: the payment provider timeouts on top under Live now, then a new booking at the hair salon and a new order from the shop.

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.

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 · light

    Routine news: a finished import, a package at the door.

  • Beep-beep API value: success · beep

    Something went well: a deploy, a backup, a payment.

  • Loud honk API value: warning · loud

    Worth a look soon: a disk that’s 91% full.

  • Long honk API value: error · long

    Something failed. Always sent at High priority or above.

  • Blast API value: critical · blast

    Something 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.

A Live Activity keeps an incident on the Lock Screen, here a water leak in the basement, and updates while Honk is closed, until it shows Recovered.
In the Dynamic Island: the level and the event count, 12 leak alerts so far.
Apple Watch: Mark handled with Double Tap, here on a quote request.
The small widget: how many groups need you, the worst level and the most urgent one.
Control Center: Mute everything for an hour.
The medium and large widgets list them, here the leak, a quote request and a paid invoice, with Mute 1h and Mark handled on each incident. Each widget can also show All messages or one project.

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.

All guides

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.

Privacy Policy

Free for one project. €9 a month for ten.

You pay per workspace, not per seat, and every plan has every feature; only the limits differ. While Honk is invite-only, your plan is set when your invitation goes out.

Free
€0
500 messages a day
1 project · 1 member
Pro
€9 a month
20,000 messages a day
10 projects · 5 members
Team
€29 a month
200,000 messages a day
100 projects · 50 members

Prices are in euros. VAT may apply, depending on your country.

See pricing

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.