Alert Channels
Alert channels define where notifications are sent when alerts trigger. BlackTide supports 7 channel types with robust delivery guarantees.
Supported Channels
BlackTide integrates with the most popular notification platforms:
- Email: Send to individual or group addresses
- Slack: Post to channels with rich formatting
- Discord: Send embeds with role mentions
- Telegram: Push notifications with inline buttons
- PagerDuty: Create incidents for on-call teams
- Opsgenie: Trigger alerts with priority levels
- Webhooks: POST JSON payloads to custom endpoints
Channel Configuration
Email Channel
Send alerts via email using AWS SES:
{
"type": "email",
"name": "Team Email",
"config": {
"to": ["team@example.com", "ops@example.com"],
"from": "alerts@blacktide.xyz",
"subject": "[{severity}] {monitor} - {status}"
}
}Email Features
- HTML-formatted messages with color-coded status
- Inline charts showing recent check results
- Direct links to monitor detail and incident pages
- Support for multiple recipients
Slack Channel
Post alerts to Slack channels via Incoming Webhooks:
{
"type": "slack",
"name": "Engineering Alerts",
"config": {
"webhookUrl": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",
"channel": "#alerts",
"username": "BlackTide",
"iconEmoji": ":rotating_light:",
"mentions": ["@channel", "@oncall"]
}
}Slack Features
- Rich message attachments with color-coded sidebars
- Inline action buttons (Acknowledge, Silence, View Details)
- Threaded updates for incident timeline
- User/group mentions for critical alerts
See full Slack integration guide →
Discord Channel
Send alerts to Discord channels via webhooks:
{
"type": "discord",
"name": "DevOps Discord",
"config": {
"webhookUrl": "https://discord.com/api/webhooks/YOUR/WEBHOOK",
"username": "BlackTide Monitor",
"avatarUrl": "https://blacktide.xyz/logo.png",
"roleMentions": ["@Developers", "@On-Call"]
}
}Discord Features
- Rich embeds with color-coded status
- Thumbnail images for monitor types
- Role mentions for team notification
- Direct links to incident pages
See full Discord integration guide →
Telegram Channel
Push notifications to Telegram chats:
{
"type": "telegram",
"name": "Ops Telegram",
"config": {
"botToken": "YOUR_BOT_TOKEN",
"chatId": "-1001234567890",
"parseMode": "Markdown",
"disableNotification": false
}
}Telegram Features
- Instant push notifications to mobile devices
- Inline action buttons (Acknowledge, View, Silence)
- Support for groups and channels
- Markdown formatting for rich text
See full Telegram integration guide →
PagerDuty Channel
Create incidents in PagerDuty for on-call escalation:
{
"type": "pagerduty",
"name": "On-Call Team",
"config": {
"integrationKey": "YOUR_INTEGRATION_KEY",
"severity": "critical",
"component": "api",
"group": "backend"
}
}PagerDuty Features
- Automatic incident creation with de-duplication
- Escalation policies and on-call schedules
- Auto-resolve incidents when monitors recover
- Incident timeline synchronization
See full PagerDuty integration guide →
Opsgenie Channel
Trigger alerts in Opsgenie with priority levels:
{
"type": "opsgenie",
"name": "Opsgenie Alerts",
"config": {
"apiKey": "YOUR_API_KEY",
"priority": "P1",
"teams": ["backend-team", "oncall-team"],
"tags": ["production", "api"]
}
}Opsgenie Features
- Priority-based alert routing
- Team assignment and escalation
- Custom tags for filtering
- Auto-close alerts on recovery
See full Opsgenie integration guide →
Webhook Channel
POST JSON payloads to custom endpoints:
{
"type": "webhook",
"name": "Custom Integration",
"config": {
"url": "https://your-app.com/webhooks/blacktide",
"method": "POST",
"headers": {
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
"payload": {
"monitor": "{monitor}",
"status": "{status}",
"timestamp": "{timestamp}",
"custom_field": "value"
}
}
}Webhook Features
- Fully customizable payload structure
- Custom HTTP headers (authentication, content-type)
- Retry logic with exponential backoff
- Template variables for dynamic content
See full Webhook integration guide →
Channel Management
Creating a Channel
- Navigate to Alerts → Alert Channels
- Click New Channel
- Select channel type
- Configure channel settings
- Click Test Channel to send a test notification
- Verify the test was received
- Save the channel
Testing Channels
Always test a channel before using it in production:
Test Message Example:
🧪 BlackTide Test Alert
This is a test notification from BlackTide.
If you received this, your channel is configured correctly.
Monitor: Test Monitor
Status: Down → Up
Time: 2026-02-13 14:30:00 UTC
[View Dashboard]Updating Channels
Channels can be updated at any time. Changes take effect immediately for new alerts. Existing alerts in the queue will use the old configuration.
Deleting Channels
Deleting a channel:
- Removes it from all associated alert rules
- Does NOT delete past notification logs
- Cannot be undone (must recreate from scratch)
Delivery Guarantees
At-Least-Once Delivery
BlackTide guarantees at-least-once delivery, meaning:
- Alerts may be delivered multiple times (rare, but possible)
- Your webhook endpoints should be idempotent
- Use
alert_idto deduplicate on your end
Retry Logic
Failed deliveries are retried up to 3 times with exponential backoff:
- Attempt 1: Immediate
- Attempt 2: After 30 seconds
- Attempt 3: After 2 minutes
- Attempt 4: After 5 minutes (final attempt)
Timeout
Channel deliveries timeout after 30 seconds. If your webhook endpoint is slow, it may trigger retries even if the request eventually succeeds.
Rate Limiting
To prevent spam, channels have built-in rate limits:
| Channel Type | Rate Limit | Window |
|---|---|---|
| 10 alerts | per hour | |
| Slack | 20 alerts | per hour |
| Discord | 20 alerts | per hour |
| Telegram | 30 alerts | per hour |
| PagerDuty | No limit | - |
| Opsgenie | No limit | - |
| Webhooks | 50 alerts | per hour |
If you hit a rate limit, subsequent alerts are queued and sent when the window resets.
Best Practices
1. Use Multiple Channels
Configure redundant channels for critical services:
- Primary: Slack (immediate team visibility)
- Secondary: Email (backup, reaches everyone)
- Escalation: PagerDuty (on-call for critical issues)
2. Test Regularly
Channels can break due to:
- Webhook URLs expiring
- API keys being rotated
- Slack/Discord channels being deleted
Send test notifications monthly to verify channels still work.
3. Monitor Delivery Failures
BlackTide logs all delivery attempts. Review the Notification Log for:
- Failed deliveries (investigate root cause)
- Slow deliveries (>5s response time)
- High retry rates
4. Use Descriptive Names
Name channels clearly to avoid confusion:
- ✅
Engineering Team Slack - #alerts - ✅
On-Call PagerDuty - Backend Team - ❌
Channel 1 - ❌
Slack
5. Secure Webhook Endpoints
If using custom webhooks:
- Use HTTPS (not HTTP)
- Implement signature verification (use
X-BlackTide-Signatureheader) - Validate payload structure before processing
- Rate limit incoming requests
Template Variables
Channels support template variables for dynamic content:
| Variable | Description | Example |
|---|---|---|
{monitor} | Monitor name | Production API |
{status} | Current status | Down, Up, Degraded |
{severity} | Alert severity | P0, P1, P2, P3 |
{timestamp} | Alert time | 2026-02-13 14:30:00 |
{url} | Monitor URL | https://api.example.com |
{error} | Failure reason | Connection timeout |
Next Steps
- Configure Alert Rules to define when alerts trigger
- Integration Guides for step-by-step setup instructions
- Learn about Silencing for maintenance windows
- Best Practices for effective alerting