Skip to main content

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

  1. Navigate to AlertsAlert Channels
  2. Click New Channel
  3. Select channel type
  4. Configure channel settings
  5. Click Test Channel to send a test notification
  6. Verify the test was received
  7. 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_id to 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 TypeRate LimitWindow
Email10 alertsper hour
Slack20 alertsper hour
Discord20 alertsper hour
Telegram30 alertsper hour
PagerDutyNo limit-
OpsgenieNo limit-
Webhooks50 alertsper 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-Signature header)
  • Validate payload structure before processing
  • Rate limit incoming requests

Template Variables

Channels support template variables for dynamic content:

VariableDescriptionExample
{monitor}Monitor nameProduction API
{status}Current statusDown, Up, Degraded
{severity}Alert severityP0, P1, P2, P3
{timestamp}Alert time2026-02-13 14:30:00
{url}Monitor URLhttps://api.example.com
{error}Failure reasonConnection timeout

Next Steps