- The free way works. Telegram's Bot API is free: register a bot with BotFather, then push a message from a Stripe or error webhook — via your own server, or via Zapier with no code.
- The DIY cost is upkeep, not money. You host and maintain the glue, and each connection carries one signal. A payment ping and an error ping never meet.
- The Crossdeck bot skips the plumbing. Connect with
/startand revenue, error, and customer alerts arrive with nothing to host. - Alerts arrive joined by identity. Because Crossdeck holds revenue, errors, and identity in one hand, an error alert can name the paying customers hit and the revenue at risk — not just an issue number.
- You also get a dashboard and commands. A Mini App inside Telegram (Home, Revenue, Errors, People) plus
/status,/revenue,/errors,/peopleand more — every figure read from live data. - Ask follow-ups with Prism.
/prismlets you ask in plain English; it runs on your connected model and key, off your live numbers. - Honest scope. The bot, Mini App, commands and Prism are live today in a private chat. A shared team/group chat is on the roadmap.
Definitions used in this guide
The short answer
To get Stripe error alerts in Telegram, you either build a small bridge yourself with Telegram's free Bot API, or connect a bot that already does it. The DIY bridge is three parts: a bot registered with Telegram's BotFather (which hands you a bot token), a chat to send to, and a piece of glue — a hosted endpoint or a Zapier workflow — that receives a webhook from Stripe or your error tracker and calls the Bot API's sendMessage to post it. Nothing about that is expensive; the Bot API is free. What it costs is the building and the maintaining, and the fact that each bridge you wire carries exactly one signal.
The managed alternative is the Crossdeck bot. You open a chat with it, send /start, link your workspace, and revenue, error, and customer alerts start arriving — no server, no webhook wiring, no token to rotate. The reason it is worth a section of its own is not that it saves you an afternoon of glue code. It is that Crossdeck already joins your revenue, errors, and identity into one timeline, so the alert it sends can do something a hand-built sendMessage cannot: name the paying customer the error hit and the revenue exposed. Below, both routes in full — free first.
Why Telegram for business alerts
Before the setup, the case for the channel, because it is a good one. Telegram is a fast, free messaging app most founders already have open, and it happens to be an unusually good home for alerts. Its Bot API is public, well documented, and free, so a bot can post to a chat with a single HTTP call. Its Mini Apps let a bot open a full interactive view inside the chat, so an alert can lead to a dashboard without leaving the app. And a push to a Telegram chat lands on the same phone you already carry, without a separate on-call console to open.
That combination — a free API for messages, a surface for a real dashboard, and delivery to the device already in your pocket — is why so many small teams route alerts here rather than into a heavier incident tool. For the wider view of what is worth watching in real time and the free ways to do each, the hub guide is real-time business monitoring. This guide is the focused, Telegram-specific setup.
The free way: send alerts to Telegram yourself
Do this if you want one signal, fully under your control, at zero software cost. There are three common routes, and they share the same first two steps.
Step 1 — create a bot. In Telegram, message BotFather, run /newbot, name it, and it returns a bot token. That token is the credential your code uses to send messages. Keep it out of your repo and out of client-side code.
Step 2 — find your chat id. Start a chat with your new bot, send it any message, and read your chat id back from the Bot API's getUpdates method. You now have the two things every message needs: a token and a destination.
From there, pick the route that matches how much you want to build:
- Bot API + a webhook (most control). Host a small endpoint. Point a Stripe webhook — or your error tracker's webhook — at it. When the event arrives, your endpoint formats a line and calls the Bot API's
sendMessagewith your token and chat id. This is the sturdiest DIY option and the one that scales to custom logic, and it is the same discipline as any production alert: capture, format, route. - Zapier (no code). If you would rather not host anything, a Zapier workflow can connect Stripe (or another source) to Telegram: a Stripe trigger fires, a Telegram action posts the message. It is the fastest way to a working alert and needs no server, at the cost of a per-task dependency on Zapier.
- A self-hosted script (polling). For signals without a webhook, a small scheduled script can query an API on a timer and call
sendMessagewhen a threshold trips. A cron job and twenty lines is often enough for a single number you want to watch.
All three genuinely work, and for one signal they are hard to beat on price. If the signal you care about is production errors specifically — grouping them, setting severity, and routing without burying yourself — the fundamentals carry over from our guide to setting up Slack and email alerts for production errors without drowning your team; swap the destination for Telegram and the same rules about noise and severity apply.
| Route | What you build | Best for | The trade-off |
|---|---|---|---|
| Bot API + webhook | A hosted endpoint that calls sendMessage | Full control, custom formatting | You host and maintain a service |
| Zapier | A trigger-to-action workflow, no code | Fastest path to a working alert | A per-task dependency on Zapier |
| Self-hosted script | A cron job that polls and posts | Signals with no webhook | Polling lag; another job to babysit |
What the DIY route really costs
The bill is not in dollars; the Bot API is free. It is in two quieter costs that only show up later.
You own the plumbing forever. A hand-built bridge is a small service that has to keep running: a token to rotate, a webhook to keep verified, a server to patch, an endpoint that fails silently the one week you needed it. It is rarely much code, but it is code you now maintain, and an alert pipeline that breaks without telling you is worse than no pipeline, because you trust it. That maintenance is the real price of the free route.
Each bridge is single-signal. This is the deeper limit. A Stripe-to-Telegram bridge sends payments. An error-tracker-to-Telegram bridge sends exceptions. They run side by side and never meet, because nothing joins them. So when an error alert lands, it can tell you an exception fired and how often — but not whether it hit a paying customer, or which one, or what revenue is exposed, because the payment lives in the other bridge entirely. You can reconstruct the answer by hand — export ids, cross-reference billing, match by timing — but that is forensic work after the fact, and it is exactly the join a stack of single-signal bridges cannot make. That gap, and why it costs founders real money, is the subject of error alerts that name the customers affected.
The Crossdeck way: connect the bot
The managed route removes both costs at once, because the join already exists on the platform side. Setup is a single step rather than a build.
- Open the Crossdeck bot in Telegram and send
/start. This connects the chat to your Crossdeck workspace. - Link your workspace when prompted — the same account whose revenue and errors you already track. You sign in to the dashboard with Telegram, so there is no second credential to manage.
- That's it. Alerts begin arriving in this private chat, and the commands and Mini App are immediately available. There is no server to host, no webhook to point, and no bot token for you to rotate.
The difference from the DIY route is the amount of plumbing you are now responsible for: none. You did not wire Stripe to anything; Crossdeck is already reading your revenue, errors, and analytics and joining them by identity. Connecting the bot simply chooses Telegram as where that already-joined intelligence gets delivered.
What arrives once you connect
Three kinds of thing, all in the same private chat.
Alerts that read like sentences. An error alert card shows the failing request, how many events and how many users it affected, how long ago it started, and — the part a hand-built bridge cannot produce — an "In plain English:" explanation of what actually broke, with a Mute button you can tap right from the notification. Severity is marked with a dot: grey for noise (auto-filed for you), yellow, or red. Beyond errors and payments, the bot also watches pipeline health against a baseline and raises proactive alerts — for example, a red "Event Ingest Silent — no events in the last 5 minutes" when your normal baseline for that hour is much higher. It tells you something has gone quiet that should not be quiet, which is often the earliest signal of all.
A dashboard inside Telegram. Send /app and the Mini App opens without leaving the chat. Its bottom nav is Home, Revenue, Errors, and People; the Errors view lists issues with the same plain-English and Mute treatment as the alerts; and a project switcher lets you move between apps if you run more than one. This is the full dashboard, live today inside Telegram — not a teaser.
Numbers on demand. When you want a figure without waiting for an alert, the commands return it. /status gives a per-project health line — in an illustrative shape, "Revenue this month $X · MRR $Y · N open issues · 🟢 no paying customers affected by errors · Last payment $Z · Nd ago" — with an "Open in app" button. Every figure is read from your live Crossdeck data, never estimated, and revenue is reported as recognised revenue, the accounting-accurate figure, rather than a loose total.
The commands, in full
The bot is driven by a small, memorable set of commands. Here is the complete list.
| Command | What it does |
|---|---|
/start | Connect this chat to your workspace |
/app | Open the dashboard — the Mini App |
/prism | Ask Prism anything, reasoned over your real numbers |
/revenue | This month's recognised revenue |
/errors | Open error issues right now |
/people | Latest customers and signups |
/status | Business health at a glance |
/mute | Mute alerts for a noisy issue |
/help | The command list |
/disconnect | Unlink this chat |
The commands and the alerts share the same source of truth, so /errors in a quiet moment and an error alert at 2am are two views of one live dataset — no reconciliation, no second tool to cross-check against.
The difference: alerts that know who
Here is the line that separates a DIY Telegram bridge from the Crossdeck bot, and it is worth stating plainly. A hand-built alert can tell you what happened. Only an alert built on a joined timeline can tell you who it happened to and what's at risk. A Bot API bridge on your error tracker sends "Issue #4,182 · 9,000 events," because an error tracker knows errors and nothing else. The Crossdeck bot can send, in an illustrative shape drawn from your own live numbers, "this checkout error hit 3 paying customers worth about $X a month" — same underlying error, presented as a business event, because the identity and the revenue it needs are already on the timeline next to the error.
That is the moat, and it is not a feature you could bolt onto the DIY route with more glue code; it is a property of holding revenue, errors, and identity in one hand. Plain-English summaries are part of the same idea — an alert a founder or support lead can act on without an engineer to translate the trace, which we cover in what plain-English error summaries are and why founders need them.
When an alert raises a question the card doesn't answer, /prism is the follow-up. Ask in plain English — "which customers did this error hit, and what's the exposure?" — and get an answer reasoned over your real numbers. Two honest notes on how Prism works. First, Prism runs on your own connected AI model, using your own key; you bring the model, it answers off your live Crossdeck data, and nothing trains on what it reads. It is your model reading your data, not a Crossdeck-run model. Second, Prism needs that model connected in the Prism tab first — a one-time setup, not a zero-config trick. Once it is connected, the follow-up question is something you type in the chat and answer in seconds. You can see how it works on the Prism product page.
DIY plumbing vs the Crossdeck bot
Both get a message into Telegram. They differ in what you maintain and in what the message can say.
| Question | DIY Bot API / Zapier | The Crossdeck bot |
|---|---|---|
| What do you build? | An endpoint or workflow, per signal | Nothing — connect with /start |
| What do you maintain? | Token, webhook, server, uptime | Nothing to host |
| Signals per bridge | One — payments, or errors | Revenue, errors, customers, health — joined |
| Can an error alert name the customer? | No — reconstruct it by hand | Yes — named, with revenue at risk |
| Dashboard in Telegram | Build a Mini App yourself | Live: Home, Revenue, Errors, People |
| Ask a follow-up question | Not without more tooling | /prism, on your own model |
| Are the numbers joined? | No — each bridge is siloed | Yes — one timeline by identity |
The row that matters is the one about naming the customer. Everything above it is convenience — real, but replaceable with enough of your own time. That row is not, because it depends on a join no single-signal bridge can make.
What's live and what's coming
To keep this honest, here is the exact scope. Live today, in a private chat with the bot: the alerts (error and proactive health), the Mini App dashboard with all four views and the project switcher, every command in the table above, and Prism — with your own model connected first. All of it works now, on your phone, in one chat.
On the roadmap, not shipped: a shared team or group chat, where everyone gets the same alerts and can ask Prism together. Until that ships, the bot runs in each person's own private chat, so if two people need coverage today, each connects the bot themselves. We would rather tell you the boundary than blur it. For the broader real-time picture across sales, MRR, and failed payments, the hub is real-time business monitoring, and the platform itself is at cross-deck.com.
Frequently asked questions
How do I get Stripe alerts in Telegram?
There are two routes. The DIY route: create a bot with Telegram's BotFather to get a bot token, then send messages to your chat with the Telegram Bot API — either by pointing a Stripe or error webhook at a small server that calls sendMessage, or by using Zapier to connect Stripe to Telegram with no code. The managed route: connect the Crossdeck bot to your Telegram in one step with /start, and revenue, error, and customer alerts arrive with no webhook plumbing to build or maintain, each joined by identity so the alert names who and what is affected.
Can I send alerts to Telegram for free?
Yes. Telegram's Bot API is free to use, so the DIY route costs nothing but your time: register a bot with BotFather, host a small endpoint that receives your webhook and calls the Bot API's sendMessage, and you have alerts in a chat. Zapier can do the same without code on its free or paid tiers. The real cost is not money; it is that you build and maintain the plumbing yourself, and each connection carries one signal — a payment, or an error — with no join between them.
Do I need to build a Telegram bot to get business alerts?
No. Building a bot with the Telegram Bot API is one option, and it works well for a single signal you fully control. But if you want revenue, error, and customer alerts together — joined so an alert can name the paying customer affected — building and maintaining that plumbing yourself is a lot of glue code. The Crossdeck bot is already built: you connect it with /start and the alerts, a Mini App dashboard, and hard-data commands arrive without a server to run.
What is the Crossdeck Telegram bot?
The Crossdeck bot is a Telegram bot that delivers your live business signals — recognised revenue, error issues, new customers, and proactive health alerts — to a private chat on your phone. It works because Crossdeck already joins revenue, errors, analytics, and identity into one timeline, so an alert can carry who and what is affected, not just that something happened. Alongside alerts it gives you a Mini App dashboard inside Telegram and commands like /status, /revenue, and /errors that return real numbers on demand.
What commands does the Crossdeck bot support?
The bot supports /start to connect a chat to your workspace, /app to open the Mini App dashboard, /prism to ask a question in plain English, /revenue for this month's recognised revenue, /errors for open error issues, /people for latest customers and signups, /status for a business-health summary, /mute to silence a noisy issue, /help for the command list, and /disconnect to unlink the chat. Every number a command returns is read from your live Crossdeck data, not estimated.
Can the whole team get alerts in one Telegram group?
Not yet. Today the Crossdeck bot works in a private chat between you and the bot, which is where alerts, the Mini App dashboard, the commands, and Prism all run. A shared team or group chat — where everyone gets the same alerts and can ask Prism together — is on the roadmap, not shipped. If you need coverage for more than one person today, each teammate connects the bot in their own private chat.
Does Prism work out of the box in Telegram?
Prism is live in the Telegram bot, but it is not zero-config. Prism runs on your own connected AI model, using your own key, and answers off your live Crossdeck numbers — so you first connect a model in the Prism tab, a one-time setup. After that, /prism lets you ask a question in plain English, like which customers a checkout error hit, and your own model reasons over your real data to answer. It is your model reading your data; nothing trains on it.
Is the data in the alerts real or estimated?
Real. Every figure the Crossdeck bot sends — recognised revenue in /revenue, the customers named in an error alert, the last-payment line in /status — is read from your live Crossdeck data across your payment rails, never an estimate or a guess. Revenue is reported as recognised revenue, the accounting-accurate figure, rather than a loose total. If a signal is not instrumented yet, the bot says so rather than reporting a zero.
See it live on your own numbers
Connect your rails and get real-time alerts that name the customer, the plan, and the money — plus a Mini App and plain-English answers, live in Telegram. Free to start.