Skip to main content

How Notifications Work

UptimeIO uses a flexible two-tier notification system that separates what to monitor from who to notify:
  1. Integrations: Individual notification channels (email, SMS, Slack, etc.)
  2. Notification Profiles: Groups of integrations that can be assigned to monitors
This separation allows you to manage notifications centrally and reuse the same notification configuration across multiple monitors.

Architecture

Monitor → Notification Profile → Integrations → Recipients
1

Create Integrations

Set up individual notification channels:
  • Email addresses
  • SMS phone numbers
  • Slack webhooks
  • Discord webhooks
  • Custom webhooks
2

Create Notification Profiles

Group integrations together and configure which events trigger notifications.
3

Assign to Monitors

Assign one or more notification profiles to each monitor.
4

Receive Alerts

When incidents occur, notifications are sent through all integrations in the assigned profiles.

Notification Events

UptimeIO can send notifications for different types of events:

Monitor Down

When a monitor fails health checks (3 failures from 2+ regions)

Monitor Recovery

When a monitor recovers after being down

Slow Response

When response times exceed configured thresholds

Slow Response Resolved

When response times return to normal

SSL Certificate Expiry

When SSL certificates are approaching expiration

DNS Error

When DNS resolution fails or returns unexpected values

Event Cascade Filtering

UptimeIO uses a two-level cascade filter system for fine-grained notification control:

Level 1: Profile-Level Events

Configure which events the entire profile should handle:
Notification Profile: "Production Alerts"
Events:
  on_failure: true
  on_recovery: true
  on_ssl_expiry: true
  on_dns_error: true
  on_slow_response: true
  on_slow_response_resolved: false
If an event is disabled at the profile level, NO integrations in that profile will receive notifications for that event, regardless of their individual settings.

Level 2: Integration-Level Events

Each integration has its own event preferences:
Integration: [email protected] (Email)
Events:
  on_failure: true          # Receive failure alerts
  on_recovery: true         # Receive recovery alerts
  on_ssl_expiry: true       # Receive SSL alerts
  on_slow_response: false   # Don't receive slow response alerts

How It Works

For a notification to be sent, BOTH conditions must be true:
  1. ✅ Event enabled at profile level
  2. ✅ Event enabled at integration level
Profile Level:
  on_failure: true ✅

Integration Level (SMS):
  on_failure: true ✅

Result: SMS notification sent ✅

Use Cases

Scenario 1: Different Alerts for Different Channels

Profile: "Production Monitoring"
Profile Events: All enabled

Integrations:
  - Email ([email protected]):
      Events: All enabled
      Use: Complete audit trail
  
  - SMS (+1234567890):
      Events: Only failures
      Use: Critical alerts only
  
  - Slack (webhook):
      Events: Failures, recoveries, SSL
      Use: Team awareness
Result: Email gets everything, SMS only critical failures, Slack gets important events.

Scenario 2: Business Hours vs After Hours

Profile 1: "Business Hours"
  - Email: [email protected]
  - Slack: #monitoring
  Events: All events

Profile 2: "After Hours"
  - SMS: +1234567890 (on-call)
  - PagerDuty: integration-key
  Events: Only failures and critical issues
Result: Assign both profiles to monitors. During incidents, business hours team gets detailed notifications, after-hours team gets critical alerts.

Scenario 3: Severity-Based Routing

Profile: "Critical Services"
  Events: All enabled
  Integrations:
    - SMS: +1234567890
    - PagerDuty: key-123
    - Email: [email protected]

Profile: "Non-Critical Services"
  Events: All enabled
  Integrations:
    - Email: [email protected]
    - Slack: #monitoring
Result: Critical monitors trigger immediate alerts, non-critical monitors use less intrusive channels.

Notification Deduplication

UptimeIO automatically prevents duplicate notifications:
If the same integration appears in multiple profiles assigned to a monitor, it only receives one notification per event.
Monitor: "API Server"
Profiles:
  - "Team Alerts" (includes [email protected])
  - "Production Alerts" (includes [email protected])

