# Hook.Notifier — full content The easiest way to send yourself a native push notification when something happens. Free. # 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 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 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 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 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 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. --- # 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. --- # 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. --- # 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. Use the query builder below to compose your notification and get a ready to copy URL. You will also find it in your dashboard. Build your notification Fill in the fields to get a ready to copy hook. You can send it to yourself right away to test it. 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.