deploy · tutorial · mobile

Telegram + Discord Alerts: Both Pockets Buzz in 2 Seconds

One alert function sends incidents to Telegram or Discord for $0, with a breaker that stops spam. How to set it up for a team.

An 1880 engraving of a man holding a telephone receiver to each ear
An 1880 engraving of a man holding a telephone receiver to each ear · Photo: Illustration from 1880, public domain, via Wikimedia Commons

The alert only you can hear

Solo founders pick Telegram.

Instant buzz.

No noise.

Pocket-first.

The day a co-founder joins, the same setup becomes a silo. Incidents ping one pocket while the other person sleeps through the outage they could have fixed.

So teams bolt on a second system.

A different SDK.

Different call sites.

Different formatting.

Within a month the two disagree.

Discord fired, Telegram did not, and nobody knows which tells the truth.

Telegram and Discord alerts should be one call with one clear path.

Same event.

Same text.

Delivered where your team actually reads.

One channel, two systems, one function

Setup Pocket buzz The team sees it Truth source
Telegram only Instant Nobody else A solo silo
Two bolted systems Sometimes Sometimes Two, and they disagree
An email list In the morning Everyone, late Slow consensus
One alert function, Telegram first, Discord as backup Instant Instant, via a shared group or channel One function

Bolted-on second channels rot. Three reasons.

Formats drift. Telegram gets the order ID. Discord gets "something broke". Two call sites evolve separately.

Breakers disagree. One channel throttles, the other floods, and the team argues about severity while checkout burns. A single 60-second breaker keeps every channel telling the same story.

Tests cover one path. The Telegram drill passes monthly while the Discord webhook expired silently three weeks ago. One function means one drill proves the path or exposes the dead one.

What to do

Set up the channel your team reads.

For Telegram, create a bot with @BotFather and find your chat ID. For Discord, open the channel settings, then Integrations, then Webhooks, and copy the URL.

Put the values in your production settings and sync them with bp secret sync.

Share the destination, not the function.

Telegram goes first, so point it at a group chat when two or more people share on-call. Everyone in the group gets the same buzz.

If your team lives in Discord, leave Telegram unset and the alert goes to the Discord channel instead.

The kit sends one alert per incident, to one place. It does not post to both at the same time.

Alert at three sites. Then stop.

Payments.

Paid-route errors.

Database loss.

Repeat alerts for the same problem are held back for a minute, so one bug cannot spam your phone 400 times.

The kit already alerts from its payment webhooks.

Drill the path monthly.

Send a test alert from your server and confirm it lands within seconds. If it does not, a token or webhook has expired. That is a Tuesday discovery, not a Saturday one.

The drill card

Check Action Pass looks like
Telegram live Send a test alert A buzz within seconds, with context
Discord backup Remove the Telegram setting, test again The same alert in Discord
The breaker holds Fire the same alert five times fast One ping, the rest held back
A dead channel Revoke a token, test You see the failure on a calm day

A second channel adds a second thing that can expire silently. A noisy channel trains everyone to ignore it.

Keep alerts to three kinds. A fourth is a conversation first. "Will we act on this at 2 a.m.?"

Know this first

The kit sends one alert, to one place.

It does not post to Telegram and Discord at once.

No severity routing.

No escalation ladder.

Past five people on call, buy an on-call tool.

Why BoringPush is the way to do this

Alerts that reach the team.

BoringPush sends critical failures to Telegram, or to Discord when Telegram isn't set. Repeats are held back for a minute.

Payment failures already fire from the webhooks.

FAQ

Should alerts go to a group or a channel?

On Telegram, a direct message works for a solo founder and a group works once two or more people share on-call. On Discord, use a dedicated incidents channel with mentions off except for the bot, so people discuss in threads without muting the alarm. Keep the alarm surface separate from the discussion surface.

What if both Telegram and Discord are down?

The function returns a failure without crashing your route. For a dead server, neither channel can help anyway, so add a free external uptime check on a separate network. Three watchers, three independent networks, no shared fate.

How do I stop alert fatigue?

Cap the alert sites at three, let the breaker eat bursts, and audit every quarter. Any alert that fired twice without action loses its call site. The day someone mutes the incidents channel, treat it as a process bug.

Can different severities route to different channels?

Not out of the box. The function is deliberately simple. If you need routing, make the decision in the code that raises the alert and keep the function itself plain.

Does Discord threading work for incident discussion?

Yes. Reply in a thread under the bot's post so the channel stays a clean timeline of events with discussion tucked underneath. Later, you read the thread to see what you tried at 2:14.

When does this setup stop being enough?

When on-call spans time zones and needs escalation, such as paging the next person after five unacknowledged minutes. That is roughly team-of-five territory. Buy an on-call tool for the escalation ladder and keep this function as the trigger.

Keep reading

+ all the boring stuff (analytics, auth, SQLite ↔ Supabase, full marketplace, webhooks)

The Agent-First Shipping Kit

Command from your phone.

Built so autonomous AI agents build what you want without breaking what's already paying you.

$199

Get BoringPush

One-time payment · Lifetime updates · Unlimited projects.

Keep reading