> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# Notification channels

> Where alerts and events go — Slack, email, webhook, PagerDuty.

Notifications route Nora events (approvals, alerts, publishes, incidents) to the systems your team already watches. Configure destinations here; wire rules to them in [Alerts](/settings/notifications/alerts).

## Supported channels

| Channel       | Best for                                                                |
| ------------- | ----------------------------------------------------------------------- |
| **Email**     | Individual notifications, low-volume alerts.                            |
| **Slack**     | Team-facing, high-visibility, interactive (Slack buttons on approvals). |
| **Discord**   | Same as Slack for Discord-based teams.                                  |
| **PagerDuty** | On-call escalation for incidents.                                       |
| **Webhook**   | Anything else — custom routing, internal apps, SIEM.                    |

## Adding a channel

**Settings → Notifications → Channels → New**:

1. Pick the channel type.
2. Authenticate (OAuth for Slack/Discord/PagerDuty; API key / URL for webhook).
3. Configure target — Slack channel, email address, webhook URL.
4. Name it — something meaningful ("#nora-alerts", "eng-oncall@").
5. Test — Nora sends a probe message.

Once saved, the channel is a reusable target you can wire into any alert rule.

## Slack setup

1. **Settings → Notifications → Channels → New → Slack**.
2. Authorize the Nora Slack app.
3. Pick the channel.
4. Save.

Two-way: Slack channels wired to approval routing (see [Alerts](/settings/notifications/alerts)) get interactive Approve / Reject buttons. Clicking a button hits the approval endpoint with the acting user's Slack ID; Nora records the decision.

For workspaces without Slack app permissions, use an **incoming webhook** channel instead — one-way but no admin approval needed.

## Discord setup

Similar to Slack. Uses Discord webhooks (no OAuth flow).

## PagerDuty setup

1. In PagerDuty, create a service and integration (Events API v2).
2. Copy the integration key.
3. **Nora → Settings → Notifications → Channels → New → PagerDuty** → paste the key.

Nora sends structured events; PagerDuty routes to your on-call.

Recommended: use PagerDuty only for genuine incidents (rollback triggers, sustained error rate). Everything else should go to Slack.

## Webhook setup

Generic HTTP POST. Configure:

* **URL** — your endpoint.
* **Auth** — none / bearer / custom header / HMAC.
* **Payload format** — JSON (Nora's shape), custom template, or your CI's expected shape.

Payload includes:

```json theme={null}
{
  "event": "flows.publish",
  "workspace_id": "acme",
  "actor": {"kind": "user", "id": "u_alice"},
  "target": {"flow": "support-agent", "version": 42},
  "details": {"summary": "..."},
  "timestamp": "2026-07-31T09:12:34Z"
}
```

Signed with HMAC-SHA256 in the `X-Nora-Signature` header.

## Email setup

Add individual email addresses or a group email:

* Individual — for personal alerts (I want to know about my own Flows).
* Group — for team notifications (`eng-oncall@company.com`).

For high-volume alerts, prefer Slack over email — signal-to-noise is much better.

## Testing a channel

Every channel has a **Send test** button. Nora fires a "hello, this is Nora testing this channel" payload so you can confirm end-to-end wiring.

## Rotating credentials

**Settings → Notifications → Channels → click channel → Rotate credentials**:

* Slack / Discord — re-auth the OAuth grant.
* PagerDuty — paste a new integration key.
* Webhook — paste a new signing secret. Old one accepts for 60 minutes.

## Deleting a channel

Fails if any active alert rule still targets it. Update the rules first.

Deletion is audited.

## Common channel patterns

* **`#nora-approvals`** — every approval request lands here with Slack buttons.
* **`#nora-alerts`** — rollbacks, high-severity signals, cost overages.
* **`#nora-deploys`** — every publish (informational; low urgency).
* **PagerDuty `nora-oncall`** — only auto-rollbacks and canary failures. Wakes people up.
* **`eng-oncall@`** — daily digest of overnight incidents.

## Per-Flow channels

For workspaces with many Flows, avoid one giant `#nora-*` channel by wiring per-Flow channels:

* `#support-agent-alerts` — alerts specific to the support Flow.
* `#billing-agent-approvals` — approvals for the billing Flow only.

Configure in the alert rule (see [Alerts](/settings/notifications/alerts)).

## Related

* [Alerts](/settings/notifications/alerts) — the rules that fire notifications.
* [Approve & deploy](/reliable/optimization/approve) — approvals routed via channels.
* [Audit](/settings/security/audit) — audit forwarding uses this same channel infrastructure.
