Sheet31 / 62

Notifications

Circuit Breaker can route in-app notification sinks for alerting on events.

Notifications

Notification sinks let you define where alerts should go and how they are grouped.

Typical workflow:

  1. Open Notifications (admin navigation), or Settings → Integrations → Notifications.
  2. Create sink destinations.
  3. Add routes to control which severities each sink receives.
  4. Test and validate delivery.

Sink types

Each sink has a Name, a Provider Type, and one destination field.

Provider Type Required field What the destination receives
Slack Webhook URL A JSON POST of the form {"text": "…"}
Discord Webhook URL A JSON POST of the form {"content": "…"}
Microsoft Teams Webhook URL A JSON POST of a MessageCard ("@type": "MessageCard")
Email Recipient Email An email sent through your configured SMTP settings

Email sinks

An email sink holds the recipient address and nothing else. The server, port, credentials, TLS mode, and sender address all come from Settings → SMTP — the same configuration used for invites — so there is no per-sink SMTP setup and no per-sink credential to manage.

This means an email sink cannot deliver until SMTP is configured. The sink form says so when it is not, and both Test and real delivery return “SMTP is not configured” rather than a connection error.

Webhook URL storage

An incoming-webhook URL is a credential: anyone holding it can post into that channel. Circuit Breaker encrypts webhook URLs with the vault key before storing them, and the sinks list shows only a masked preview — enough to tell two destinations apart, never enough to use one.

When editing a sink, leave the masked value as it is to keep the current URL; replace it outright to point the sink somewhere new. Rotating the vault key (Settings → Security) re-encrypts stored webhook URLs along with every other secret.

Routes

Routes connect a sink to a minimum severity — a floor, not an exact match. A route set to warning receives warning and critical alerts; critical receives critical only; info receives everything on the ladder; * receives every event regardless. A sink with no route receives nothing.

An alert whose severity is not one of info / warning / critical is treated as critical, so it reaches every route rather than being dropped.

Troubleshooting

  • Verify the destination URL (or recipient address) on the sink.
  • Confirm a route exists whose minimum severity is at or below the one you expect, and that both sink and route are enabled.
  • Use the sink’s Test action and read the result panel it returns — this is the only delivery diagnostic; there is no delivery log or history view.

What a Test actually establishes

Test sends down the same path as a real alert and classifies the provider’s response the same way, so the two agree. What it proves is bounded, and the result panel is worded to match:

Result What it means What it does not mean
Accepted by provider The provider returned a 2xx and took the request That a person saw it. The provider can still drop, filter, or delay the message downstream
… did not accept it (terminal) The request was refused and will not be retried — bad credentials, a rejected URL, missing configuration That the destination is unreachable in general; fix the named cause and test again
… did not accept it (retrying) A transient failure — rate limit, timeout, provider outage. Bounded retries apply That it will eventually succeed

The panel reports the attempt count, the HTTP status, and any Retry-After window the provider asked for. A rejected response is never reported as success: acceptance, configuration being saved, and a human reading the message are three separate events.

The result also names which destination answered. The provider name alone cannot tell two Slack destinations apart, and an outcome you cannot attribute is not one you can act on.

Where the outcome has a known next action, the panel states it — re-enter credentials that could not be decrypted, wait out a rate-limit window, complete a half-configured destination. An outcome the UI does not recognise is reported with the server’s own reason and no invented advice.

  • For Email sinks, check Settings → SMTP, since the sink sends through it.
  • If a sink starts failing right after a vault key change, re-save its webhook URL — the stored ciphertext can no longer be decrypted with the current key.
  • If behind a proxy, ensure outbound network access to target endpoints.
Top