Coding Projects

Telegram Bot Alerts vs a Push Notification API

A Telegram bot is free, quick, and the default answer for developer alerts. Here is the honest case for it, and the three places it quietly falls down.

Red and black halftone illustration: a telegraph key on a wooden desk beside a spool of paper tape half unwound (TheNotificationApp)

Ask how to send yourself an alert from a script and someone will say "Telegram bot" within about ninety seconds. They are not wrong. It is free, it takes ten minutes, the API is simple, and it works on every platform.

It is the default for good reasons. This is an honest look at the three places it quietly falls down, and the cases where it is still clearly the right answer.

To be upfront: TheNotificationApp is ours. The limitations section near the end is not decorative, and Telegram genuinely wins several of the comparisons below.

What the Telegram version looks like

Message @BotFather, get a token, find your chat ID, and then:

curl -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
  -d "chat_id=${CHAT_ID}" \
  -d "text=Backup failed on db-01"

That is genuinely good. No account with a new company, no billing, no per-message cost, and it works from anything that can make an HTTP request.

The equivalent here is about the same shape:

curl -X POST https://thenotification.app/api/sendNotification \
  -H "app_key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title": "Backup failed", "body": "db-01 exited 1 at 03:14"}'

Two headers instead of a token in the URL, and a title separate from the body. Not meaningfully different. The API is not where these diverge.

Where it diverges: the alert lands in a chat app

This is the whole argument, and it is not a technical limitation. It is what a chat app is for.

Your Telegram has conversations in it. Group chats, a family thread, whatever channels you follow. Your production alert arrives into that same surface, competing for the same attention, in the same visual language as someone sending a meme.

Three specific consequences:

Muting is contagious. The evening you mute a busy group chat, you have trained yourself to swipe Telegram notifications away without reading them. Your alerts are now in the swipe-away category and you did not decide that deliberately.

The badge means nothing. A Telegram badge showing 14 might be one production outage and thirteen messages about dinner. You have to open the app to find out, which is the exact work a notification is supposed to save you.

You need the app installed and logged in. Obvious until it is not: a new phone, a work device you keep clean, a family member who should get the freezer alert but does not use Telegram.

A dedicated notification app has one type of content in it. A badge means something happened in your infrastructure. That is the entire product difference, and whether it is worth anything to you depends on how much your Telegram is already doing.

Where it diverges: the token is a permanent secret

A bot token is a long-lived credential that grants full control of the bot. It goes in an environment variable, then a CI secret, then a docker-compose file, then a config that gets committed once by accident.

Anyone who has it can send messages as your bot, forever, until you revoke it and update every place it was used. It never expires on its own.

Some of that applies to any API key, including ours for direct HTTP use. Where it differs is the MCP path: connecting an AI client uses Sign in with Apple and short-lived tokens, so there is no permanent secret in a config file that an agent can read. Reasoning is in why Sign in with Apple beats API keys for MCP connectors.

Where it diverges: your alerts live on Telegram's servers

Every message is stored, in cloud chats, indefinitely, unless you delete it. Your alert bodies often contain things you would not deliberately upload: customer email addresses, internal hostnames, error strings with fragments of data in them.

Telegram is not doing anything wrong here; it is a chat app and storing chats is the feature. It is just worth noticing what you are uploading when the message is Payment failed for j.smith@acme.com, card ending 4242.

TheNotificationApp does not store notification content, and hosts in Switzerland. That is a deliberate tradeoff and it costs you something real: there is no history to scroll back through. Details in why Swiss-hosted push notifications matter for developer privacy.

Side by side

 Telegram botTheNotificationApp
CostFree, no limitFree tier, then $2.99 a month
PlatformsEverywhereiPhone only
SetupBotFather, token, chat IDSign in with Apple, copy a key
Where alerts landAmong your chatsIts own app
Message historyStored indefinitelyNot stored
AuthPermanent bot tokenApp key, or Sign in with Apple for MCP
Rich formattingMarkdown, images, files, buttonsTitle, body, link, image
Two-way interactionYes, bots can take repliesNo
Group deliveryYes, post to a shared channelNo, your devices only

Three things Telegram does that we simply do not

It is free with no message limit. Our free tier is 100 notifications total and Pro is $2.99 a month for 1,000. Telegram is unlimited and costs nothing. If volume is your constraint, that is decisive and nothing below changes it.

It handles replies. A Telegram bot can receive messages, so you can build an approval flow where you answer "yes" in the chat and the script continues. That is a genuinely useful pattern and there is no equivalent here: notifications go one way. If you want the human-in-the-loop shape without two-way messaging, the workaround is in human-in-the-loop notifications, but it is a workaround.

It reaches a team. Post to a channel and everyone sees it. Ours delivers to the devices signed in with your Apple ID, which is a personal tool by design. For a team on call, Telegram or a real paging service is the right shape.

The honest limitations on our side

iPhone only. It rides Apple's push service. Android, desktop and web are not supported and are not on the way. If you carry an Android phone, stop here and use Telegram.

The free tier is a trial. 100 notifications across the lifetime of the account, not per month. Enough to wire up a couple of alerts and decide. Then $2.99 a month for 1,000.

No history, no formatting beyond four fields, no replies. Title, body, an optional tap-through link and an optional image. That is the whole surface. It is deliberately small, and small is a limitation as well as a feature.

Which to pick

Stay on Telegram if: you are on Android, you need a team channel, you want replies, your volume is high, or you already live in Telegram and a notification landing there is exactly where you want it. That is most people, and it is a fine answer.

Try the other one if: you are on an iPhone and you have noticed you swipe Telegram away without looking, or your alert bodies contain things you would rather not store in a chat history, or you want the alerting surface to mean one thing.

The switch is one URL and a different body shape, so there is little to lose in running both for a week and seeing which one you actually react to. That is the only test that matters here, and it is cheaper than arguing about it.

Field list is in the API reference. For a wider survey than these two, see the best push notification APIs for developers.