Notification Channels
Notification channels define where alert notifications are delivered. Channels are configured at the account level and can be reused across any number of alerts.
Supported channel types
| Channel | Configuration | Auth model |
|---|---|---|
| One or more recipient email addresses | N/A | |
| Slack | Connected workspace + channel picker | OAuth (Slack App) |
| PagerDuty | Integration/routing key (Events API v2) | Routing key |
| Generic Webhook | Any URL that accepts POST requests | Custom headers |
| Grafana IRM | Grafana OnCall or IRM webhook URL | URL is auth |
| FireHydrant | FireHydrant webhook URL | URL is auth |
| Zenduty | Zenduty integration webhook URL | URL is auth |
| BetterStack | BetterStack (formerly Better Uptime) webhook URL | URL is auth |
| incident.io | incident.io webhook URL | URL is auth |
Most integrations use simple HTTP POST endpoints — paste a URL or key and it works. Slack uses a connected workspace via OAuth (see Account Settings).
Creating a channel
- Go to Notification Channels in the sidebar (or from Account Settings).
- Click New Channel.
- Choose a channel type — the form updates to show the required fields for that type.
- Fill in the configuration:
- Slack — select your connected workspace, then pick a channel from the API-powered dropdown. Use "Test Connection" to verify the bot can post.
- PagerDuty — paste your integration/routing key.
- Other webhook types — paste the destination URL.
- Give it a name so you can identify it later (e.g., "Ops Slack", "On-Call PagerDuty").
- Save.
Assigning channels to alerts
When creating or editing an alert, you'll see a list of your notification channels. Select one or more channels that should receive notifications when the alert fires.
A single alert can notify multiple channels simultaneously — for example, posting to Slack and paging via PagerDuty at the same time.
Plan limits
Notification channels are subject to plan-based limits:
| Limit | Pro | Business |
|---|---|---|
| Channels per account | 5 | 25 |
| Channels per alert | 3 | 10 |
| Monthly deliveries | 5,000 | 50,000 |
| Daily deliveries | 500 | 5,000 |
When you approach your monthly delivery limit (80%), a warning appears on the billing page. If you exceed the limit, deliveries are throttled. If you hit the daily cap, deliveries are paused until the next day and you receive an email notification.
Channel type availability
Not all channel types are available on every plan. Incident management integrations require a Business plan:
| Channel type | Pro | Business |
|---|---|---|
| Yes | Yes | |
| Slack | Yes | Yes |
| Generic Webhook | Yes | Yes |
| PagerDuty | — | Yes |
| Grafana IRM | — | Yes |
| FireHydrant | — | Yes |
| Zenduty | — | Yes |
| BetterStack | — | Yes |
| incident.io | — | Yes |
If you're on a Pro plan and need incident management integrations, upgrade to Business from the Billing page. Existing channels are not affected if you downgrade — the restriction only applies when creating a new channel or changing a channel's type.
Testing a channel
Click Test delivery on any channel to send a sample notification. This verifies your configuration is correct before a real alert fires.
Enabling and disabling
Toggle a channel on or off without deleting it. Disabled channels won't receive any notifications until re-enabled.
Circuit breaker (auto-disable)
CatchHook monitors delivery success for each channel. If a channel fails 5 consecutive times, it is automatically disabled to prevent noise and wasted resources.
When a channel is auto-disabled:
- The channel owner receives an email notification.
- The channel status changes to disabled in the UI.
- No further deliveries are attempted until you investigate and re-enable it.
To re-enable, fix the underlying issue (expired webhook URL, revoked API key, etc.) and toggle the channel back on.
Delivery history
Each channel tracks its recent deliveries so you can see:
- Whether each delivery succeeded or failed.
- The response status code from the destination.
- Timestamps for every attempt.