# Incident Alerts Priced: PagerDuty, Opsgenie EOL, and the $0 Telegram Bot

> PagerDuty per-seat math, the Opsgenie shutdown forcing migrations, and the alternative hiding in plain sight: a Telegram or Discord alert, $0 forever.

Source: https://boringpush.com/blog/incident-alerts-priced-pagerduty-opsgenie

## The Opsgenie-shaped hole (migrate now, not later)

Atlassian ended Opsgenie sales and set end-of-support for April 2027 — every Opsgenie team is migrating somewhere right now. The vendors' answer is PagerDuty or incident.io, i.e., a bigger contract.

The solo answer is different: if your "on-call rotation" is you, with a phone, you don't need rotations, escalations, or stakeholder licenses. You need a message that reaches your phone.

## All three rents, one table (verify current)

| Tool | Entry | Model | The catch for solos |
|---|---|---|---|
| [PagerDuty](https://pagerduty.com) | Free ≤5 users, then $21–49/user/mo | Per seat + add-ons (AIOps, stakeholder licenses extra) | Built for 50-person rotations; AIOps and runbooks are separate SKUs |
| [Opsgenie](https://atlassian.com/software/opsgenie) | EOL April 2027 | — | Dead product walking; any new setup is migration debt |
| [incident.io](https://incident.io) | ~$25–45/user/mo | Base + on-call add-on | Slack-native excellence priced for teams, not pockets |

## Setup: bot token to first alert in ten minutes

Message @BotFather on Telegram, send `/newbot` and copy the token. Message the bot once, since bots cannot start conversations, and find your chat ID.

Add both to your production settings and sync them to the server with `bp secret sync`. BoringPush already sends critical failures, such as a failing payment webhook, to your phone from there.

First alert arrives in seconds. Total setup: ten minutes, most of it waiting for Telegram's UI.

Compare with PagerDuty onboarding: account, team, schedule, escalation policy, service, integration key, test incident. That is an afternoon you will never get back, for a rotation of one.

## The three rules that ever fire (write these, ignore the catalog)

PagerDuty ships hundreds of integrations because enterprises run hundreds of tools. You have five failure shapes, and three of them matter: **money stopped** (a payment webhook failed or refunds spiked, with the amount and customer), **app down** (a health check failed twice, with the route), and **deploy state changed** (shipped or rolled back, with the version).

Wire those three and delete the vendor's template library from your mind. Everything else is a log line, not an alert. Alert fatigue is how real pages get ignored, and enterprise tooling manufactures fatigue at scale.

## Notification now, resolution from the phone

The difference between notification and resolution is one command. When the alert arrives, you open your SSH app and run one of BoringPush's commands from your phone: `bp status` to see where things stand, `bp deploy` to ship a fix, or `bp rollback --yes` to go back.

The 2 a.m. flow becomes: buzz, glance, command, sleep. No laptop, no dashboard spelunking.

Be clear about what is not there. The alert is a message, not a message with tap-to-fix buttons.

There are no inline retry, auto-index or rollback buttons in the chat bubble. If you want those, you would build them on top.

## The $0 version

An alert is one call from anywhere in your code. What arrives on your phone is the incident, formatted, with the context you attached: the order, the user, the route. Repeats of the same alert are held back for a minute so a storm of the same failure is one buzz.

What it honestly lacks: rotations, escalations, stakeholder seats, status pages, SOC 2 paperwork, and anyone to blame at 3 a.m. besides yourself. Teams of ten-plus should buy PagerDuty and stop reading. Everyone else was paying enterprise prices for a group chat.

## The migration (one evening)

If you are on Opsgenie today, export the three alert rules that ever actually fired. It is always three. Rewrite each as an alert at the source, which means the payment webhook, the error handler and the deploy.

Point Telegram at the same phone and delete the rotation. The schedules, policies and integrations you configured for a team that never joined can stay in the graveyard with the contract.

## FAQ

### What about Sentry for errors?

Different job, same wallet problem: event-based billing on your own mistakes. Keep Sentry if you need stack-trace archaeology across releases; let a Telegram alert handle the wake-you-up tier (payment failures, downtime, deploy health). Most solos need the second far more than the first.

### Telegram? Seriously? For production alerting?

Seriously. Encrypted transport, instant push, zero seats, zero setup, app already on your phone.

The enterprise objection is compliance theater (SOC2, audit trails) — valid for regulated teams, irrelevant for solo shipping. Your phone buzzes either way; only one path invoices you per buzz.

### What if Telegram is down or blocked?

Fair edge: Telegram outages are rare but real, and some regions throttle it. BoringPush falls back to a Discord webhook if Telegram is not set up or fails, and an external uptime check on a separate network covers a dead server.

If alerts are life-safety, buy PagerDuty's redundancy. If they're revenue-safety, dual-channel Telegram+email at $0 beats single-channel enterprise at $500/mo.

### Can the bot run commands, not just notify?

Not in BoringPush today. The alert notifies, and you act from your SSH app with the `bp` commands. A chat-button runbook is a reasonable thing to build on top, but it is not included.

## The top-down verdict

Incident tooling prices teams, not incidents. Solo incidents need a bot and $0 — everything else is a contract subsidizing someone's sales team. Opsgenie's funeral is the market telling you the per-seat alert era is over; answer with one function call.
