Skip to main content

Overview

An alert channel is a notification destination. When an alert rule triggers, Bifrost dispatches a notification to each channel attached to that rule. Channel configuration (URLs, keys, headers) is encrypted at rest.

Channel types

Typetype valueRequired config keyPayload format
Slackslackwebhook_url (or url)Slack Block Kit message with header and message section.
Microsoft Teamsmicrosoft_teamswebhook_url (or url)Adaptive Card (28 KB payload limit).
PagerDutypagerdutyrouting_key (or integration_key)PagerDuty Events API v2 event.
Webhookwebhookurl (or webhook_url)Generic JSON payload.
Every channel also accepts an optional name, an optional description, and an optional per-channel cooldown.

Slack

Create a Slack incoming webhook and provide its URL.
FieldTypeRequiredDescription
webhook_urlstringYesSlack incoming webhook URL (HTTPS). Also accepted as url.
Notifications are sent as Block Kit messages. Each message includes a header block showing the rule name and a section block containing the alert details in a markdown code block.

Microsoft Teams

Provide a Teams incoming webhook or Workflows URL.
FieldTypeRequiredDescription
webhook_urlstringYesTeams webhook URL (HTTPS). Also accepted as url.
Notifications are sent as Adaptive Cards. Teams enforces a 28 KB payload limit.

PagerDuty

Use a PagerDuty service integration key (routing key) from an Events API v2 integration.
FieldTypeRequiredDescription
routing_keystringYesPagerDuty Events API v2 integration (routing) key. Also accepted as integration_key.
Events are sent via the PagerDuty Events API v2 with event_action: "trigger", severity "warning", and a deduplication key derived from the rule ID, scope, and target so repeated triggers update the same incident. The source field is set to "Bifrost Alerting".

Webhook

Send a generic JSON payload to any HTTPS endpoint.
FieldTypeRequiredDescription
urlstringYesDestination URL. HTTPS required unless allow_http is enabled in webhook_network config. Also accepted as webhook_url.
headersobjectNoAdditional HTTP headers to send. Sensitive headers are stripped (see Security).

Webhook payload


Cooldowns

Each channel can define an optional cooldown that applies on top of the rule’s cooldown. When a channel is within its cooldown window, matched alerts that would have been delivered through that channel are recorded as skipped in alert history with reason "channel_cooldown".
  • A channel cooldown of 0 means no additional suppression beyond the rule cooldown.
  • The API accepts cooldown_milliseconds, which must be a multiple of 1000.
  • config.json accepts cooldown_seconds, a whole-second integer.

Security

All channels enforce network safety controls:
  • HTTPS by default. Slack, Microsoft Teams, and generic webhook channels require HTTPS unless webhook_network.allow_http is true. PagerDuty always uses its fixed HTTPS Events API endpoint.
  • SSRF protection. RFC1918 private-network destinations are blocked unless webhook_network.allow_private_network is true. Loopback destinations such as localhost are permitted for local development. Link-local and unspecified addresses remain blocked regardless of this setting.
  • Header sanitization. Sensitive outbound headers are stripped from webhook requests: authorization, connection, content-length, cookie, host, proxy-authorization, set-cookie, te, trailer, transfer-encoding, upgrade.
Enabling allow_http or allow_private_network weakens TLS or SSRF protections. Only enable these for trusted internal or air-gapped networks.

Creating a channel

  1. Open Alerting in the Bifrost dashboard, go to the Channels tab, and click Add Channel.
  2. Enter a Channel Name and select a Channel Type.
  3. Provide the type-specific configuration (webhook URL, routing key, etc.).
  4. Optionally set a Cooldown and, for webhooks, Custom Headers.
  5. Click Add Channel.

Next steps

Alert Rules

Attach channels to rules and define trigger conditions.

Alert History

Review delivery outcomes for every channel.