Skip to content

Alert channels

An alert channel is one delivery destination — a Slack channel, a Teams channel, a webhook URL, or a set of email recipients. Create a channel first, then subscribe it to whatever should notify it. A channel with no subscriptions is connected but will never fire.

Type How it’s set up
Slack Either connect a Slack workspace (below) and pick a channel, or paste a manually-created Slack Incoming Webhook URL.
Microsoft Teams Paste an incoming webhook URL for a Teams channel. There’s no OAuth connection for Teams — webhook only.
Webhook Any URL. Plutus POSTs the alert as JSON. If you set a secret when creating the channel, the request body is signed with HMAC-SHA256 into an X-Plutus-Signature header, so your receiver can verify the request came from Plutus.
Email One or more recipient addresses on a single channel.

Go to Alerts and click one of the four channel types to create a channel.

Connecting a workspace is separate from picking a channel inside it. You connect the workspace once; after that, adding more Slack alert channels is just picking a different channel from the same connection — no repeated authorization.

  1. Go to Alerts and click Slack.
  2. Click Connect Slack workspace. This starts an OAuth flow against Plutus’s Slack app and asks you to authorize it in your workspace.
  3. After authorizing, pick a channel from the list Plutus fetched from your workspace.
  4. Save.

Plutus can post to any public channel it’s authorized for without being invited first. For a private channel, invite the Plutus Slack app to that channel before alerts will deliver.

One workspace connection is shared by every Slack alert channel on the account. If you disconnect the workspace (Alerts → Slack → Disconnect), every channel still referencing it starts failing at send time with a clear “not connected” error, rather than silently doing nothing — reconnect the workspace and they resume without needing to be recreated.

If you’d rather not grant OAuth access, the manual form still works: create a Slack Incoming Webhook yourself and paste its URL in. A webhook-URL channel is fixed to whichever channel you created the webhook for.

A channel can be subscribed to three distinct kinds of trigger. A single channel can carry any combination of the three.

  • A specific budget. Subscribing a channel to a budget notifies it whenever that budget crosses its warning threshold or is exceeded. Set this from the budget’s detail page.
  • Account-wide alerts. Each channel card on the Alerts page has two toggles: “Notify on event ingestion limit overage” and “Notify on cost spikes” (detected anomalies). These aren’t tied to any one budget — they fire for the whole account.
  • A scheduled digest. A weekly or monthly cost summary sent to one channel. This is set up separately, under Alerts → Scheduled reports, not as a checkbox on the channel card — a digest carries its own cadence and scope (whole account, one cost source, or one tagged value like a team), which a checkbox can’t express.

For example: a #finops-budgets Slack channel subscribed to two budgets (Production AWS, Growth-tier overall) gets a message only when one of those two crosses its threshold. A separate #finops-digests Slack channel, set up as the destination for a weekly account-wide scheduled report, gets one summary message every Monday regardless of whether anything crossed a threshold that week. The same Slack channel can be the target of both a budget subscription and a scheduled digest at once — they’re independent.

Each Alerts page channel card shows how many budget thresholds it’s subscribed to. A channel with no budget subscriptions, no account-wide toggle on, and no scheduled digest pointed at it is flagged as subscribed to nothing, since it will never send anything.