# Proxmox to Telegram in five minutes

> Wire a Proxmox VE or Backup Server source straight to a Telegram chat, with no routing rules needed.

Web page: https://infrainbox.app/docs/cookbook/proxmox-to-telegram/

**You'll get:** every failed (and recovered) Proxmox VE or Proxmox Backup Server job showing up as a Telegram message, with no routing rule to write.

## Before you start

- A workspace on InfraInbox, and access to your Proxmox VE or PBS web UI.
- A Telegram account.

## 1. Add the Proxmox source

In InfraInbox, click **Add source**, choose **Proxmox VE** or **Proxmox Backup Server (PBS)**, give it a name (the cluster, node or Backup Server it's for), then click **Create source**.

The wizard's next screen, **Paste this into Proxmox**, shows the exact endpoint name, method, URL, headers and body InfraInbox generated for this source, plus a one-time secret. Keep this screen open.

## 2. Paste it into Proxmox

In Proxmox:

- **PVE:** *Datacenter → Notifications → Notification Targets* → add a **Webhook** target.
- **PBS:** *Configuration → Notifications* → add a **Webhook** target.

Copy each field from InfraInbox's screen into the matching Proxmox field, exactly as shown — it's Proxmox's own template syntax, so don't retype it by hand. Paste the secret into Proxmox's own **Secret** field under the name InfraInbox gives you.

Click **Test** in Proxmox. It should say the test was received, and the source in InfraInbox turns **Reachable**.

> **Note:** Proxmox's own Test button only proves the connection works — it skips your Proxmox matcher and InfraInbox's routing rules, and sends a test notice straight to every enabled destination. Don't rely on it to prove the *real* alert path works; step 5 below does that instead.

## 3. Add a matcher (PVE only)

Still in *Datacenter → Notifications*, add a matcher named `infrainbox`, targeting the webhook target you just created, with **no match rules** — leaving it empty makes it match everything. Don't filter out `info`-level notifications: a successful run is what auto-resolves an incident that a previous failure opened.

PBS has no separate matcher step; the webhook target itself receives everything.

## 4. Point your backup jobs at it

For every backup job (*Datacenter → Backup*), switch its notification mode to the notification system — the **Notifications** tab on PVE 9.x, **General** on 8.x. A job still set to email `root` directly never reaches InfraInbox.

## 5. Add the Telegram destination

Back in InfraInbox, add a **Telegram** destination:

1. Message [@BotFather](https://t.me/BotFather) on Telegram, send `/newbot`, and copy the token it gives you.
2. Paste that token into InfraInbox's **Your bot** field.
3. Click **Find my chats**, and pick the chat you want alerts in (or paste a chat ID by hand if you already have one).
4. Leave **Enabled** checked, then click **Save destination**.

Click **Send test** — you should get a Telegram message immediately.

## 6. Add Telegram to your default route

A new destination isn't notified of anything until something routes to it — InfraInbox's default route only ever pushes to the built-in InfraInbox Push unless you add more. No rule to write, though: open **Notifications → Routing → Default route**, expand **CRITICAL**, and in **Who is told** add your Telegram destination; do the same for **ERROR**. Save.

(If you'd rather keep the default route untouched and only send *this* Proxmox source to Telegram, see [Send one app's alerts to its own channel](https://infrainbox.app/docs/cookbook/route-by-app.md) instead — that uses a routing rule.)

## 7. Check it works end to end

Run (or wait for) a real backup job:

- The source's status turns **Receiving events**.
- The job shows up as an incident in the inbox.
- You get a Telegram message for it — and, if the job was previously failing, another one when it recovers, since InfraInbox auto-resolves the incident.

## If it doesn't work

| Symptom in Proxmox's test | Likely cause |
|---|---|
| Certificate/unknown issuer error | Proxmox doesn't trust your certificate yet — see [TLS and reverse proxies](https://infrainbox.app/docs/self-hosting/reverse-proxy.md) if you're using a private CA. |
| HTTP 401 | The `Authorization` header wasn't pasted exactly, or the secret was rotated since. |
| Timeout | An egress firewall, proxy or DNS issue between Proxmox and InfraInbox. |

> **Note:** PBS can't report on backups a *client* pushes to it directly — those still show up through the matching PVE backup job, or by posting to InfraInbox's [events API](https://infrainbox.app/docs/sources/events-api.md) from a script.

## Next

- Add a [heartbeat](https://infrainbox.app/docs/sources/heartbeats.md) per node so a Proxmox host that goes silent altogether — not just a failed job — also raises an incident.
- [Route just this source to a different channel](https://infrainbox.app/docs/cookbook/route-by-app.md) once you have more than one.
