Gotify alternative

Gotify-style push, hosted, and on iPhone too.

Gotify is a clean self-hosted push server: one Go binary, a REST call to send, and every message stays on hardware you control. The trade is that you run it, and that the only official app is for Android. Pocket Alert is the hosted version of the same idea, with native iPhone and Android apps delivered through Apple and Google push, plus inbound webhooks, action buttons and scheduling that Gotify leaves to plugins or scripts.

No server to runOfficial iOS and Android appsFree tier · 50 msg/day
Pocket AlertHosted · integrated · history
vs
GotifyOpen source · self-hosted only
The gap

What running Gotify costs you

Sending is one curl call. Keeping it working is the part that takes the time.

You run the server

Hosting, TLS, backups and upgrades are yours, and there is no hosted Gotify to fall back on. If the box is down, so are your alerts.

No official iPhone app

The only official app is for Android. The community iGotify app needs another self-hosted service and a relay to reach Apple.

An always-on connection

The Android app keeps a WebSocket open instead of using Google push, so it needs battery optimisation off and shows a permanent notification.

Webhooks need a plugin

Gotify accepts only its own message format. GitHub or Grafana JSON needs a Go plugin built for your exact server version, or a script.

Feature comparison

Pocket Alert vs Gotify, feature by feature

Both send from one HTTP request. One runs on your server; the other runs on ours and on Apple and Google push.

FeaturePocket AlertGotify
Where you use it
iOS appCommunity app plus an extra relay
Android appPlay Store and F-Droid
Web dashboardDevices, keys, apps, webhooksBuilt-in web UI
Chrome extensionSend a link or note to your phone
Command-line toolOfficial binary for Linux, macOS, Windowsgotify/cli
MCP server for AI agents10 tools
Sending alerts
Send via HTTP APIPOST /message
Inbound webhook URL per sourceOne URL per serviceVia plugins, Linux and macOS only
Payload mapping into the message%field.path% into title, body and buttonsGo plugin or a script
Scheduled deliveryUp to 30 days, listable and cancellable
Priority levelsFive, silent to critical0–10, mapped to sound and vibration
Critical alerts that override Do Not DisturbOn paid plansNo DND override documented
Action buttons on the notificationUp to 3: open, HTTP request, copyClick URL, no buttons
AttachmentsImagesImage by URL, via extras
Grouping by sourceApplications, filtered in the appApplications
Email delivery
SMS or phone-call delivery
Records and debugging
Message historyAccount-wide, synced to app and webStored on your server
Webhook call logHeaders, payload, rendered message, result
History retention7 days free, 365 on the top planKept until deleted, no retention setting
Delivery statisticsPer application and per device
Account and data
Content encryptionAt rest with a per-account key, secrets redactedYour own disk; not documented
Two-factor authenticationTOTP with recovery codesOnly through an OIDC provider
Open source or self-hostedMIT, Docker or a single binary

Gotify data from gotify.net and the gotify/server (v3.1.1), gotify/android and gotify/cli repositories, checked October 2026.

Pricing

What you’ll pay

Pocket AlertGotify
Free plan50 messages a day, no cardFree and open source, on your own server
Entry paid plan$6/month — 1,000 messages a day, 5 webhooksNo paid plans, and no hosted version
Highest tier$25/month — unlimited messages, 365-day historyCosts your server, your domain and your time

Pocket Alert pricing as of October 2026. Gotify is free and has no hosted offering. See full pricing.

Migration

Coming from Gotify

1

Install and get a key

Install the app on your iPhone or Android phone, sign in, and copy your API key from the dashboard.

2

Swap the endpoint

Point scripts at the Pocket Alert endpoint with the key in the Token header, and turn priority into level.

3

Replace the plugins

For each service behind a webhook plugin or bridge, create a Pocket Alert webhook and map its JSON with %field.path%.

4

Retire the box

Shut down the server, and turn battery optimisation back on for your phone.

Before · Gotify
curl https://gotify.example.com/message \
  -H 'X-Gotify-Key: YOUR_APP_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "title": "Backup failed",
    "message": "nightly dump exited with code 1",
    "priority": 8
  }'
After · Pocket Alert
curl https://api.pocketalert.app/v1/messages \
  -H 'Token: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "title": "Backup failed",
    "message": "nightly dump exited with code 1",
    "level": "high"
  }'
FAQ

Questions, answered

Not an official one. The Gotify Android app holds a WebSocket open to your server, which iOS does not allow in the background, and the project does not use third-party push services. The community iGotify app works around that with another self-hosted service that relays messages to Apple. Pocket Alert has native apps for iPhone and Android, delivered through Apple and Google push.

It keeps a permanent connection to your server instead of using Firebase Cloud Messaging, so Android would otherwise kill it, and it shows a permanent notification while it runs. Pocket Alert uses FCM on Android and APNs on iPhone, so the app does not need to stay awake to receive a push.

Gotify accepts only its own message format, so a GitHub or Grafana payload needs a Go plugin, built against your server’s exact Go version, or a script in between. A Pocket Alert webhook takes the raw payload, maps fields with %field.path% placeholders into the title, body and action buttons, and logs every call it receives.

Control over where the data lives. With Gotify, messages sit in your own database. Pocket Alert keeps message history on its servers, encrypted at rest with a per-account key, and the account can be protected with two-factor authentication. If keeping data on your own hardware is a hard requirement, Gotify is the right tool.

Gotify uses numbers from 0 to 10: 1–3 show an icon, 4–7 add sound, 8–10 add vibration. Pocket Alert has five named levels: silent, low, default, high and critical. A rough map is 0 to silent, 1–3 to low, 4–7 to default and 8–10 to high, with critical kept for alerts that should override Do Not Disturb on Android.

Keep the curl call. Drop the server.

An API key, a webhook URL and the app on your phone. Nothing to deploy, patch or keep online.