Alerts¶
CalcBridge alerts notify you when important events occur, such as compliance threshold breaches, calculation errors, or workbook changes. This guide covers creating alerts, configuring conditions, setting up notification channels, and managing alerts.
Overview¶
Alerts help you stay informed without constantly monitoring the platform:
- Proactive Monitoring - Get notified before issues become problems
- Multi-Channel Delivery - Email, Slack, webhooks, and more
- Customizable Conditions - Set thresholds that matter to your business
- Audit Trail - Complete history of all alert triggers
Compliance Alerts
For CLO managers, compliance alerts are critical. Set up alerts for cushion thresholds to catch potential breaches before they occur.
Creating Alerts¶
Via UI¶
- Navigate to Alerts in the main menu
- Click Create Alert
- Configure the alert:
- Name - Descriptive name for the alert
- Type - What to monitor (see Alert Types below)
- Condition - When to trigger
- Channels - Where to send notifications
- Click Create
Via API¶
curl -X POST https://api.calcbridge.io/api/v1/alerts \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "CCC Bucket Warning",
"type": "compliance_threshold",
"workbook_id": "550e8400-e29b-41d4-a716-446655440000",
"condition": {
"test_name": "ccc_bucket",
"operator": "greater_than",
"threshold": 6.0,
"cushion_warning": 1.5
},
"channels": ["email", "slack"],
"recipients": {
"email": ["compliance@example.com"],
"slack": ["#compliance-alerts"]
},
"enabled": true
}'
Alert Types¶
Compliance Alerts¶
Monitor compliance test results and cushion levels.
| Alert Type | Triggers When |
|---|---|
| Threshold Breach | A compliance test fails |
| Cushion Warning | Cushion falls below threshold |
| Status Change | Test status changes (pass to fail, etc.) |
| Trend Alert | Cushion trending toward breach |
Example - Cushion Warning:
{
"type": "compliance_threshold",
"condition": {
"test_name": "single_obligor",
"cushion_warning": 2.0
}
}
Calculation Alerts¶
Monitor calculation status and errors.
| Alert Type | Triggers When |
|---|---|
| Calculation Error | A formula produces an error |
| Calculation Complete | Recalculation finishes |
| Calculation Timeout | Calculation exceeds time limit |
Example - Calculation Error:
{
"type": "calculation_error",
"condition": {
"error_types": ["#DIV/0!", "#REF!", "#VALUE!"],
"cell_count_threshold": 1
}
}
Workbook Alerts¶
Monitor workbook changes and activity.
| Alert Type | Triggers When |
|---|---|
| Workbook Modified | Data changes in workbook |
| Workbook Uploaded | New workbook is uploaded |
| Workbook Deleted | Workbook is deleted |
| Schema Change | Column structure changes |
Example - Workbook Modified:
{
"type": "workbook_modified",
"condition": {
"sheets": ["Portfolio", "Holdings"],
"change_types": ["value_change", "formula_change"]
}
}
System Alerts¶
Monitor system health and usage.
| Alert Type | Triggers When |
|---|---|
| API Error Rate | Error rate exceeds threshold |
| Rate Limit | Rate limit is approached |
| Quota Warning | Usage quota nearing limit |
Alert Conditions¶
Operators¶
| Operator | Description | Example |
|---|---|---|
equals | Exact match | status equals "failed" |
not_equals | Does not match | status not_equals "passed" |
greater_than | Exceeds value | cushion greater_than 5.0 |
less_than | Below value | cushion less_than 2.0 |
contains | Contains substring | name contains "CCC" |
in | In list of values | status in ["failed", "warning"] |
between | Within range | cushion between [1.0, 5.0] |
Compound Conditions¶
Combine multiple conditions with AND/OR logic:
{
"condition": {
"operator": "and",
"conditions": [
{
"field": "test_name",
"operator": "equals",
"value": "ccc_bucket"
},
{
"field": "cushion",
"operator": "less_than",
"value": 1.5
}
]
}
}
Time-Based Conditions¶
Add time constraints to alerts:
{
"condition": {
"test_name": "oc_ratio",
"operator": "less_than",
"threshold": 120.0
},
"time_constraints": {
"active_hours": {
"start": "08:00",
"end": "18:00",
"timezone": "America/New_York"
},
"active_days": ["monday", "tuesday", "wednesday", "thursday", "friday"]
}
}
Notification Channels¶
Email¶
Send alert notifications via email.
Configuration:
{
"channels": ["email"],
"recipients": {
"email": [
"user@example.com",
"team@example.com"
]
},
"email_options": {
"include_details": true,
"format": "html"
}
}
Email Contents: - Alert name and type - Condition that triggered - Current value and threshold - Link to view details in CalcBridge - Timestamp
Slack¶
Send alerts to Slack channels.
Configuration:
{
"channels": ["slack"],
"recipients": {
"slack": [
"#compliance-alerts",
"@john.doe"
]
},
"slack_options": {
"include_chart": true,
"mention_users": ["U123ABC"]
}
}
Slack Integration
You must first connect your Slack workspace in Settings > Integrations > Slack.
Webhooks¶
Send alerts to any HTTP endpoint.
Configuration:
{
"channels": ["webhook"],
"recipients": {
"webhook": {
"url": "https://your-service.com/alerts",
"method": "POST",
"headers": {
"X-API-Key": "your-api-key"
}
}
}
}
Webhook Payload:
{
"alert_id": "alt_abc123",
"alert_name": "CCC Bucket Warning",
"triggered_at": "2025-01-15T10:30:00Z",
"type": "compliance_threshold",
"severity": "warning",
"details": {
"test_name": "ccc_bucket",
"current_value": 6.2,
"threshold": 7.5,
"cushion": 1.3
},
"workbook": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Q1 Portfolio"
}
}
PagerDuty¶
Escalate critical alerts to PagerDuty.
Configuration:
{
"channels": ["pagerduty"],
"recipients": {
"pagerduty": {
"routing_key": "your-pagerduty-routing-key",
"severity": "critical"
}
}
}
Microsoft Teams¶
Send alerts to Microsoft Teams channels.
Configuration:
{
"channels": ["teams"],
"recipients": {
"teams": {
"webhook_url": "https://outlook.office.com/webhook/..."
}
}
}
Managing Alerts¶
Viewing Alerts¶
Navigate to Alerts to see:
| Tab | Description |
|---|---|
| Active | Currently enabled alerts |
| Triggered | Recent alert triggers |
| All | All alerts including disabled |
Alert Actions¶
| Action | Description |
|---|---|
| Enable/Disable | Toggle alert on/off |
| Edit | Modify alert configuration |
| Test | Send test notification |
| Duplicate | Copy alert with modifications |
| Delete | Remove alert permanently |
Alert History¶
View the complete history of alert triggers:
- Click on an alert
- Select the History tab
- See all trigger events with:
- Timestamp
- Trigger reason
- Notification status
- Value at trigger time
Alert Suppression¶
Temporarily suppress alerts to avoid noise:
Alert Severity¶
Alerts have severity levels that affect notification behavior:
| Severity | Description | Typical Use |
|---|---|---|
| Info | Informational, no action needed | Workbook uploaded |
| Warning | Attention recommended | Cushion approaching threshold |
| Error | Action required | Calculation error |
| Critical | Immediate action required | Compliance breach |
Severity Escalation¶
Configure escalation for unacknowledged alerts:
{
"escalation": {
"enabled": true,
"escalate_after_minutes": 30,
"escalate_to": {
"channels": ["pagerduty"],
"recipients": {
"pagerduty": {
"severity": "critical"
}
}
}
}
}
Best Practices¶
Alert Fatigue Prevention¶
- Set meaningful thresholds - Avoid alerts that trigger too frequently
- Use warning levels - Alert before breaches, not just on breach
- Group related alerts - Use single alert with multiple conditions
- Review and tune - Regularly review alert effectiveness
Critical Alert Setup¶
For compliance-critical alerts:
- Use multiple channels - Email + Slack + PagerDuty
- Configure escalation - Auto-escalate if not acknowledged
- Include stakeholders - Notify all relevant team members
- Document response - Create runbooks for each alert type
Testing Alerts¶
Always test new alerts:
- Create the alert
- Click Test to send test notification
- Verify notification received on all channels
- Adjust formatting and content as needed
Example Alert Configurations¶
Compliance Breach Alert (Critical)¶
{
"name": "Compliance Test Failed",
"type": "compliance_threshold",
"severity": "critical",
"condition": {
"status": "failed"
},
"channels": ["email", "slack", "pagerduty"],
"escalation": {
"enabled": true,
"escalate_after_minutes": 15
}
}
Cushion Warning Alert¶
{
"name": "Cushion Below 2%",
"type": "compliance_threshold",
"severity": "warning",
"condition": {
"cushion": {
"operator": "less_than",
"value": 2.0
}
},
"channels": ["email", "slack"]
}
Daily Summary Alert¶
{
"name": "Daily Compliance Summary",
"type": "scheduled_summary",
"severity": "info",
"schedule": {
"frequency": "daily",
"time": "08:00",
"timezone": "America/New_York"
},
"channels": ["email"]
}