# Hook.Notifier — full content The easiest way to send yourself a native push notification when something happens. Free. # Discord webhooks are not real push notifications URL: https://hooknotifier.com/blog/discord-webhook-vs-push-notification A Discord webhook is the go-to way to alert yourself for free, but it is not a real push. Here is why it misses alerts and how to get a true native push instead. A Discord webhook is almost everyone's first free alerting hack: paste a webhook URL into a service, and events show up in a channel. It works, right up until the one alert that actually matters is the one you miss. The reason is simple. A Discord webhook does not send you a notification. It posts a message to a channel, and whether that becomes a buzz in your pocket depends on a stack of things that have nothing to do with the alert. Why webhook-to-Discord misses alerts Mute wins. If the server or the channel is muted, and busy servers usually are, your alert lands silently.Do Not Disturb suppresses it. The exact hours you most want a critical alert to break through are the hours DND holds it back.It competes with chatter. In an active channel, an alert scrolls away between messages and memes. You see it an hour later, if at all.No priority. Every message looks the same. A failed payment and a "gm" get identical treatment.No structure. There is no inbox, no tags, no history built for alerts. It is a chat log. Discord is a great chat app. It was never designed to be your notification channel, and using it as one means your alerting is only as reliable as your least-muted channel. What a real push does differently A dedicated push service delivers to your phone as a native notification, the same kind your messaging and banking apps use. It does not depend on a chat app being open, unmuted, and in the foreground. With Hook.Notifier you point the same webhook-style URL at a real notification channel: https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Payment%20failed&body=Order%20%23431&priority=high&tags=payments It is a native push, delivered whether or not any app is open.Priority is built in. critical cuts through your quiet hours; low stays in the inbox without buzzing.Tags and an inbox keep alerts organized and searchable, separate from any conversation.It is free. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account, then point the alert you already send to Discord at this URL instead. When Discord is still fine If you want a shared, visible log for a team to glance at, a Discord channel is genuinely useful, and you can send to both. The point is not to drop Discord. It is to stop relying on a chat channel for the alerts you cannot afford to miss, and to put those on a channel built to reach you. The takeaway A Discord webhook is a message in a room you might not be looking at. A push notification is a tap on the shoulder. For anything that matters, you want the tap on the shoulder, and you can have it for free. See how to send a push notification from any webhook, or if you are on Telegram instead, read why Telegram bots are the wrong tool for notifying yourself. Common questions: Q: Can a Discord webhook send a push notification? A: Only indirectly. A webhook posts a message to a channel; whether you get a push depends on your Discord notification settings, whether the server or channel is muted, and whether the app is running. It is not a dedicated notification channel, so important alerts are easy to miss. Q: Why do I miss alerts sent through a Discord webhook? A: Because the message competes with everything else in Discord. Server-wide mute, channel mute, Do Not Disturb, or simply a busy channel can all suppress or bury the alert. A dedicated push service delivers to your phone regardless. Q: What is a better free alternative for alerts? A: Hook.Notifier sends a native push notification from the same kind of webhook URL, straight to your phone and a dedicated inbox, for free. Point the same alert at it and it cannot get lost in a chat channel. --- # A free alternative to Pushover URL: https://hooknotifier.com/blog/free-alternative-to-pushover Pushover is a great push notification service, but it is paid. If you want the same thing for free, here is how Hook.Notifier compares and how to switch. Pushover sends you a push notification from an API call. It works well and a lot of people rely on it. The one catch is the price: after a 30 day trial, each platform is a one-time purchase of about five dollars, and Pushover for Teams is a monthly per-user fee. If you want the same result for free, Hook.Notifier does the same job: one HTTP request, a native notification on your phone. The same core idea With Pushover, you send a request to their API and it pushes to your devices. With Hook.Notifier, you get a personal URL and call it: curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Hello&body=My%20notification" A real notification lands on your phone. No app to build, no backend. How they compare PushoverHook.NotifierSend from an APIYesYesNative phone pushYesYesPrice~$5 one-time per platform, Teams paid monthlyFreePriorities5 levels, incl. emergency with acknowledgment4 levels, high and critical bypass quiet hoursAction buttonsNo, one supplementary linkUp to 3 buttons per notificationScheduled deliveryNoYes, delay or exact time, up to 3 daysUpdate a sent notificationNoYes, PUT by id, the push replaces the old oneFormattingHTML subsetMarkdownNotification inboxNoYes, read/unread and full-text searchPayload templates for raw webhooksNoYes, per hookOutgoing webhooksNoYes, relay notifications to Slack or any URLTeam sharingTeam planYes To be fair on one point: Pushover's emergency priority repeats until you acknowledge it, and Hook.Notifier has no equivalent of that acknowledgment loop. If that specific behavior is why you use Pushover, it still earns its price. On most other axes Hook.Notifier now goes further. Action buttons on notifications, scheduling a send, updating a notification in place (a deploy that goes from "started" to "done" as one notification), markdown bodies, an inbox with read state and search, per-hook payload templates that turn any raw webhook into a readable message, and outgoing webhooks to relay everything onward. All free. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours and start sending notifications. Switching over Anywhere you call Pushover's API, call your Hook.Notifier URL instead. The parameters map cleanly: a title, a message, an optional priority or color. If it was a webhook pointing at Pushover, just change the URL. Want the full walkthrough? Read how to send yourself a native push notification. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: Is there a free alternative to Pushover? A: Yes. Hook.Notifier sends a native push notification from a single HTTP request, like Pushover, and it is free. You get a personal URL and call it from anything that can make a request. Q: How is Hook.Notifier different from Pushover? A: Both send a push notification from an API. Pushover is paid and focused on delivery. Hook.Notifier is free and also keeps your notifications in an inbox with tags, history and team sharing. --- # Like ntfy, but without the self-hosting URL: https://hooknotifier.com/blog/ntfy-without-self-hosting ntfy is great, but the free path means self-hosting and the reliable hosted tier is paid. Here is how to get native push, hosted and free, with zero setup. ntfy is a great notification service. Send a simple HTTP request, get a push on your phone. It is open source and self-hostable, which is exactly why self-hosters love it. To use it for free, you have two options. Self-host it, which means running a server, Docker, updates, and being comfortable with config. Or use the hosted ntfy.sh for free, where topics act as passwords and there are no real guarantees. The reliable hosted tiers on ntfy.sh are paid, from around six dollars a month up. If you want the same flow, hosted and free, without running anything, Hook.Notifier gives you that. The same simple send ntfy is curl -d "message" ntfy.sh/your-topic. Hook.Notifier is one request to your personal URL: curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Backup&body=Backup%20finished" Same idea, same result. The difference is there is nothing for you to host. How they compare ntfy (self-hosted)ntfy.sh (hosted)Hook.NotifierSend from a requestYesYesYesNative phone pushYesYesYesYou run the serverYesNoNoSetup neededDocker, configNoneNoneFree tierFree, but you host itFree but limitedFreeReliable hosted tiern/aPaid, from ~$6/moFreePrioritiesYesYesYes, 4 levels, high and critical bypass quiet hoursAction buttonsYesYesYes, up to 3, in the inbox and the appScheduled deliveryYes (X-Delay)YesYes, delay or exact time, up to 3 daysMarkdownYesYesYesUpdate a sent notificationNoNoYes, PUT by idPayload templatesYes, server-sideYes, server-sideYes, per hook, in the UINotification inboxBasicBasicYes, read/unread and full-text search For a while, feature depth was the honest reason to pick ntfy: it had priorities, action buttons, delayed delivery and markdown when we did not. That gap is closed. Hook.Notifier now has all of them, hosted and free. And a few things go the other way: updating a sent notification in place by its id (ntfy does not have this, it is a long-open request), payload templates you configure per hook in the UI rather than in server config, an inbox with read state and full-text search, and outgoing webhooks that relay every notification to Slack or any URL you choose. ntfy's real strength has not changed, and it is a big one: it is open source and yours to run. If self-hosting is the point, ntfy is excellent. If you just want the result, Hook.Notifier hands you a URL and gets out of the way. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours. Nothing to install. Moving over Anywhere you posted to your ntfy topic, post to your Hook.Notifier URL instead. The shape is the same: a title, a message, optional tags. Your scripts barely change. Want the full walkthrough? Read how to send yourself a native push notification. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: Is there a free hosted alternative to ntfy? A: Yes. ntfy is free if you self-host it, and its reliable hosted tiers on ntfy.sh are paid. Hook.Notifier gives you the same send-a-request-get-a-push flow, hosted and free, with nothing to run. Q: Do I need Docker or a server to use Hook.Notifier? A: No. Unlike self-hosting ntfy, there is nothing to install or run. Create a free account, get your URL, and call it from anything that can make an HTTP request. --- # Stop rigging Telegram and Discord bots to notify yourself URL: https://hooknotifier.com/blog/stop-rigging-telegram-bots-to-notify-yourself We have all built a Telegram or Discord bot just to get a notification when something happens. Here is why that is the wrong tool, and the one line that replaces it. If you have ever wanted a ping when something happens, you have probably done what I did: rigged a Telegram or Discord bot to send yourself a message. I have built more of those than I can count. And every time, it was more work than it should be. The bot dance Here is what "just send myself a message" actually looks like with a Telegram bot. Talk to BotFather to create a bot.Copy and store the bot token somewhere safe.Find your own chat id, which is its own little quest.Format the request with the token and the chat id.Get the message in a chat app you now have to keep open. Discord is the same shape. Create a webhook, keep the URL, format the JSON, and your alert lands in a channel next to everyone's messages. It works. But look at what you did: you built plumbing, stored secrets, and your notification ended up buried in a chat app. That is not a notification. That is a message you might see later. What you actually wanted A real notification. On your phone. The moment the thing happens. Nothing to build. That is the whole reason Hook.Notifier exists. You get a personal URL and you call it. curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Done&body=The%20thing%20happened" No bot. No token. No chat id. No channel. A native push notification lands on your phone, and it stays in an inbox made for exactly this. What a bot will never give you A chat message is flat. A notification system has levers a rigged bot does not: Priorities. A cron log should not buzz like a production incident. Low priority skips the push, critical cuts through everything.Quiet hours. Your nights stay quiet, and only high or critical alerts get through.Updates in place. One "job running" notification that becomes "job done", instead of a stack of messages.Action buttons. Up to 3 buttons pointing at your own URLs, right on the notification in the inbox and the app.Folders and per-topic mute. Tags group your alerts into colored folders, and each tag can be normal, silent, or hidden. You could bolt some of this onto a bot with enough code. Or you could get all of it included, free. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours and replace every notification bot you have ever built. The honest version Bots are great for bots. For notifying yourself, they are the wrong tool used out of habit, because for a long time there was nothing simpler. Now there is. If you want the full walkthrough, read how to send yourself a native push notification. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: Why not use a Telegram bot for notifications? A: A Telegram bot means creating a bot, storing a token, finding your chat id, and formatting requests, all to land a message in a chat app you have to open. For a personal notification, it is more setup than it deserves and it is not a real push notification. Q: What is a simpler alternative to a Discord webhook for alerts? A: A dedicated notification inbox like Hook.Notifier. You get a personal URL, call it with one request, and a real native notification lands on your phone. No bot, no token, no chat channel. --- # Get push notifications from Make (Integromat) URL: https://hooknotifier.com/guides/get-notifications-from-make Turn any Make scenario into a push notification on your phone. Add an HTTP module pointing at your Hook.Notifier URL. No code, no backend. Free. To get a push notification from Make, add an HTTP module at the end of your scenario that calls your Hook.Notifier URL. Whatever triggers the scenario then lands on your phone. Add the notification step Make talks to thousands of apps, so the trigger can be anything. The last step is always the same. In your scenario, add an HTTP → Make a request module.Set the URL to your hook: https://hooknotifier.com/{IDENTIFIER}/{KEY}Use a POST request with a JSON body, and map your scenario data into the fields: { "object": "New lead", "body": "{{name}} just filled the form" } Run the scenario, and the notification lands on your phone. When you do not even need Make If the only job of your scenario is reshaping a raw webhook into a readable message, you can skip Make entirely. Create a named hook in Hook.Notifier, point the service's webhook straight at it, and map the raw JSON into the notification with {{path.to.field}} templates in the hook's settings. Make stays the right tool when there is real logic: filters, routing, multi-step scenarios. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then paste it into the HTTP module. Why it matters Make is the glue between your tools. Adding one notification step means any of those tools can reach your phone the moment something happens, without writing a line of code. New to this? Start with how to send yourself a native push notification. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I send a push notification from Make? A: In your Make scenario, add an HTTP 'Make a request' module pointing at your Hook.Notifier URL, and map your fields into the notification. The scenario then pings your phone when it runs. Q: Does Make work with any app for notifications? A: Yes. Make connects thousands of apps. Whatever triggers your scenario, the final HTTP step to your Hook.Notifier URL turns it into a native notification on your phone. --- # Get a push notification on a new Supabase row URL: https://hooknotifier.com/guides/get-notified-on-a-new-supabase-row Get a real push notification the moment a row is inserted in your Supabase database. A database webhook to your Hook.Notifier URL. No backend. Free. To get notified when a row is added in Supabase, create a database webhook on the INSERT event that points at your Hook.Notifier URL. Every new row lands on your phone. Create the database webhook Supabase can fire a webhook whenever a table changes. In your Supabase dashboard, go to Database → Webhooks → Create a new hook.Choose the table to watch and the Insert event.Set the type to HTTP Request and the URL to your hook: https://hooknotifier.com/{IDENTIFIER}/{KEY} The next insert on that table pings your phone. Shape the message with a payload template Supabase sends the full row as the payload. For a clean, human message, create a dedicated hook in Dashboard → Hooks, use its URL in the webhook, and set a payload template. Paths are resolved against the JSON Supabase posts, where the new row lives under record. objectTemplate: New signupbodyTemplate: {{record.email}} just joined No Edge Function, no middleman. The hook can also carry defaults, like a signups tag and a color, so every insert from this table lands in its own folder. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then paste it into the webhook. Why it matters Your database is where the real events land first: a signup, an order, a message. Getting a ping the moment a row appears means you feel your product live, without watching a table. New to this? Start with how to send yourself a native push notification. Common questions: Q: How do I get notified when a row is added in Supabase? A: Create a Supabase database webhook on the INSERT event for your table, pointing at your Hook.Notifier URL. Every new row sends a push notification to your phone. Q: Do I need to write a backend for this? A: No. Supabase database webhooks fire on table changes and can call your Hook.Notifier URL directly. No server to run. --- # Get notified when someone logs into your server over SSH URL: https://hooknotifier.com/guides/get-notified-on-ssh-login Get a push notification the moment someone logs into your server over SSH. A few lines in one file plus your Hook.Notifier URL. No agent, no service. Free. To get notified when someone logs into your server over SSH, add a call to your Hook.Notifier URL in the server's login hook. Every session then pings your phone with who logged in and from where. Add it to the login hook On most Linux servers, add one line to /etc/pam.d/sshd. # /etc/pam.d/sshd (add at the end) session optional pam_exec.so /usr/local/bin/notify-ssh.sh Then create the script it runs: # /usr/local/bin/notify-ssh.sh #!/bin/bash if [ "$PAM_TYPE" = "open_session" ]; then curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=SSH%20login&body=${PAM_USER}%20from%20${PAM_RHOST}&priority=high" fi Make it executable with chmod +x /usr/local/bin/notify-ssh.sh. The next SSH login lands on your phone. The priority=high matters here. A security alert should not wait for the morning: high and critical priority cut through your quiet hours, so a 3am login still buzzes. Use critical on machines where any unexpected session is an incident. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then drop it into the script. Why it matters An SSH login you did not expect is the earliest sign something is wrong. Getting a ping on every session, yours or not, means you notice the odd one instantly instead of finding it in a log later. New to this? Start with how to send yourself a native push notification. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I get notified when someone logs in over SSH? A: Add a curl call to your Hook.Notifier URL in the server's login script (PAM). Every SSH session then sends a push notification to your phone with the user and the source IP. Q: Do I need to install a monitoring agent? A: No. A few lines in one file and a call to your Hook.Notifier URL are enough. No agent, no third-party service. --- # Get notified when a cron job finishes or fails URL: https://hooknotifier.com/guides/get-notified-when-a-cron-job-finishes Get a push notification when a cron job finishes, or only when it fails. Add one line to the end of your script and call your Hook.Notifier URL. No agent. Free. To get notified when a cron job finishes, add a call to your Hook.Notifier URL at the end of the script it runs. When the job is done, your phone gets a push notification. You can ping yourself on success, only on failure, or both. Notify when the job finishes Add one line at the end of the script your cron runs: # your nightly job ./backup-database.sh # ping when it is done curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Backup%20done&body=Nightly%20database%20backup%20finished" That is it. Every run drops a notification on your phone, so a job that quietly stopped running is impossible to miss. Notify only when it fails Most of the time you do not want a ping for every successful run. You want to hear about it only when something breaks. Check the exit code and notify on failure: #!/bin/bash if ./backup-database.sh; then : # success, stay quiet else curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Backup%20FAILED&body=Nightly%20backup%20exited%20with%20an%20error&priority=high&color=%23EE6767" fi The priority=high matters. A broken backup should not wait until you happen to check a dashboard: high and critical priority cut through your quiet hours, so a 3am failure still buzzes. The red color makes it stand out in your inbox at a glance. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then drop it into your script. Report how long it took Since it is just a shell script, you can put anything in the body. Time the run and send it along: #!/bin/bash start=$(date +%s) ./backup-database.sh elapsed=$(( $(date +%s) - start )) curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Backup%20done&body=Finished%20in%20${elapsed}s" Now the notification tells you not just that the job ran, but whether it is creeping slower over time. Why it matters A cron job is the classic silent point of failure. It works for months, then one night it stops, and nobody notices until a customer does. A single line that pings your phone turns an invisible job into one you can actually trust. New to this? Start with how to send yourself a native push notification, or see the same idea for any shell script. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I get notified when a cron job finishes? A: Add a curl call to your Hook.Notifier URL at the end of the script the cron runs. When the job finishes, it sends a push notification to your phone. You can send one on success, on failure, or both. Q: Can I get notified only when the cron job fails? A: Yes. Wrap the command and check its exit code: on a non-zero exit, call your Hook.Notifier URL with priority=high so the failure cuts through your quiet hours. Q: Do I need a monitoring service for this? A: No. One line in your script and your Hook.Notifier URL are enough. No agent, no cron-monitoring subscription. --- # Get notified when a Docker container stops URL: https://hooknotifier.com/guides/get-notified-when-a-docker-container-stops Get a push notification the moment a Docker container stops or restarts. A short script watches Docker events and calls your Hook.Notifier URL. Free. To get notified when a Docker container stops, run a small script that listens to Docker's event stream and calls your Hook.Notifier URL when a container dies. The alert lands on your phone with the container name, right away. Docker keeps most things running, but when a container exits unexpectedly and the restart policy papers over it, the failure can hide for hours. Watching the event stream surfaces it immediately. Watch the Docker event stream Docker emits an event every time a container starts, stops, or dies. This script pings you on the ones that matter: #!/bin/bash # /usr/local/bin/watch-docker.sh docker events --filter 'event=die' --format '{{.Actor.Attributes.name}}' | while read name; do curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Container%20died&body=${name}%20stopped%20unexpectedly&priority=high&color=%23EE6767&tags=docker" done Run it as a background service (a small systemd unit or nohup) so it keeps listening. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then drop it into the script. Watch only the containers you care about Most stacks have chatty containers you do not need alerts for. Filter by name or label so you only hear about the important ones: docker events --filter 'event=die' --filter 'label=notify=true' --format '{{.Actor.Attributes.name}}' Then add notify=true as a label to the containers that matter in your compose file: services: api: labels: - "notify=true" Keep it running with systemd # /etc/systemd/system/watch-docker.service [Unit] Description=Notify on Docker container death After=docker.service [Service] ExecStart=/usr/local/bin/watch-docker.sh Restart=always [Install] WantedBy=multi-user.target Enable it with systemctl enable --now watch-docker. Now a dying container always reaches your phone. Why it matters Restart policies are a double-edged sword: they keep a service alive, but they also hide the fact that it keeps falling over. A push on every unexpected death means you notice the pattern before it becomes an outage. New to this? Start with how to send yourself a native push notification, or see how to get notified when a server runs low on disk. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I get notified when a Docker container stops? A: Run a small script that listens to Docker events with docker events, and when a container dies or stops, calls your Hook.Notifier URL. You get a native push notification with the container name. Q: Do I need a container monitoring tool? A: No. Docker already emits events; a few lines of shell plus your Hook.Notifier URL turn those events into a phone push. No agent, no monitoring subscription. Q: Can I watch only certain containers? A: Yes. Filter Docker events by name or label so you are only pinged for the containers that matter, and stay quiet for the rest. --- # Get a push notification when a form is submitted URL: https://hooknotifier.com/guides/get-notified-when-a-form-is-submitted Get a real push notification the moment someone submits your form. Works with Google Forms, Typeform, Tally and any form that sends a webhook. Free. To get notified when a form is submitted, send the submission to your Hook.Notifier URL. Most form tools can do it directly with a webhook, and the rest go through a no-code automation. Forms that send webhooks (Typeform, Tally) Paste your hook straight into the form's webhook settings. Open your form's integrations or webhook settings.Add your Hook.Notifier URL as the endpoint: https://hooknotifier.com/{IDENTIFIER}/{KEY}Save. The next submission pings your phone. Make the notification readable A raw form webhook is a wall of JSON. Create a dedicated hook in Dashboard → Hooks, use its URL as the endpoint, and set a payload template with paths resolved against the JSON your form posts. For a form that sends name and email fields: objectTemplate: New leadbodyTemplate: {{name}} ({{email}}) just submitted With Typeform, {{form_response.definition.title}} gives you the form's name, handy if you run several forms. Set the hook's defaults too, like a leads tag and a color, so submissions get their own folder in the inbox. No Zapier step needed to reshape the payload. Google Forms (through Zapier or Make) Google Forms has no native webhook, so bridge it with a no-code tool. Create a Zap (or Make scenario) with Google Forms → New response as the trigger.Add a Webhook action.Point it at your Hook.Notifier URL and map the answer fields into the notification. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then paste it wherever a webhook is asked for. Why it matters A form is usually someone raising their hand: a lead, a support request, a signup. The faster you know, the warmer the response. A notification the moment they submit turns hours of delay into seconds. New to this? Start with how to send yourself a native push notification. Common questions: Q: How do I get notified when someone fills my form? A: Send the submission to your Hook.Notifier URL. If your form tool sends webhooks, paste the URL there. If not, connect it through Zapier or Make and add a webhook step pointing at your hook. Q: Does it work with Google Forms and Typeform? A: Yes. Typeform and Tally send webhooks you can point straight at your Hook.Notifier URL. Google Forms works through Zapier, Make, or a short Apps Script. --- # Get a push notification when a GitHub build fails URL: https://hooknotifier.com/guides/get-notified-when-a-github-build-fails Get a real push notification the moment a GitHub Actions build fails or a pull request opens. One webhook, no app to build, no backend. Free. To get notified when a GitHub build fails, add a step to your workflow that calls your Hook.Notifier URL when a job fails. The red build reaches your phone right away. From GitHub Actions Add one step at the end of your workflow that only runs on failure. - name: Notify on failure if: failure() run: | curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Build%20failed&body=${{ github.repository }}%20on%20${{ github.ref_name }}&color=%23EE6767&priority=high" The next time CI goes red, your phone lights up. The priority=high makes the alert cut through your quiet hours, because a broken build at 11pm is still a broken build. One card for the whole build For a long job, you can send one notification when the build starts and update it in place when it ends. Sending returns an id, and a PUT on the same URL plus that id replaces the previous push on your phone instead of stacking a new one. - name: Notify start id: notify run: | RES=$(curl -s -X POST "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Build%20running&body=${{ github.repository }}") echo "nid=$(echo "$RES" | jq -r .id)" >> "$GITHUB_OUTPUT" - name: Update on failure if: failure() run: | curl -s -X PUT "https://hooknotifier.com/{IDENTIFIER}/{KEY}/${{ steps.notify.outputs.nid }}?object=Build%20failed&color=%23EE6767&priority=high" One build, one card, always showing the latest state. For pull requests and other events If you want repo events like new pull requests, use a repository webhook instead of a workflow step. In Hook.Notifier, go to Dashboard → Hooks and create a hook named GitHub. It gets its own URL and defaults (tag, color, priority).In your repo, go to Settings → Webhooks → Add webhook and paste that URL as the payload URL.Choose the events you care about, like Pull requests, Pushes or Workflow runs. GitHub sends a big raw payload. Add a payload template on the hook so the notification reads like a sentence, with paths resolved against the JSON GitHub posts. For the workflow_run event: objectTemplate: {{workflow_run.name}} {{workflow_run.conclusion}}bodyTemplate: {{repository.full_name}} For pull requests, {{pull_request.title}} and {{sender.login}} work the same way. No Zapier or middleman needed. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then drop it into the workflow or the webhook. Why it matters A broken build blocks everyone behind it. The faster you know, the faster you unblock the team. A notification the moment CI fails turns a silent red X into a two minute fix. New to this? Start with how to send yourself a native push notification. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I get notified when a GitHub build fails? A: Add a webhook in your GitHub repository pointing at your Hook.Notifier URL, or add a step to your GitHub Actions workflow that calls it on failure. The failure lands on your phone as a push notification. Q: Can I get notified for pull requests too? A: Yes. Add a repository webhook for the pull_request event pointing at your Hook.Notifier URL. Every opened pull request pings your phone. --- # Get a phone notification when a long command finishes URL: https://hooknotifier.com/guides/get-notified-when-a-long-command-finishes Get a push notification on your phone when a long-running terminal command finishes. Chain a curl to your Hook.Notifier URL. Walk away, get pinged. Free. To get a push when a long command finishes, chain a call to your Hook.Notifier URL after it. Start the command, walk away, and your phone tells you the moment it is done. Big builds, data migrations, model training, video encodes: you start them, then waste time watching a progress bar. One appended curl frees you from the terminal. The one-liner Chain the notification after your command with &&: ./long-build.sh && curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Done&body=long-build%20finished" Start it, close the laptop lid or go make coffee, and the push arrives when the build ends. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then chain it after your commands. Tell me if it worked or failed The && only fires on success. To always be told, and to know the outcome, check the exit code: ./long-build.sh if [ $? -eq 0 ]; then curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Build%20done&body=Finished%20successfully" else curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Build%20FAILED&body=Exited%20with%20an%20error&priority=high&color=%23EE6767" fi Now you get "done" or "failed" on your phone, no need to look back at the terminal. Notify after a command you already started Forgot to chain it and the command is already running? Queue the notification to fire the moment it exits, using the shell's wait on its process, or just chain onto a quick follow-up: # after the running job's PID, e.g. 4821 wait 4821; curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Done&body=The%20job%20finished" Turn it into a reusable helper Drop a small function in your shell profile so any command can notify you: # ~/.bashrc notifyme() { "$@" curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Done&body=$*%20finished" } Then run notifyme ./long-build.sh and get pinged when it ends, whatever the command is. Why it matters The most wasted minutes in a developer's day are the ones spent watching something run. A push that reaches your phone the second it finishes lets you actually walk away and get on with something else. New to this? Start with how to send yourself a native push notification, or see the same idea for any shell script. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I get notified when a terminal command finishes? A: Chain a curl to your Hook.Notifier URL after the command with &&, or run both and check the exit code. When the long command ends, your phone gets a native push notification. Q: Can I get told whether it succeeded or failed? A: Yes. Use the exit code: on success send one message, on failure send another with priority=high. You will know the outcome without going back to the terminal. Q: Do I need to install anything? A: No. curl is already on your machine, and Hook.Notifier delivers the push. No CLI tool to install, no account juggling. --- # Get a push notification when a new order comes in URL: https://hooknotifier.com/guides/get-notified-when-a-new-order-comes-in Get a real push notification the moment a new order comes in on your store. Works with Shopify, WooCommerce and any store that sends a webhook. Free. To get notified when a new order comes in, point your store's order webhook at your Hook.Notifier URL. Every sale then lands on your phone the moment it happens. Shopify In your Shopify admin, go to Settings → Notifications → Webhooks.Create a webhook for the Order creation event.Set the URL to your hook: https://hooknotifier.com/{IDENTIFIER}/{KEY} The next order rings your phone. WooCommerce Go to WooCommerce → Settings → Advanced → Webhooks.Add a webhook with the Order created topic.Set the delivery URL to your Hook.Notifier URL. Make it read like a sale Store webhooks send the whole order as raw JSON. Create a dedicated hook in Dashboard → Hooks, use its URL in the webhook, and set a payload template so the notification reads like a sale, not a payload. For a Shopify order: objectTemplate: New order #{{order_number}}bodyTemplate: {{total_price}} {{currency}} For WooCommerce, {{total}} and {{currency}} work the same way. Give the hook an orders tag and a color as defaults, and every sale files itself into its own folder. No Zapier or middleman. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then paste it as the webhook URL. Notify the whole team Running a shop with staff? Everyone installs the mobile app and joins the same team, so every new order reaches the whole floor at once. No shared screen to watch. Why it matters Early orders are a heartbeat. Feeling them the moment they land keeps you close to your store and lets you react fast, ship faster, and celebrate the wins as they happen. New to this? Start with how to send yourself a native push notification. Common questions: Q: How do I get notified when I get a new order? A: Point your store's order webhook at your Hook.Notifier URL. On Shopify, add a webhook for the order creation event. On WooCommerce, use the built-in webhooks. Every order pings your phone. Q: Does it work with Shopify and WooCommerce? A: Yes. Both send order webhooks you can point straight at your Hook.Notifier URL. For staff on the shop floor, everyone can install the app and receive the same notification. --- # Get notified when a server runs low on disk space URL: https://hooknotifier.com/guides/get-notified-when-a-server-runs-low-on-disk Get a push notification before a server fills its disk. A short cron script checks free space and calls your Hook.Notifier URL when it crosses a threshold. Free. To get warned before a server fills its disk, run a small script from cron that checks free space and calls your Hook.Notifier URL when usage crosses a threshold. The warning arrives on your phone while there is still room to act. A full disk is one of those failures that takes everything down at once: the database stops writing, logs stop, the app dies. The fix is easy if you hear about it at 85 percent instead of 100. The check script #!/bin/bash # /usr/local/bin/check-disk.sh THRESHOLD=85 usage=$(df / | awk 'NR==2 {gsub("%","",$5); print $5}') if [ "$usage" -ge "$THRESHOLD" ]; then curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Disk%20almost%20full&body=Root%20filesystem%20at%20${usage}%25&priority=critical&color=%23EE6767&tags=alerts" fi Make it executable: chmod +x /usr/local/bin/check-disk.sh Run it on a schedule Add it to cron so it checks every 15 minutes: # crontab -e */15 * * * * /usr/local/bin/check-disk.sh Now the moment the root filesystem crosses 85 percent, your phone buzzes with the exact number, and priority=critical means it does so even at night. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then drop it into the script. Watch more than the root disk Point the check at any mount, or loop over several: for mount in / /var /data; do usage=$(df "$mount" | awk 'NR==2 {gsub("%","",$5); print $5}') if [ "$usage" -ge 85 ]; then curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Disk%20almost%20full&body=${mount}%20at%20${usage}%25&priority=critical&tags=alerts" fi done Why it matters Disk space fills slowly, then all at once. Almost every "the whole server went down overnight" story is a disk that quietly hit 100 percent. A five-line check that pings your phone at 85 percent turns a 3am outage into a two-minute cleanup. New to this? Start with how to send yourself a native push notification, or see how to get notified on SSH login. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I get alerted before a disk fills up? A: Run a small script from cron that reads disk usage with df, and when usage crosses a threshold, calls your Hook.Notifier URL. You get a push notification while there is still time to clear space. Q: Do I need a monitoring agent for disk alerts? A: No. A few lines of shell plus your Hook.Notifier URL are enough. No agent to install, no monitoring subscription. Q: Can the alert wake me at night? A: Yes. Add priority=critical so a nearly full disk cuts through your quiet hours, since it can take a whole server down. --- # Get notified when a Stripe payment fails or succeeds URL: https://hooknotifier.com/guides/get-notified-when-a-stripe-payment-fails Get a push notification the moment a Stripe payment fails or a new one comes in. Point a Stripe webhook at your Hook.Notifier URL. No app, no backend. Free. To get notified when a Stripe payment fails, add a webhook in your Stripe dashboard that points at your Hook.Notifier URL and select the payment_intent.payment_failed event. The failure shows up on your phone right away. Set it up in the Stripe dashboard No code needed. It takes a minute. In Hook.Notifier, go to Dashboard → Hooks and create a hook named Stripe. It gets its own URL and key, revocable anytime.In Stripe, go to Developers → Webhooks → Add endpoint and paste that URL as the endpoint.Select the events you care about: payment_intent.payment_failed for failed paymentsinvoice.payment_failed for failed subscription renewalscheckout.session.completed for new salesSave. The next time a payment fails, your phone lights up. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then paste it as the Stripe endpoint. Turn the raw payload into a readable message Stripe sends a full event payload. You do not need code or a middleman to shape it. On your hook's settings in the dashboard, define a payload template with paths resolved against the JSON Stripe posts. For invoice.payment_failed (subscription renewals): objectTemplate: Payment failedbodyTemplate: {{data.object.customer_email}} owes {{data.object.amount_due}} {{data.object.currency}} The notification arrives already readable, no Zapier or webhook handler in between. While you are on the hook's settings, set its defaults: tag payments so every Stripe event lands in its own colored folder, and priority high so a failed payment gets through even during your quiet hours. Why it matters A failed payment is often a card that expired or a subscriber about to churn. Catching it the moment it happens means you can reach out while it still counts, instead of finding out at the end of the month. New to this? Start with how to send yourself a native push notification. Common questions: Q: How do I get notified when a Stripe payment fails? A: In the Stripe dashboard, add a webhook pointing at your Hook.Notifier URL and select the payment_intent.payment_failed event. The failure lands on your phone as a push notification. Q: Can I get notified for successful payments too? A: Yes. Add the checkout.session.completed or payment_intent.succeeded event to the same webhook. Every sale pings your phone. Q: Do I need to write code for this? A: No. It is all done in the Stripe dashboard. Paste your Hook.Notifier URL, pick the events, save. --- # Get notified when a systemd service fails URL: https://hooknotifier.com/guides/get-notified-when-a-systemd-service-fails Get a push notification the moment a systemd service fails. Add an OnFailure hook that calls your Hook.Notifier URL. No agent, no monitoring stack. Free. To get notified when a systemd service fails, add an OnFailure= hook to the service that calls your Hook.Notifier URL. The moment the service enters the failed state, your phone gets a native push notification with its name. systemd already knows precisely when a unit fails. The gap is that nothing tells you. One templated hook closes it, with no monitoring stack. Create a reusable notifier unit Make one template unit that any service can trigger. It takes the failed service name as an argument: # /etc/systemd/system/notify-failure@.service [Unit] Description=Push a notification when %i fails [Service] Type=oneshot ExecStart=/usr/bin/curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Service%20failed&body=%i%20entered%20the%20failed%20state&priority=high&color=%23EE6767&tags=alerts" Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then drop it into the notifier unit. Point your services at it Add one line to any service you care about. The %n passes its own name to the template: # in your service unit, e.g. /etc/systemd/system/myapp.service [Unit] OnFailure=notify-failure@%n.service Reload systemd to apply: systemctl daemon-reload The next time myapp fails, systemd fires the hook and your phone buzzes with "myapp.service entered the failed state". Add the same OnFailure= line to every unit that matters. Test it Force a failure to confirm the whole chain works: systemctl start notify-failure@test.service You should get a push within a second or two. Why it matters The worst outages are the quiet ones: a service dies, the restart limit is hit, and it stays down until a customer notices. systemd hands you the failure event for free. Turning it into a push that reaches your pocket means you are the one who notices first. New to this? Start with how to send yourself a native push notification, or see how to get notified when a Docker container stops. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I get notified when a systemd service fails? A: Add OnFailure= to the service unit pointing at a small notifier unit that calls your Hook.Notifier URL. When the service enters the failed state, systemd runs the hook and your phone gets a native push notification with the service name. Q: Do I need a monitoring agent for this? A: No. systemd already emits the failure; a small OnFailure hook plus your Hook.Notifier URL turn it into a phone push. No agent, no monitoring subscription. Q: Can one hook cover every service? A: Yes. Write one templated notifier unit that takes the service name as an argument, then add the same OnFailure line to every unit you care about. --- # Get a notification when a webpage changes URL: https://hooknotifier.com/guides/get-notified-when-a-webpage-changes Get a push notification the moment a webpage changes: a price, a stock status, a job listing. A tiny script plus your Hook.Notifier URL. No paid tool. Free. To get notified when a webpage changes, run a small script on a schedule that fetches the page, compares it to the last version, and calls your Hook.Notifier URL when something is different. You get a push notification the moment it changes. The watcher script This fetches a page, stores a hash, and pings you when the hash changes. #!/bin/bash URL="https://example.com/the-page" NEW=$(curl -s "$URL" | md5sum | cut -d' ' -f1) OLD=$(cat /tmp/page.hash 2>/dev/null) if [ "$NEW" != "$OLD" ] && [ -n "$OLD" ]; then curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Page%20changed&body=${URL}" fi echo "$NEW" > /tmp/page.hash Run it on a schedule Check the page every ten minutes with cron. # crontab -e */10 * * * * /home/me/watch-page.sh The moment the page changes, your phone lights up. Watching without the buzz Some pages change often and none of it is urgent. Append &priority=low to the hook URL in the script and the changes pile up quietly in your inbox instead of pushing to your phone. You check them when you want, nothing wakes you. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then drop it into the script. Why it matters A price drop, a spot opening in a class, a job going live, a competitor updating their page. These reward whoever sees them first. A watcher script plus a notification means you are first without refreshing a tab all day. New to this? Start with how to send yourself a native push notification. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I get notified when a webpage changes? A: Run a small script on a schedule that fetches the page and compares it to the last version. When it changes, the script calls your Hook.Notifier URL and you get a push notification. Q: Do I need a paid change-detection service? A: No. A few lines of shell and a cron job are enough. Point the change at your Hook.Notifier URL for a free alert on your phone. --- # Get notified when Sentry catches a new error URL: https://hooknotifier.com/guides/get-notified-when-sentry-catches-an-error Get a push notification the moment Sentry catches a new error in production. Send Sentry alerts to your Hook.Notifier URL with a webhook. Free. To get a push notification from Sentry, add a webhook action to a Sentry alert rule and point it at your Hook.Notifier URL. When a new error appears in production, it lands on your phone right away. Sentry is excellent at catching and grouping errors. The gap is the delay between an error happening and you noticing. Hook.Notifier closes it with a native push. Add the webhook action in Sentry In Sentry, open your project and go to Alerts → Create Alert.Choose an Issues alert.Set the condition, for example A new issue is created, or The issue is seen more than N times in a period.Under Then perform these actions, add Send a notification via a webhook (an Internal Integration with a webhook URL).Point the webhook at your Hook.Notifier URL: https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=New%20Sentry%20error&body=A%20new%20issue%20was%20created%20in%20production&tags=errors&priority=high Save the rule and trigger a test error to confirm the push. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then use it as the webhook target in Sentry. Tune the noise Error alerts are useless if they fire constantly. Two habits keep them useful: Alert on new issues and on spikes, not on every event. A known error hitting once more is not news.Route to a dedicated tag like tags=errors so you can mute it during a deploy and un-mute after. Use priority=high for production and priority=normal for staging, so a real user-facing error is louder than a noisy test environment. Why it matters The first minutes of a new production error are when a fix is cheapest, before it spreads and before users start leaving. A push that reaches your phone the second Sentry catches it buys you those minutes. New to this? Start with how to send yourself a native push notification, or see get notified when a GitHub build fails. Common questions: Q: How do I get a push notification from Sentry? A: In Sentry, create an alert rule with a webhook action pointing at your Hook.Notifier URL. When a new issue is created or an error spikes, Sentry posts to the webhook and Hook.Notifier delivers a native push to your phone. Q: Can I get notified only for new issues, not every event? A: Yes. Set the alert condition to 'a new issue is created' (or an event frequency threshold) so you hear about genuinely new or spiking errors, not every single occurrence. Q: Do I need to write code for this? A: No. It is configured in Sentry's alert rules. Paste your Hook.Notifier URL as a webhook action and set your condition. --- # Get a push notification when someone signs up URL: https://hooknotifier.com/guides/get-notified-when-someone-signs-up Get a real push notification on your phone the moment a new user signs up. One webhook, no app to build, no backend. Works with any auth provider. Free. To get a push notification when someone signs up, send one request to your Hook.Notifier URL the moment a user is created. Add it to your signup code, or point your auth provider's webhook at it. That is the whole thing. curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=New%20signup&body=Someone%20just%20created%20an%20account" From your own signup code If your app handles signup, add one line right after you create the user. await createUser(data) await fetch("https://hooknotifier.com/{IDENTIFIER}/{KEY}", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ object: "New signup", body: `${data.email} just joined`, }), }) That is it. Every new account now pings your phone. From your auth provider (no code) If you use Clerk, Supabase, Auth0 or anything that sends webhooks, you do not need to touch your code. Open your provider's webhook settings.Add your Hook.Notifier URL as the endpoint: https://hooknotifier.com/{IDENTIFIER}/{KEY}Pick the user.created event. The next signup lands on your phone. Make it say who signed up Auth providers post the full user object as raw JSON. Create a dedicated hook in Dashboard → Hooks, use its URL as the webhook endpoint, and set a payload template with paths resolved against that JSON. With a Supabase webhook on your users table: objectTemplate: New signupbodyTemplate: {{record.email}} just joined The paths depend on your provider's payload, so check one sample event and pick the fields you want. Set the hook's defaults too, like a signups tag and a color, and every new user files into its own folder in the inbox. No code, no Zapier. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then paste it wherever a webhook is asked for. Why bother The first signups of anything you build are a rush. You want to feel them, not discover them the next morning in a dashboard. A notification the moment it happens keeps you close to your users, and it takes a minute to set up. Want the full picture of how notifications work? Read how to send yourself a native push notification. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I get notified when someone signs up? A: Send a request to your Hook.Notifier URL whenever a user is created. Do it from your signup code in one line, or from a webhook if your auth provider (Clerk, Supabase, Auth0) sends one. The notification lands on your phone. Q: Does it work with Clerk, Supabase or Auth0? A: Yes. Any auth provider that can send a webhook on user creation works. Paste your Hook.Notifier URL as the webhook endpoint and pick the user.created event. Q: Do I need my own backend? A: No. If your app already creates users, add one HTTP request. If your auth provider sends webhooks, you do not even need that. --- # Get a phone notification when your website goes down URL: https://hooknotifier.com/guides/get-notified-when-your-website-goes-down Get a real push notification the moment your website goes down. A tiny monitor script plus your Hook.Notifier URL. No app, no paid uptime service. Free. To get notified when your website goes down, run a small script on a schedule that checks your site and calls your Hook.Notifier URL when the check fails. You get a push notification the moment it happens, with no paid uptime service. Here is the whole check, in one line: curl -sf https://yoursite.com > /dev/null || curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Site%20down&body=yoursite.com%20is%20not%20responding&priority=critical" If your site answers, nothing happens. If it does not, your phone rings. The priority=critical makes the alert cut through quiet hours, because downtime at 3am is exactly the notification that should wake you. Run it every minute with cron Put the check on a schedule so it watches your site around the clock. # crontab -e * * * * * curl -sf https://yoursite.com > /dev/null || curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Site%20down&body=yoursite.com%20is%20not%20responding&priority=critical" That is a full uptime monitor. Free, running on any server or Raspberry Pi you already have. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then drop it into the script. Already using a monitor If you run Uptime Kuma, Healthchecks, or a similar tool, you do not need the script. Point its webhook or custom notification at your Hook.Notifier URL and downtime alerts land on your phone. Relay it to Slack too If your team lives in Slack, add an outgoing webhook in the dashboard. Hook.Notifier forwards the same downtime alert to your Slack channel, so you get the push on your phone and the team sees it in the channel, from one hook. Why it matters Downtime costs the most in the minutes before you notice. A notification the second your site stops answering turns a lost afternoon into a two minute fix. New to this? Start with how to send yourself a native push notification. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I get notified when my website goes down? A: Run a small script on a schedule that checks your site. When the check fails, it calls your Hook.Notifier URL and you get a push notification on your phone. No paid uptime service needed. Q: Do I need a paid uptime monitoring service? A: No. A few lines of shell and a cron job are enough. Point the failure at your Hook.Notifier URL and you have free downtime alerts on your phone. Q: Can I use an existing monitor like Uptime Kuma? A: Yes. Any monitor that supports webhooks or custom notifications can call your Hook.Notifier URL. Paste it as the notification endpoint. --- # Get push notifications from Grafana alerts URL: https://hooknotifier.com/guides/get-push-notifications-from-grafana-alerts Send Grafana alerts to your phone as native push notifications. Add a webhook contact point pointing at your Hook.Notifier URL. No paid plan. Free. To get Grafana alerts on your phone, create a Webhook contact point in Grafana Alerting that points at your Hook.Notifier URL, then attach it to your notification policy. A firing alert lands on your phone as a native push notification. Grafana is great at spotting the problem. Turning that into a phone push usually means a paid integration. Hook.Notifier is a free last mile. Create the webhook contact point In Grafana, go to Alerting → Contact points → Add contact point.Set the integration to Webhook.In URL, paste your Hook.Notifier URL with a title and body: https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Grafana%20alert&body=A%20rule%20is%20firing&tags=monitoring&priority=high Save, then use Test to send yourself a sample push.In Notification policies, route the alerts you care about to this contact point. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then paste it into the contact point. Separate warnings from incidents Not every alert deserves the same loudness. Route by severity to different tags and priorities: Warnings: tags=warning and priority=normal (waits for your quiet hours).Critical incidents: tags=incident and priority=critical (wakes you). That way a slow-burning warning stays quiet at night while a page-worthy incident cuts through. Why it matters Dashboards are where problems live until someone looks. An alert that pushes to your phone means you look because it found you, not the other way around. One webhook contact point gives Grafana that reach, for free. New to this? Start with how to send yourself a native push notification, or see the same idea for when your website goes down. Common questions: Q: How do I get Grafana alerts on my phone? A: In Grafana Alerting, create a Webhook contact point pointing at your Hook.Notifier URL and attach it to your notification policy. When an alert fires, Grafana posts to the webhook and Hook.Notifier delivers a native push to your phone. Q: Does this work with self-hosted Grafana? A: Yes. A webhook contact point works on any Grafana install, self-hosted or cloud, with no paid notification integration. Q: Can I make critical alerts break through Do Not Disturb? A: Yes. Add priority=critical to your Hook.Notifier URL so a firing alert cuts through your quiet hours. --- # Get push notifications from Home Assistant URL: https://hooknotifier.com/guides/get-push-notifications-from-home-assistant Send Home Assistant automations to your phone as native push notifications. Add a REST command or notify action pointing at your Hook.Notifier URL. Free. To send Home Assistant events to your phone, add a REST command that calls your Hook.Notifier URL, then trigger it from your automations. The event arrives as a native push notification, with no cloud subscription required. Home Assistant is excellent at knowing what happens in your home. Getting a reliable native push out of it usually means a paid cloud add-on or a fiddly companion setup. Hook.Notifier is a simpler last mile. Add a REST command In your configuration.yaml, define a reusable command: rest_command: push_notify: url: "https://hooknotifier.com/{IDENTIFIER}/{KEY}" method: POST payload: '{"object": "{{ title }}", "body": "{{ message }}", "tags": "{{ tag }}"}' content_type: "application/json" Restart Home Assistant (or reload REST commands) to pick it up. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then drop it into the REST command. Call it from an automation Now any automation can ping your phone. For example, tell me when the freezer door has been open too long: automation: - alias: "Freezer door left open" trigger: - platform: state entity_id: binary_sensor.freezer_door to: "on" for: "00:02:00" action: - service: rest_command.push_notify data: title: "Freezer door open" message: "The freezer has been open for 2 minutes" tag: "home" Make urgent alerts wake you For anything that is a real problem, add priority so it cuts through your quiet hours. Extend the payload with "priority": "critical": payload: '{"object": "{{ title }}", "body": "{{ message }}", "tags": "{{ tag }}", "priority": "critical"}' A water leak or a smoke sensor should wake you at 3am; a "laundry done" should wait for the morning. Use normal for the calm stuff and critical for the incidents. Why it matters Your home already generates the events. What is usually missing is a dependable native push that reaches your pocket without a subscription or a self-hosted push server. One REST command gives every Home Assistant automation that reach, for free. New to this? Start with how to send yourself a native push notification. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I send a Home Assistant notification to my phone? A: Add a rest_command in your Home Assistant configuration that calls your Hook.Notifier URL, then call that command from any automation. The event lands on your phone as a native push notification. Q: Do I need the Home Assistant Cloud subscription for this? A: No. A REST command to your Hook.Notifier URL works on any Home Assistant install, self-hosted included, with no cloud add-on or subscription. Q: Can different automations use different tags? A: Yes. Pass tags in the URL, for example tags=security or tags=laundry, so you can route and mute categories of home events separately. --- # Get push notifications from Prometheus Alertmanager URL: https://hooknotifier.com/guides/get-push-notifications-from-prometheus-alertmanager Send Prometheus Alertmanager alerts to your phone as native push notifications. Add a webhook receiver pointing at your Hook.Notifier URL. Free. To get Prometheus alerts on your phone, add a webhook receiver in Alertmanager that points at your Hook.Notifier URL, then route alerts to it. A firing alert arrives on your phone as a native push notification. Alertmanager does the hard part: grouping, de-duplicating, silencing and routing. What it does not include is a native phone push. Hook.Notifier is a free receiver for that. Add a webhook receiver In your alertmanager.yml, define a receiver and route to it: receivers: - name: hooknotifier webhook_configs: - url: "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Alert%20firing&body=A%20Prometheus%20alert%20is%20active&tags=monitoring&priority=high" send_resolved: true route: receiver: hooknotifier Reload Alertmanager to apply it. Firing alerts now reach your phone, and with send_resolved: true you also get the recovery. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then paste it into the webhook receiver. Route by severity Alertmanager routing is the whole point. Send warnings and critical pages to different Hook.Notifier URLs with different priorities: route: receiver: warnings routes: - matchers: [ severity="critical" ] receiver: critical receivers: - name: warnings webhook_configs: - url: "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Warning&body=A%20warning%20is%20firing&tags=warning&priority=normal" - name: critical webhook_configs: - url: "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=CRITICAL&body=A%20critical%20alert%20is%20firing&tags=incident&priority=critical&color=%23EE6767" A warning waits for your quiet hours; a critical page cuts through them. Both land in a tagged inbox you can search later. Why it matters You already invested in Prometheus and Alertmanager to know exactly when something is wrong. The last step is a delivery channel that reaches your pocket without a paid integration or another push server to run. One webhook receiver closes it, for free. New to this? Start with how to send yourself a native push notification, or see the simpler Grafana alerts guide. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I get Prometheus alerts on my phone? A: Add a webhook_configs receiver in your Alertmanager config pointing at your Hook.Notifier URL, then route your alerts to it. When an alert fires, Alertmanager posts to the webhook and Hook.Notifier delivers a native push to your phone. Q: Does this need a paid notification integration? A: No. Alertmanager's built-in webhook receiver plus your Hook.Notifier URL is enough. No paid PagerDuty-style integration, no self-hosted push server. Q: Can I make critical alerts break through Do Not Disturb? A: Yes. Put priority=critical in the Hook.Notifier URL for your critical route so a firing alert cuts through your quiet hours. --- # Get push notifications from Uptime Kuma URL: https://hooknotifier.com/guides/get-push-notifications-from-uptime-kuma Send Uptime Kuma alerts to your phone as native push notifications. Add a webhook notification pointing at your Hook.Notifier URL. No extra app. Free. To get Uptime Kuma alerts on your phone, add a Webhook notification in Uptime Kuma that points at your Hook.Notifier URL. When a monitor goes down or comes back, the alert lands on your phone as a native push notification. Uptime Kuma is great at watching your services. What it does not do is deliver a native push to your phone without wiring up a third-party app. Hook.Notifier is that last mile. Add the webhook in Uptime Kuma In Uptime Kuma, open Settings → Notifications → Setup Notification.Set Notification Type to Webhook.In Post URL, paste your Hook.Notifier URL with a title and body: https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Service%20down&body=A%20monitor%20changed%20state&tags=monitoring&priority=high Set the Request Body to Preset - application/json (Uptime Kuma will POST the event details).Save, then click Test to send yourself a sample push. Assign the notification to each monitor you care about (or set it as default for all). Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then paste it into Uptime Kuma. Make outages impossible to ignore An uptime alert that waits politely until morning is not much of an alert. Two parameters fix that: priority=critical cuts through your quiet hours, so a real outage wakes you even at night.color=%23EE6767 shows the alert in red in your inbox, so a down service stands out from routine pings. ...?object=DOWN%3A%20api.example.com&body=No%20response%20for%202%20minutes&priority=critical&color=%23EE6767&tags=monitoring Keep recoveries separate Route "up" and "down" to different tags so your inbox stays readable: Down alerts: tags=outageRecovery alerts: tags=recovered Then you can mute recoveries and keep only the outages loud, all from the tag settings in your dashboard. Why it matters Self-hosting Uptime Kuma already gives you the monitoring. The missing piece is a reliable native push that reaches your pocket without another account to manage. Hook.Notifier closes that gap in one webhook, for free. New to this? Start with how to send yourself a native push notification, or see how to get notified when your website goes down. Common questions: Q: How do I get Uptime Kuma alerts on my phone? A: In Uptime Kuma, add a Webhook notification pointing at your Hook.Notifier URL. When a monitor goes down or recovers, Uptime Kuma posts to the webhook and Hook.Notifier delivers a native push notification to your phone. Q: Do I need to self-host anything extra? A: No. You already self-host Uptime Kuma; Hook.Notifier is the hosted last mile that turns its webhook into a phone push. No push server, no Firebase to run. Q: Can I make outage alerts break through Do Not Disturb? A: Yes. Add priority=critical to your Hook.Notifier URL. Critical notifications cut through your quiet hours so a real outage still wakes you. --- # How to get push notifications on Android without building an app URL: https://hooknotifier.com/guides/get-push-notifications-on-android-without-an-app You want a real push notification on your Android phone when something happens, but you do not want to build an app, set up Firebase Cloud Messaging, or run a server. Here are the honest options, and the shortest one. You want your Android phone to buzz when something happens. A new order comes in. A container crashes. A backup finishes. A webhook fires. On Android this sounds like it needs a full app and Firebase. It does not. Here are the real options, compared honestly, and then the shortest one. Why Android push feels like a project A native Android push notification normally travels through Firebase Cloud Messaging (FCM). To send through FCM yourself you need to: Create a Firebase project and register an app.Build and publish an Android app to hold the device token.Keep tokens in sync as they rotate.Run a server that calls the FCM API. That is a real project just to make your phone buzz. The shortcut: you do not have to be the one who built the app. If an app already exists that receives pushes and gives you a URL to trigger them, you skip every step above. The honest options Tasker and automation apps Tasker (and similar automation apps) can do a lot on the device: react to events, show local notifications, run tasks. If your trigger happens on the phone itself, this is powerful. The limit: reacting to an outside server event means polling a URL on a timer or adding plugins, which is fragile and drains battery. Excellent for on-device automation. Not built to receive a push from an external service. ntfy ntfy is open source and can be self-hosted, which is a big draw on Android where people like control. You publish to a topic over HTTP and subscribe on your phone. The trade-off is that topics are the unit of privacy, and how polished and instant it feels depends on your setup. A strong pick if you want to run your own server. Pushover Pushover is a dedicated send-an-HTTP-request-get-a-push app, well made and long-lived. It is a paid app (a one-time purchase per platform). Some prefer paying once for a focused tool. Check the current price on the Pushover site before you decide. A Telegram or Discord bot The familiar free workaround: point your event at a Telegram or Discord bot so the chat app buzzes. It works. But it is a chat message, not a notification. It mixes with your conversations, it is easy to mute by accident, and you cannot shape it into a real notification with a title, a color, a priority and a filterable inbox. A ready-made notification inbox (the shortest path) This is where Hook.Notifier sits. Install one app, get a personal URL, and anything that can make an HTTP request pushes a native notification to your Android phone. No Firebase, no server, no chat app in the middle. You also get a browser inbox, so a notification is never a buzz you missed. The shortest path, step by step 1. Get your URL Create a free account. You get an identifier and a key. Together they are your personal hook: Your hook: https://hooknotifier.com/{IDENTIFIER}/{KEY} 2. Install the app on your phone Get the Android app and sign in. This one install replaces building your own app. It holds the FCM token for you. 3. Call your URL Anything that can make an HTTP request can now notify you. The simplest test is a browser or curl: curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Hello&body=My%20first%20Android%20notification" Your phone buzzes with a real native notification, and the same notification lands in your browser inbox too. Send from real events The point is to wire your phone to the things you care about, not to curl yourself by hand. From a webhook (Stripe, GitHub, Supabase, your own app). Paste your hook as the webhook URL and map the event: curl -X POST "https://hooknotifier.com/{IDENTIFIER}/{KEY}" \ -H "Content-Type: application/json" \ -d '{"object":"New order","body":"Someone just bought something","tags":"shop"}' From a no-code automation. In Zapier or Make, add a webhook action pointed at your hook and map the fields. From a server or script. Add one line and your phone tells you when it is done: docker compose up -d && curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Stack&body=Containers%20are%20up" Shape the notification Control how the notification looks and behaves with a few parameters. ParameterTypeDescriptionobjectStringTitle of the notification requiredbodyStringContent of the notificationtagsString,String,...Tags to organise and filter your inboxcolorColor String (#000000)Accent color of the notificationredirectUrlUrl StringURL opened when you tap the notificationprioritylow / normal / high / criticalHow insistent the push is High and critical priority push through your quiet hours, so monitoring wakes you while a nightly job stays quiet. So which should you pick If your trigger lives on the phone, Tasker is powerful. If you want to self-host, ntfy is a solid open-source choice. If you want your Android phone to buzz whenever an event fires anywhere, with the least setup and a real inbox behind it, a ready-made notification app is the shortest path. Hook.Notifier does that for free. Create a free account, install the Android app, and paste your hook into a browser tab. Your phone buzzes. Then point a real webhook or automation at the same URL. Prefer a visual approach? Your dashboard has a Notif. Builder that composes the URL for you with a live preview. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: Can I get a push notification on Android without building an app? A: Yes. You do not need to build an Android app or set up Firebase Cloud Messaging. Install a ready-made notification app like Hook.Notifier, and any event that can make an HTTP request can push a native notification to your phone. Q: What is the easiest way to send a push notification to my Android phone? A: Make one HTTP request to a personal URL. With Hook.Notifier you create a free account, get your URL, install the app once, and any webhook, script or automation that calls the URL sends you a native push. Q: Can Tasker send me a push notification from a server? A: Tasker is powerful for on-device automation and can show local notifications, but reacting to an external server event usually means polling or extra plugins. For 'notify me when my webhook fires', a ready-made notification app that receives the push for you is simpler. Q: Do I need a Google Play Developer account or Firebase? A: No. Firebase Cloud Messaging and a developer account are only needed if you build and publish your own app. Using a ready-made notification app, you need neither. --- # How to get push notifications on your iPhone without building an app URL: https://hooknotifier.com/guides/get-push-notifications-on-iphone-without-an-app You want a real push notification on your iPhone when something happens, but you do not want to build an iOS app, set up APNs, or manage certificates. Here are the honest options, and the shortest one. You want your iPhone to buzz when something happens. A payment lands. A server goes down. A long script finishes. A form gets submitted. On iOS this sounds like it needs a whole app. It does not. Here are the real options, compared honestly, and then the shortest one. Why iPhone push feels locked down A native iOS push notification normally travels through Apple Push Notification service (APNs). To send through APNs yourself you need to: Enrol in the Apple Developer Program.Create push certificates or an APNs key.Build and ship an iOS app to hold the device token.Run a server that talks to APNs. That is a lot of work to make your phone buzz. The good news: you do not have to be the one who built the app. If an app already exists that receives pushes and hands you a URL to trigger them, you skip every step above. The honest options iOS Shortcuts (local only) The Shortcuts app can show a notification and its automations can react to some on-device triggers (arriving somewhere, a time of day, connecting to Wi-Fi). It is genuinely useful and already on your phone. The limit: Shortcuts cannot receive a push from an outside server by itself. So "notify me when my webhook fires" or "when my server runs low on disk" is out of its reach unless you keep the Shortcuts app polling, which is fragile. Great for local, personal automations. Not built for external events. Pushover Pushover is a dedicated app for exactly this: send an HTTP request, get a push. It is well made and has been around for years. It is a paid app (a one-time purchase per platform), which some people prefer and others do not. Check its current pricing on the Pushover site before you commit. ntfy ntfy is open source and can be self-hosted, which developers love. You publish to a topic and subscribe on your phone. The trade-off is that topics are the unit of privacy, and the polished, hosted, ready-in-a-minute experience depends on how you set it up. A strong pick if you want to run your own infrastructure. A Telegram or Discord bot The classic workaround: point your event at a Telegram or Discord bot and let the chat app buzz. It works and it is free. But it is not really a notification, it is a chat message. It mixes with your conversations, it is easy to mute by accident, and shaping it (title, color, priority, an inbox you can filter) is not what chat apps are for. A ready-made notification inbox (the shortest path) This is the category Hook.Notifier is in. You install one app, you get a personal URL, and anything that can make an HTTP request pushes a native notification to your iPhone. No APNs, no certificates, no server, no chat app in the middle. You also get an inbox in your browser, so a notification is never just a buzz you missed. The shortest path, step by step 1. Get your URL Create a free account. You get an identifier and a key. Together they are your personal hook: Your hook: https://hooknotifier.com/{IDENTIFIER}/{KEY} 2. Install the app on your iPhone Get the iOS app and sign in. This is the one install that replaces building your own. It holds the push token so you do not have to. 3. Call your URL Anything that can make an HTTP request can now notify you. The simplest test is a browser or curl: curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Hello&body=My%20first%20iPhone%20notification" Your iPhone buzzes with a real native notification. The same notification also lands in your browser inbox, so you can come back to it later. Send from real events The point is not to curl yourself by hand. It is to wire your iPhone to the things you care about. From a webhook (Stripe, GitHub, Cal.com, Supabase). Paste your hook as the webhook URL and map the event: curl -X POST "https://hooknotifier.com/{IDENTIFIER}/{KEY}" \ -H "Content-Type: application/json" \ -d '{"object":"New payment","body":"You just got paid","tags":"stripe"}' From a no-code automation. In Zapier or Make, add a webhook action pointed at your hook, and map the fields from the trigger. From a server or script. Add one line at the end and your phone tells you when the job is done: ./deploy.sh && curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Deploy&body=Production%20is%20live" Shape the notification You can control how the notification looks and behaves with a few parameters. ParameterTypeDescriptionobjectStringTitle of the notification requiredbodyStringContent of the notificationtagsString,String,...Tags to organise and filter your inboxcolorColor String (#000000)Accent color of the notificationredirectUrlUrl StringURL opened when you tap the notificationprioritylow / normal / high / criticalHow insistent the push is High and critical priority cut through your quiet hours, so your monitoring can wake you while your nightly cron stays silent. So which should you pick If you want a personal, on-device automation and nothing external, iOS Shortcuts is already on your phone. If you want to self-host, ntfy is a solid open-source choice. If you just want your iPhone to buzz when an event fires anywhere, with the least setup and a real inbox to fall back on, a ready-made notification app is the shortest path. Hook.Notifier does that for free. Create a free account, install the iOS app, and paste your hook into a browser tab. Your iPhone buzzes. Then point a real webhook or automation at the same URL. Prefer a visual approach? Your dashboard has a Notif. Builder that composes the URL for you with a live preview. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: Can I get a push notification on my iPhone without building an app? A: Yes. You do not need to build an iOS app or set up Apple Push Notification service. Install a ready-made notification app like Hook.Notifier, and any event that can make an HTTP request can push a native notification to your iPhone. Q: What is the easiest way to send a push notification to my iPhone? A: Make one HTTP request to a personal URL. With Hook.Notifier you create a free account, get your URL, install the app once, and any webhook, script or automation that calls the URL sends you a native push. Q: Can iOS Shortcuts send me a push notification? A: Shortcuts can show a local notification on the same device, and its automations can react to some triggers. But it cannot receive a push from an external server on its own, so it does not cover the case of being notified when something happens on a server or in a webhook. Q: Do I need an Apple Developer account? A: No. An Apple Developer account and APNs certificates are only needed if you build and ship your own app. Using a ready-made notification app, you need none of that. --- # How to add push notifications without Firebase URL: https://hooknotifier.com/guides/push-notifications-without-firebase You do not need Firebase to send push notifications. Here is the shortest path to a real notification on your phone: one HTTP request to a hook URL. Free. You do not need Firebase to send push notifications. Firebase Cloud Messaging is one way to do it, but it is a lot of setup. The shortest path is a single HTTP request to a personal URL: curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Hello&body=No%20Firebase%20needed" That sends a real native notification to your phone. No project, no tokens, no backend. What Firebase actually asks of you The reason "add push notifications" feels heavy is that the standard answer is Firebase, and Firebase asks you to: Create and configure a Firebase project.Register and store device tokens, and keep them in sync as they rotate.Run a backend to hold the tokens and send the messages.Build an app to receive them. That is a real project on its own, just to ping a phone when something happens. The shortcut Hook.Notifier already is the backend, the app, and the inbox. You get a personal URL and you call it. All the token juggling and infrastructure is on our side. import requests requests.post("https://hooknotifier.com/{IDENTIFIER}/{KEY}", json={ "object": "New order", "body": "You just made a sale", }) Same idea in any language: make an HTTP request, get a notification. And you skip more than the plumbing. Features you would have to build on top of Firebase come with the URL: priorities, quiet hours, scheduled sends, markdown bodies, action buttons, and updating a sent notification in place by its id. All free. When you still want Firebase If you are shipping your own branded app with fully custom push, Firebase or APNs is the right tool and worth the work. But if you just want to be notified when something happens, in your app, your script, or your webhook, you do not need any of it. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours and send your first notification. Try it Compose a notification below and send it to yourself to see it land, with no Firebase in sight. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: Can I send push notifications without Firebase? A: Yes. Firebase Cloud Messaging is only one way to do it, and it carries a lot of setup. With Hook.Notifier you send a native notification from a single HTTP request to your personal URL, with no Firebase, no device tokens, and no backend. Q: Why is Firebase so much work for notifications? A: To use Firebase you set up a project, register device tokens, keep them in sync, run a server to store them and send messages, and build an app to receive them. Hook.Notifier gives you the app and the inbox, so you skip all of it and just call a URL. Q: Is there a free way to add push notifications? A: Yes. Hook.Notifier is free. Create an account, get your URL, and call it from anything that can make an HTTP request. --- # Send yourself a notification from a shell script or cron job URL: https://hooknotifier.com/guides/send-a-notification-from-a-shell-script Send yourself a push notification from any shell script or cron job with one line of curl. No app, no backend. Free with Hook.Notifier. To send yourself a notification from a shell script, add one line of curl that calls your Hook.Notifier URL. Put it wherever you want the ping. curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Done&body=The%20script%20finished" Notify on finish Drop it at the end of any long job so you know the moment it wraps up. ./train-model.sh curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Training%20done&body=The%20model%20finished%20training" Success or failure, two messages Use && and || to send a different notification depending on how the command went. ./deploy.sh \ && curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Deploy%20OK&body=Production%20is%20live" \ || curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Deploy%20failed&body=Check%20the%20logs&color=%23EE6767" From a cron job Same line, inside your crontab. Here your nightly backup pings you when it is done. # crontab -e 0 3 * * * /home/me/backup.sh && curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Backup&body=Nightly%20backup%20finished&priority=low" Note the priority=low. A nightly log does not deserve a 3am buzz: low priority lands in your inbox without pushing your phone. Save high or critical for the failures. One notification for a long job A long script does not need two notifications. The send returns {"status":"ok","id":42}. Keep the id, then PUT to the same URL plus /id to update the notification in place. The "started" push becomes the "done" push. ID=$(curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Migration&body=Started" | grep -o '[0-9]\+') ./migrate.sh curl -s -X PUT "https://hooknotifier.com/{IDENTIFIER}/{KEY}/$ID?object=Migration&body=Done" A reminder from the terminal delay schedules the send (30s, 10m, 2h, 1d, up to 3 days), which turns your hook into a one line reminder. curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Reminder&body=Check%20the%20staging%20deploy&delay=2h" Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then paste it into your scripts. Why it matters Long jobs and cron tasks run when you are not watching. A one line ping means you stop babysitting a terminal and find out the moment something finishes or breaks. New to this? Start with how to send yourself a native push notification. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I send a notification from a bash script? A: Add one line of curl that calls your Hook.Notifier URL. Put it at the end of your script and your phone pings when the script finishes. Q: How do I get notified when a cron job finishes or fails? A: Chain a curl to your Hook.Notifier URL after your command. Use && for success and || for failure to send a different message for each. Q: Do I need to install anything? A: No. If you have curl, you are done. No SDK, no app, no backend. --- # How to send a push notification from a webhook URL: https://hooknotifier.com/guides/send-a-push-notification-from-a-webhook Turn any webhook into a native push notification on your phone. Point the webhook at your Hook.Notifier URL and you get notified. No app, no Firebase. Free. To send a push notification from a webhook, point the webhook at your Hook.Notifier URL. When the service fires it, a native notification lands on your phone. There is no server to run and no app to build. A webhook is just an HTTP request a service sends when something happens. The problem is that a webhook has nowhere useful to land: your phone cannot receive one directly. Hook.Notifier is the endpoint that catches it and turns it into a real push. The idea in one line Your Hook.Notifier URL is a webhook endpoint that pushes to your phone: https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Something%20happened&body=Details%20here Any service that lets you set a webhook URL can point at this. GET or POST, both work. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then paste it wherever the service asks for a webhook. Paste it into the service The steps are the same everywhere: Find the webhooks or notifications settings in the service (Stripe, GitHub, Shopify, Supabase, a monitoring tool, a no-code automation, anything).Add a new webhook and paste your Hook.Notifier URL as the target.If the service lets you, map the event to an object (title) and body.Save and fire a test event. The test lands on your phone. That is the whole setup. Turn raw webhook JSON into a clean notification Some services POST a big JSON body you do not control. Instead of a wall of data, use a named hook with a payload mapping template: it reads fields from the incoming JSON and renders a readable title and body. For example, map an incoming { "customer": "Acme", "amount": 4200 } into "New order from Acme, $42.00", without standing up a middleman service to reshape it. Route and prioritize Because it is just a URL, you can tune each webhook: tags=payments or tags=alerts to route and filter in your inbox.priority=high or priority=critical so urgent webhooks cut through your quiet hours.color=%23EE6767 to make a failure stand out in red. Give each source its own named hook and you get a separate, revocable URL per service, with its own defaults. Why it matters Webhooks are everywhere; a phone that receives them is not. Building that bridge yourself means Firebase, Apple push certificates, a backend to store device tokens, and an app to receive them. Hook.Notifier is that bridge as a single URL, for free. Next, see a concrete one: get notified when a Stripe payment fails, or start with how to send yourself a native push notification. Common questions: Q: How do I turn a webhook into a push notification? A: Give the service your Hook.Notifier URL as the webhook target. When the service fires the webhook, Hook.Notifier receives it and delivers a native push notification to your phone. No backend to build. Q: Do I need to run a server to receive the webhook? A: No. Hook.Notifier is the receiving endpoint. You paste its URL into the service, and it handles receiving the webhook and pushing to your phone. Q: Can I turn the webhook's data into a readable notification? A: Yes. Pass the title and body as query parameters, or use a named hook with a payload mapping template to turn raw webhook JSON into a clean notification without a middleman. --- # How to send a push notification from curl URL: https://hooknotifier.com/guides/send-a-push-notification-from-curl Send a native push notification to your phone from a single curl command. Point curl at your Hook.Notifier URL. No app, no Firebase, no dev account. Free. To send a push notification from curl, call your Hook.Notifier URL with a title and body. One command, and a native notification appears on your phone. No SDK, no API keys, no app to build. curl is on every server and every laptop. That makes it the simplest possible way to notify yourself: if a machine can run curl, it can push to your phone. The one-liner curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Hello&body=From%20curl" object is the title, body is the message. That is the minimum. Run it and check your phone. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then use it in any curl command. Add priority, color and tags Everything is a query parameter, so you can shape the notification inline: curl -s "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Deploy%20failed&body=Build%20%23431%20did%20not%20pass&priority=high&color=%23EE6767&tags=ci" priority=high or critical cuts through your quiet hours.color=%23EE6767 (url-encoded #EE6767) shows the notification in red.tags=ci routes it into a tag folder in your inbox. POST with a JSON body If you would rather send JSON, POST it: curl -s -X POST "https://hooknotifier.com/{IDENTIFIER}/{KEY}" \ -H "Content-Type: application/json" \ -d '{"object": "Hello", "body": "From curl via POST", "priority": "normal"}' Both forms do the same thing; use whichever fits the tool you are calling from. Escape spaces and special characters In a URL, spaces become %20 and # becomes %23. If your body is built from a variable, let curl encode it for you with --data-urlencode: curl -s -G "https://hooknotifier.com/{IDENTIFIER}/{KEY}" \ --data-urlencode "object=Backup done" \ --data-urlencode "body=Finished in ${elapsed}s" This is the safe way to send dynamic text without worrying about encoding. Why it matters Every other way to push to a phone wants an SDK, a project, API keys, and a mobile app. curl against one URL needs none of that. It drops into a cron job, a CI step, a deploy script, or a one-off command in seconds, and it is free. Next: chain it to notify you when a long command finishes, or use it in a full shell script. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I send a push notification with curl? A: Run curl against your Hook.Notifier URL with an object and body: curl -s 'https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Hello&body=From%20curl'. A native notification lands on your phone. Q: Do I need API keys or an SDK? A: No. Your personal Hook.Notifier URL is the whole credential. curl is already on your machine, and there is no SDK to install. Q: Can I send it from a script or cron? A: Yes. It is just curl, so it drops into any shell script, cron job, CI step, or Makefile. Chain it after a command to be notified when the command finishes. --- # Send yourself a push notification from PHP URL: https://hooknotifier.com/guides/send-a-push-notification-from-php Send yourself a real push notification from any PHP script with a few lines of curl. No app to build, no backend. Free with Hook.Notifier. To send yourself a push notification from PHP, make one request to your Hook.Notifier URL. A few lines of curl and your phone rings. "New order", "body" => "You just made a sale", ])); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_exec($ch); curl_close($ch); The short version If you just need a quick ping and do not need the response, a one-liner works too. "Import", "body" => "Done, 4210 rows imported", ])); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_exec($ch); curl_close($ch); Add markdown=true and the body renders as markdown, bold, lists, links and all. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then drop it into your script. Why it matters PHP runs the web behind a lot of stores and sites. A few lines turn any event on your server, an order, a form, a cron task, into a notification on your phone the moment it happens. New to this? Start with how to send yourself a native push notification. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I send a push notification from PHP? A: Make an HTTP request to your Hook.Notifier URL with curl or file_get_contents. A few lines send a real native notification to your phone. No app or backend needed. Q: Does it work inside WordPress or Laravel? A: Yes. It is a plain HTTP request, so it works from any PHP context: a WordPress hook, a Laravel job, a cron script, or a raw PHP file. --- # Send yourself a push notification from Python URL: https://hooknotifier.com/guides/send-a-push-notification-from-python Send yourself a real push notification from any Python script with a few lines and the requests library. No app to build, no backend. Free. To send yourself a push notification from Python, make one request to your Hook.Notifier URL with the requests library. A few lines and your phone rings. import requests requests.post("https://hooknotifier.com/{IDENTIFIER}/{KEY}", json={ "object": "Done", "body": "My Python script finished", }) A fuller example Here is a script that notifies you when a long job finishes, with a color and tags. import requests def notify(object, body): requests.post("https://hooknotifier.com/{IDENTIFIER}/{KEY}", json={ "object": object, "body": body, "tags": "python,jobs", }) # ... your long-running work ... notify("Training done", "The model finished after 3 hours") Notify on error too Wrap your work so a crash reaches your phone instead of a silent log. try: run_the_job() notify("Job done", "Everything went fine") except Exception as e: notify("Job failed", str(e)) raise Priorities and live updates Two parameters worth knowing. priority (low, normal, high, critical) decides how loud the ping is: low skips the phone push, high and critical cut through quiet hours. And the send returns an id you can PUT back to, updating the notification in place instead of stacking new ones. import requests url = "https://hooknotifier.com/{IDENTIFIER}/{KEY}" # Send returns {"status": "ok", "id": 42} res = requests.post(url, json={ "object": "Batch job", "body": "Started", "priority": "low", }) notification_id = res.json()["id"] # ... run the job ... # Update the same notification in place requests.put(f"{url}/{notification_id}", json={ "object": "Batch job", "body": "Done, 4210 rows processed", }) Add "markdown": True and the body renders as markdown, bold, lists, links and all. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then drop it into your script. Why it matters Python scripts often run for a while and then sit there, waiting for you to check. A couple of lines turn that into a phone that tells you the moment the work is done or broken. New to this? Start with how to send yourself a native push notification. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I send a push notification from Python? A: Make an HTTP request to your Hook.Notifier URL with the requests library. A few lines send a real native notification to your phone. No app or backend needed. Q: Do I need any special library? A: No. The requests library is enough, and even the standard library works. There is no SDK to install. --- # Send push notifications from n8n URL: https://hooknotifier.com/guides/send-push-notifications-from-n8n Send yourself a native push notification from an n8n workflow. Add an HTTP Request node pointing at your Hook.Notifier URL. No app to build. Free. To send a push notification from n8n, add an HTTP Request node to your workflow and point it at your Hook.Notifier URL. When the workflow reaches that step, a native notification lands on your phone. n8n is a powerful automation tool, self-hosted or cloud. The one thing it cannot do on its own is reach you outside the browser. Hook.Notifier is the last mile. Add the HTTP Request node In your workflow, add an HTTP Request node where you want the ping.Set Method to GET (or POST).Set URL to your Hook.Notifier URL with an object and body: https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Workflow%20done&body=Your%20n8n%20run%20finished Execute the node once to send yourself a test. That single node turns any workflow into one that pings your phone when it matters. Your Hook.Notifier URL is https://hooknotifier.com/{IDENTIFIER}/{KEY}. Create a free account to get yours, then paste it into the HTTP Request node. Use real data from your workflow The point of n8n is that the notification carries the actual result. Use expressions in the query so each run is specific: https://hooknotifier.com/{IDENTIFIER}/{KEY}?object={{ $json.subject }}&body={{ $json.summary }}&tags=n8n Now instead of "workflow done" you get "New lead: Acme Corp" or "Sync failed: 3 records rejected", straight from the data that flowed through your nodes. Send it only on failure Put the HTTP Request node on the error branch of a node (or use an Error Trigger workflow) and add priority=high, so you only hear about it when something breaks: https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=n8n%20workflow%20failed&body={{ $json.error.message }}&priority=high&color=%23EE6767 Why it matters Automations are supposed to save you from watching a screen. But an automation you cannot hear about is one you end up babysitting anyway. One HTTP Request node gives every n8n workflow a voice that reaches your pocket, for free. New to this? Start with how to send yourself a native push notification, or see the same idea in Make. Common questions: Q: How do I send a push notification from n8n? A: Add an HTTP Request node in your n8n workflow, set the method to GET or POST, and point it at your Hook.Notifier URL with an object and body. When the workflow reaches that node, your phone gets a native push notification. Q: Can I use data from earlier nodes in the notification? A: Yes. Use n8n expressions in the query, for example object={{$json.title}}, so each notification carries the real values from your workflow. Q: Do I need to build an app for this? A: No. n8n makes the HTTP request and Hook.Notifier delivers the push. No Firebase, no backend, no mobile app to build. --- # How to send yourself a native push notification (the easy way) URL: https://hooknotifier.com/guides/send-yourself-a-native-push-notification The simplest way to send yourself a native push notification when something happens. One HTTP request, no app to build, no Firebase, no backend. Free. The shortest way to send yourself a native push notification is one HTTP request to a personal URL. No app to build, no Firebase, no backend. Here is the whole thing: curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Hello&body=My first notification" Call that, and a real notification shows up on your phone and in your browser. That is it. Why this is harder than it should be You want a notification when something happens. A user signs up. A payment fails. A script finishes. A site goes down. It sounds simple. It is not. To send a real native push notification yourself, you normally have to: Set up Firebase Cloud Messaging, or Apple Push Notification service.Register device tokens and keep them in sync.Run a backend to hold the tokens and send the messages.Build an app to receive them. That is a lot of plumbing for "ping my phone when X happens". So most people give up and bricole something. A Telegram bot. A Discord webhook. An email that gets buried. Anything to avoid building the real thing. Hook.Notifier is the real thing, ready to use. You get the inbox and the app. You just call a URL. The three steps 1. Get your URL Create a free account. You get two values, your identifier and your key. They form your personal hook: Your hook: https://hooknotifier.com/{IDENTIFIER}/{KEY} 2. Call it Any tool that can make an HTTP request can send you a notification. The simplest is a browser or curl: curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Deploy%20done&body=Production%20is%20live" The hook accepts both GET and POST. That means you can paste the URL straight into a browser tab to fire your first notification, no terminal needed. 3. Get notified The notification lands on your phone if the mobile app is installed, and in your browser inbox either way. It stays there, so you can come back to it. Send from anything You only need to make an HTTP request, so almost anything works. From a shell script or a cron job: ./backup.sh && curl "https://hooknotifier.com/{IDENTIFIER}/{KEY}?object=Backup&body=Backup%20finished" From a few lines of Python: import requests requests.post("https://hooknotifier.com/{IDENTIFIER}/{KEY}", json={ "object": "New signup", "body": "Someone just created an account", }) From a webhook. Stripe, GitHub, Cal.com, Supabase, your own app. If it can POST to a URL when an event happens, it can notify you. Paste your hook as the webhook URL and you are done. From a no-code tool. In Zapier or Make, add a webhook action, point it at your hook, and map the fields. The parameters You can shape the notification with a few parameters. ParameterTypeDescriptionobjectStringTitle of the notification requiredbodyStringContent of the notificationtagsString,String,...Tags to organise and filter your inboxcolorColor String (#000000)Color of the notificationredirectUrlUrl StringURL opened when you tap the notificationimageUrl StringImage shown inside the notification It goes further The basics above are enough for most pings, but the same URL takes more: priority=low|normal|high|critical. Low lands in your inbox without pushing your phone. High and critical cut through your quiet hours.delay=10m (30s, 2h, 1d...) or at= an ISO date schedules the send, up to 3 days ahead.markdown=true renders the body as markdown.actions adds up to 3 buttons ([{"label", "url"}] as JSON in a POST), shown in the inbox and the app. Every send returns {"status":"ok","id":42}. A PUT to the same URL plus /42 updates that notification in place, so a long job can be one notification that goes from "running" to "done" instead of a pile of pings. Your dashboard has a Notif. Builder: a step by step form that composes the notification for you, shows a live preview, and gives you a ready to copy URL. You can also send yourself a test in one tap from the "Your hook" card. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);} Common questions: Q: How do I send myself a push notification? A: Make one HTTP request to your personal Hook.Notifier URL. The notification lands on your phone and in your browser. No app to build, no Firebase, no backend. Q: Do I need to build an app to get native push notifications? A: No. Building push infrastructure means Firebase, Apple certificates, a server, and device tokens. Hook.Notifier gives you a ready inbox and a URL to call, so you skip all of it. Q: Is it really free? A: Yes. You can send yourself notifications for free. Create an account, get your URL, and call it from anything that can make an HTTP request. Q: What can trigger a notification? A: Anything that can send an HTTP request: a shell script, a cron job, a webhook from Stripe or GitHub, a Zapier or Make automation, or a few lines of code in any language.