Result: [email protected] receives ONE notification, not two
UptimeIO rate-limits notifications to prevent alert fatigue:
  • Same incident: One notification per state change
  • Flapping protection: Delays notifications if monitor flaps
  • Burst protection: Limits notifications per time window

Notification Delivery

Delivery Guarantees

UptimeIO ensures reliable notification delivery:
1

Immediate attempt

Notification sent immediately when incident is created.
2

Automatic retries

If delivery fails, automatic retries with exponential backoff:
  • Retry 1: After 1 second
  • Retry 2: After 2 seconds
  • Retry 3: After 4 seconds
3

Dead letter queue

After 3 failed attempts, notification is moved to dead letter queue for manual review.

Delivery Status

Track notification delivery in the dashboard:
StatusMeaning
DeliveredSuccessfully sent and acknowledged
PendingQueued for delivery
RetryingFailed, attempting retry
FailedAll retry attempts exhausted
View delivery status for each notification in the incident timeline.

Notification Content

Notifications include comprehensive incident information:

Email Notifications

Subject: [UptimeIO] Monitor Down: API Server

Monitor: API Server
URL: https://api.example.com/health
Status: DOWN
Started: 2024-01-15 10:30:00 UTC
Duration: 5 minutes

Failure Details:
- Region: us-east-1
- Error: Connection timeout after 10000ms
- Status Code: N/A
- Response Time: N/A

Verification:
- 3 failed checks from 2 different regions
- Regions: us-east-1, eu-west-1, ap-southeast-1

View Incident: https://app.uptimeio.com/incidents/inc_123

SMS Notifications

[UptimeIO] DOWN: API Server
https://api.example.com/health
Error: Connection timeout
View: https://uptimeio.com/i/inc_123
SMS messages are concise to fit within SMS length limits while providing essential information.

Webhook Notifications

{
  "event": "monitor.down",
  "timestamp": "2024-01-15T10:30:00Z",
  "monitor": {
    "id": "mon_abc123",
    "name": "API Server",
    "url": "https://api.example.com/health",
    "type": "HTTP"
  },
  "incident": {
    "id": "inc_xyz789",
    "status": "open",
    "started_at": "2024-01-15T10:30:00Z",
    "verification": {
      "failed_checks": 3,
      "regions": ["us-east-1", "eu-west-1", "ap-southeast-1"]
    }
  },
  "error": {
    "message": "Connection timeout after 10000ms",
    "region": "us-east-1"
  }
}

Best Practices

Create profiles based on:
  • Teams (Frontend Team, Backend Team)
  • Severity (Critical, Warning, Info)
  • Time (Business Hours, After Hours)
  • Environment (Production, Staging)
  • Email: Enable all events (audit trail)
  • SMS: Only critical events (failures)
  • Slack: Important events (failures, recoveries, SSL)
  • PagerDuty: Only failures (incident management)
After setting up:
  1. Use “Test Now” to manually trigger a check
  2. Temporarily set unrealistic expectations to trigger failure
  3. Verify all integrations receive notifications
  4. Check notification content and formatting
  5. Restore correct configuration
Regularly review:
  • Delivery success rates
  • Failed notifications in dead letter queue
  • Integration health status
  • Response times for webhook integrations

Notification Seats

Notification seats control how many people can receive notifications:

How Seats Work

PlanOwner SeatsTeam SeatsNotification Seats
Free1 (owner)00
Solo1 (owner)Purchase additionalPurchase additional
Team1 (owner)IncludedPurchase additional
Enterprise1 (owner)IncludedPurchase additional

Seat Types

  • Included in all plans
  • Full dashboard access
  • Can add 1 email + 1 SMS integration
Learn more about seats and pricing in the Billing section.

SMS Credits

SMS notifications consume credits:
PlanMonthly CreditsCredit Expiry
Free0N/A
SoloIncluded3 months
TeamIncluded3 months
EnterpriseIncluded3 months
Monthly credits expire after 3 months. Purchased credits never expire.
Learn more about SMS credits in the Billing section.

Next Steps