Alerts
Multi-channel notifications for failures and recoveriesEdit
Alerts notify you when monitors fail, tests break, or services recover. Configure multiple notification channels and use smart thresholds to avoid alert fatigue.
Notification Providers
Professional HTML emails via SMTP with detailed status information
Slack
Rich formatted messages to channels or DMs with status badges
Webhook
JSON payloads to any HTTP endpoint for custom integrations
Telegram
Bot messages to chats or groups with Markdown formatting
Discord
Embedded messages to server channels with color-coded status
Microsoft Teams
Adaptive Card notifications via Power Automate workflows
Setting Up Providers
- Go to Alerts → Notification Channels
- Click Add Provider
- Select the provider type and enter credentials
- Click Test to verify the connection
- Save the provider
After creating providers, attach them to monitors or jobs in their Alerts settings.
Alert Types
| Alert | Trigger | Severity |
|---|---|---|
| Failure | Consecutive failures reach threshold | Error |
| Recovery | Consecutive successes reach threshold after being down | Success |
| SSL Expiring | Certificate expires within configured days | Warning |
| Alert | Trigger | Severity |
|---|---|---|
| Failure | One or more tests in the job failed | Error |
| Success | All tests passed (optional) | Success |
| Timeout | Job exceeded maximum execution time | Error |
Threshold Configuration
Thresholds prevent alert noise from transient issues like network blips or brief service hiccups.
Failure Threshold
The number of consecutive failures required before sending the first failure alert. This prevents alerts from single network blips.
Recovery Threshold
The number of consecutive successes required before sending a recovery alert. This ensures the service is truly stable before confirming recovery.
Alert Limiting
To prevent notification spam during extended outages:
- Maximum 3 alerts per failure or recovery sequence
- First alert sent when threshold is reached
- Counter resets when status changes (from up→down or down→up)
Configuration: Failure Threshold = 3, Recovery Threshold = 2
| Check | Result | Consecutive Count | Alert Sent |
|---|---|---|---|
| 1 | ❌ Fail | 1 failure | — |
| 2 | ❌ Fail | 2 failures | — |
| 3 | ❌ Fail | 3 failures ✓ | Failure Alert |
| 4 | ❌ Fail | 4 failures | — |
| 5 | ✅ Pass | 1 success | — |
| 6 | ✅ Pass | 2 successes ✓ | Recovery Alert |
Notes:
- Check 3: Failure threshold (3) reached → first failure alert sent
- Check 4: Already alerted, no new alert until exponential interval
- Check 5: Status changed to passing, failure counter resets, recovery counter starts
- Check 6: Recovery threshold (2) reached → recovery alert sent
Provider Configuration
SMTP environment variables:
SMTP_HOST=smtp.resend.com
SMTP_PORT=587
SMTP_FROM_EMAIL=alerts@yourdomain.com
# Optional: set BOTH only when SMTP authentication is required
SMTP_USER=resend
SMTP_PASSWORD=your-api-keyIf your SMTP server does not require auth, leave SMTP_USER and SMTP_PASSWORD empty,
but keep SMTP_FROM_EMAIL set.
Supported providers: Resend, SendGrid, Mailgun, Amazon SES, Gmail, Office 365
- Go to Slack API and create an Incoming Webhook
- Select the channel to post to
- Copy the webhook URL
- Add the URL in Supercheck
Example: https://hooks.slack.com/services/T00000000/B00000000/XXXX
- In Discord, go to Server Settings → Integrations → Webhooks
- Create a new webhook and select the channel
- Copy the webhook URL
- Add the URL in Supercheck
Example: https://discord.com/api/webhooks/000000000000000000/XXXX
- Create a bot with @BotFather
- Get your bot token
- Get your chat ID (use @userinfobot)
- Add both in Supercheck
Teams uses Power Automate Workflows to receive webhook notifications.
- Go to the Teams channel where you want notifications
- Click ••• → Workflows → Create a workflow
- Choose a template:
- Send webhook alerts to a channel — posts to a Teams channel
- Follow the prompts to select the destination channel
- Copy the generated webhook URL
- Add the URL in Supercheck Notification Channel
Example: https://prod-00.westus.environment.api.powerplatform.com:443/powerautomate/...
Configuration:
- URL: Your endpoint
- Method: GET, POST, or PUT (default: POST)
- Body Template: Optional custom JSON body with template variables (used for POST and PUT requests)
Default Payload
When no body template is provided, Supercheck sends a JSON payload similar to the following. fields and originalPayload.metadata vary by alert type and the metadata available for that event:
{
"title": "Monitor Down - API Health",
"message": "Monitor \"API Health\" is down. Connection timeout",
"fields": [
{ "title": "Monitor", "value": "API Health", "short": true },
{ "title": "Type", "value": "http_request", "short": true },
{ "title": "Status", "value": "down", "short": true },
{ "title": "Response Time", "value": "5200ms", "short": true }
],
"color": "#dc2626",
"footer": "",
"timestamp": 1735689600,
"originalPayload": {
"type": "monitor_failure",
"title": "Monitor Down - API Health",
"message": "Monitor \"API Health\" is down. Connection timeout",
"targetName": "API Health",
"targetId": "...",
"severity": "error",
"timestamp": "2025-01-01T00:00:00.000Z",
"metadata": {
"responseTime": 5200,
"status": "down",
"targetUrl": "https://api.example.com/health",
"monitorType": "http_request",
"dashboardUrl": "https://app.supercheck.io/notification-monitor/..."
}
},
"provider": "webhook",
"version": "1.0"
}Body Template
Use a custom body template to match the format required by third-party services. Templates must be valid JSON, and template variables use {{variableName}} syntax. Supercheck safely escapes interpolated values before sending the final JSON payload, so keep placeholders inside JSON string values such as "summary": "{{title}}".
Available variables:
| Variable | Description | Example |
|---|---|---|
{{title}} | Alert title | Monitor Down - API Health |
{{message}} | Alert message | Monitor "API Health" is down. Connection timeout |
{{severity}} | Alert severity | error, warning, success, info |
{{normalizedSeverity}} | Normalized severity for APIs that do not accept success | error, warning, info |
{{status}} | Monitor or job status | down, up, failed, passed |
{{monitorName}} | Monitor or target name | API Health |
{{targetName}} | Same as monitorName | API Health |
{{targetUrl}} | Monitored URL | https://api.example.com/health |
{{targetId}} | Target ID | uuid |
{{timestamp}} | ISO 8601 timestamp | 2025-01-15T10:30:00.000Z |
{{type}} | Alert type | monitor_failure, monitor_recovery, job_failed |
{{projectName}} | Project name | My Project |
{{projectId}} | Project ID | uuid |
{{responseTime}} | Response time in ms | 5200 |
{{errorMessage}} | Error details | Connection timeout |
{{monitorType}} | Monitor type | http_request, website, ping_host, port_check |
{{dashboardUrl}} | Link to dashboard | https://app.supercheck.io/... |
PagerDuty Integration
Use a webhook with a body template to send alerts to the PagerDuty Events API v2:
- In PagerDuty, go to Services → Service Directory → select your service
- Go to the Integrations tab and click Add Integration
- Search for Events API V2 and add it
- Copy the Integration Key (also called Routing Key)
- In Supercheck, create a Webhook notification channel with:
- URL:
https://events.pagerduty.com/v2/enqueue - Method: POST
- Body Template:
- URL:
{
"routing_key": "YOUR_PAGERDUTY_INTEGRATION_KEY",
"event_action": "trigger",
"payload": {
"summary": "{{title}}",
"severity": "{{normalizedSeverity}}",
"source": "supercheck",
"component": "{{monitorName}}",
"custom_details": {
"message": "{{message}}",
"monitor_type": "{{monitorType}}",
"target_url": "{{targetUrl}}",
"response_time": "{{responseTime}}",
"dashboard_url": "{{dashboardUrl}}"
}
}
}PagerDuty expects severity to be one of critical, error, warning, or info. Use {{normalizedSeverity}} in PagerDuty payloads because Supercheck maps success alerts to info for services that do not accept success.
OpsGenie Integration
Use a webhook with a body template to send alerts to OpsGenie's Alert API:
- In OpsGenie, go to Settings → Integration List → API
- Copy the API Key
- In Supercheck, create a Webhook notification channel with:
- URL:
https://api.opsgenie.com/v2/alerts - Method: POST
- Body Template:
- URL:
{
"message": "{{title}}",
"description": "{{message}}",
"priority": "P2",
"source": "supercheck",
"tags": ["supercheck", "{{monitorType}}"],
"details": {
"monitor": "{{monitorName}}",
"status": "{{status}}",
"target_url": "{{targetUrl}}",
"response_time": "{{responseTime}}"
}
}For OpsGenie, you must also add an Authorization header with your API key. Since the webhook UI does not currently support custom headers, you can use OpsGenie's email integration as an alternative, or set the API key via your API endpoint proxy.
Alert History
Track all alerts from Alerts → History:
- Alert type and severity
- Target (monitor or job name)
- Notification channels used
- Delivery status
- Timestamp
Alert Samples





