HTTP push without running the server.
ntfy is a good piece of software, and if you enjoy running your own infrastructure it is hard to argue with free and open source. Pocket Alert is the hosted version of the same idea: publish over HTTP, get a push on your phone, but with an account instead of a topic namespace, history that is kept rather than cached, and a record of every webhook call that comes in.
Where self-hosted push gets expensive
The friction is not in sending. It is in everything around it.
Someone has to run it
Self-hosting means uptime, TLS, upgrades and storage are yours. The shared instance comes with no delivery guarantee.
Nothing is kept
Messages live in the server cache and are dropped roughly 12 hours after delivery. There is no history to come back to.
No record of calls
There is no log of incoming requests. When an alert does not show up, you cannot see what was sent or why it failed.
The topic is the password
On the public instance a topic is only as private as its name. Guessable topics are readable and writable by anyone.
Pocket Alert vs ntfy, feature by feature
Same publish-over-HTTP model, different amount of it left running on your machines.
| Feature | Pocket Alert | ntfy |
|---|---|---|
| Where you use it | ||
| iOS app | ||
| Android app | Play Store and F-Droid | |
| Web dashboard | Devices, keys, apps, webhooks | Web app |
| Chrome extension | Send a link or note to your phone | |
| Command-line tool | Official binary for Linux, macOS, Windows | ntfy CLI |
| MCP server for AI agents | 10 tools | |
| Sending alerts | ||
| Send via HTTP API | ||
| Inbound webhook URL per source | One URL per service | Topic URL with ?template= |
| Payload mapping into the message | %field.path% into title, body and buttons | Go templates, built in for GitHub, Grafana, Alertmanager |
| Scheduled delivery | Up to 30 days, listable and cancellable | Delay up to 3 days |
| Priority levels | Five, silent to critical | Five, 1–5 |
| Critical alerts that override Do Not Disturb | On paid plans | Max priority, no DND override documented |
| Action buttons on the notification | Up to 3: open, HTTP request, copy | view, http, broadcast, copy |
| Attachments | Images | Any file, up to 1 GB on Business |
| Grouping by source | Applications, filtered in the app | Topics |
| Email delivery | Daily allowance per plan | |
| SMS or phone-call delivery | Phone calls on paid plans | |
| Records and debugging | ||
| Message history | Account-wide, synced to app and web | Server cache, ~12 hours |
| Webhook call log | Headers, payload, rendered message, result | |
| History retention | Messages until you delete them; webhook calls 7–365 days by plan | Cache window only |
| Delivery statistics | Per application and per device | Server metrics if you self-host |
| Account and data | ||
| Content encryption | At rest with a per-account key, secrets redacted | Your own disk when self-hosted |
| Two-factor authentication | TOTP with recovery codes | Accounts and access tokens |
| Open source or self-hosted | Apache 2.0 / GPLv2 | |
ntfy data from ntfy.sh and docs.ntfy.sh, checked October 2026.
What you’ll pay
| Pocket Alert | ntfy | |
|---|---|---|
| Free plan | 50 messages a day, no card | 250 messages a day per IP on ntfy.sh without sign-up, or free self-hosted |
| Entry paid plan | $6/month — 1,000 messages a day, 5 webhooks | $6/month — 2,500 messages a day, 3 reserved topics |
| Highest tier | $25/month — unlimited messages, 365-day history | $25/month — 50,000 messages a day |
Pocket Alert pricing as of October 2026. ntfy figures from ntfy.sh and docs.ntfy.sh. See full pricing.
Coming from ntfy
Install and get a key
Install the app, sign in, and copy your API key from the dashboard.
Swap the endpoint
Replace the topic URL with the Pocket Alert endpoint and send the same JSON body.
Move the mappings
For templated or hand-formatted sources, create a webhook and map the raw payload with %field.path%.
Retire the instance
Shut down the server. Uptime, TLS renewals, upgrades and disk space stop being your problem.
curl \
-H 'Title: Deploy finished' \
-H 'Priority: high' \
-d 'main is live' \
https://ntfy.sh/my-deployscurl https://api.pocketalert.app/v1/messages \
-H 'Token: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"title": "Deploy finished",
"message": "main is live",
"level": "high"
}'Questions, answered
ntfy is an open-source pub-sub service you either self-host or use through the shared ntfy.sh instance. Pocket Alert is a hosted account-based service: you get an API key and webhook URLs, and there is no server, TLS certificate or storage to look after.
On ntfy, messages sit in the server cache and are dropped after about 12 hours. Pocket Alert keeps message history on the account, so the same list is in the app and in the dashboard, with delivery statistics beside it. Webhook calls are recorded separately for 7 to 365 days depending on plan.
Both can. ntfy turns a JSON body into a title and message with Go templates, with built-in ones for GitHub, Grafana and Alertmanager; custom template files live on the server, so on ntfy.sh you write the template inline in the URL. A Pocket Alert webhook keeps the mapping in the dashboard: %field.path% placeholders fill the title, body and action buttons, and every call is logged with its payload, so a Sentry alert arrives with a working link to that issue.
Both schedule. ntfy delays a message up to three days; Pocket Alert accepts an absolute time or a delay up to 30 days, lists what is pending, and cancels anything that has not fired yet.
On the public ntfy.sh instance the topic name is effectively the password, unless you pay for a reserved topic. Pocket Alert works the other way round: an account with API keys, optional two-factor authentication, and message content encrypted at rest with your own key.
Same HTTP push, none of the upkeep.
An account, an API key, and a webhook URL. Nothing to deploy, nothing to keep online.