# Gotify-compatible tools (Beszel, Watchtower, Scrutiny, Unraid)

> Point any Gotify-speaking sender — shoutrrr-based tools, Unraid's Gotify agent, and more — at InfraInbox.

Web page: https://infrainbox.app/docs/sources/gotify-compatible/

A lot of self-hosted tools don't have a Telegram or webhook integration of their own — they speak [Gotify](https://gotify.net/), either directly or through [shoutrrr](https://containrrr.dev/shoutrrr/). InfraInbox answers like a Gotify server, so any of them can point at it by changing only the server URL and token: Beszel, Watchtower and Scrutiny (through shoutrrr), Unraid's built-in Gotify agent, Uptime Kuma and Sonarr among them.

**Tested with:** shoutrrr 0.8 and 0.16 (the versions behind Watchtower, Scrutiny and Beszel), Unraid's Gotify agent.

## What you get

Priority maps to severity:

| Gotify priority | Severity | Effect |
|---|---|---|
| 0–3 | INFO | Stays in the inbox; no incident |
| 4–7 | WARNING | Opens an incident |
| 8–10 | ERROR | Opens an incident |

The shipped preset adds one more rule: a Scrutiny SMART failure (`gotify.scrutiny.smart`) never auto-expires — it needs a manual resolve, since a failing drive doesn't fix itself.

## Prerequisites

One InfraInbox source can take messages from as many Gotify-speaking tools as you like — they all share the same server URL and each gets its own token underneath it, though the simplest setup is one source per tool so their events are easy to tell apart.

## Setup

1. Go to **Add source → Gotify-compatible** (dashboard screen `/sources/new/gotify`) and name it after the tool.
2. InfraInbox shows the server URL and a token (its ingest key — this is **not** the same key used on other routes, so keep the two separate if you also wire this source's Events API):

   ```
   Server URL:  https://infrainbox.example.com/hooks/gotify
   Token:       iik_src_…
   ```

3. Paste those into the tool's own Gotify notification settings. For a shoutrrr-based tool (Watchtower, Scrutiny, Beszel), that's usually a single URL instead of separate fields:

   ```
   gotify://infrainbox.example.com/hooks/gotify/iik_src_…?priority=5
   ```

4. Trigger the tool's own test notification, or wait for a real one. The source switches to **Receiving events**.

### Unraid

Unraid's Gotify agent (Settings → Notification Settings → Gotify) sends as `multipart/form-data`; point it at the same server URL and token as above.

### A sender that can't set a header

Some senders — older shoutrrr builds, and Uptime Kuma configured for Gotify rather than its own webhook — only send the token as `?token=` in the query string, never as a header. Enable the **query** auth mode on this source in InfraInbox to accept that form. It works, but the token then sits in the URL, which your reverse proxy or any request log may capture — prefer a tool's own webhook integration ([Uptime Kuma](https://infrainbox.app/docs/sources/uptime-kuma.md)) or the header form wherever the tool supports it.

## Check it works

Send the tool's own test notification. The source's connection switches to **Receiving events**, and — for a priority of 4 or above — an incident opens.

## Limitations

- Priority is the only severity signal Gotify carries; a tool that always sends the same priority will always land at the same severity here.
- The root alias (a client that drops the path and posts straight to `/message`) is accepted too, for clients that can't be told to keep `/hooks/gotify` in their server URL.

## Next

- [Routing rules](https://infrainbox.app/docs/notifications/routing.md) — route by title or by tag
- [Presets](https://infrainbox.app/docs/notifications/presets.md) — see or change the SMART-failure rule
