Alerts
Configure real-time alert rules to get notified when incidents occur.
Alerts notify your team when DebugBundle detects important events — new incidents, regressions, error spikes, and severity changes. Configure alert rules to route notifications to the right people through the right channels.
How Alerts Work
- An event triggers in DebugBundle (new incident, regression, spike).
- The system evaluates all active alert rules for the project.
- Rules matching the event's conditions and filters fire.
- Rule-level cooldowns suppress repeated notifications for the same notification key when configured.
- Notifications are delivered to the configured channel.
Channels
| Channel | Delivery | Configuration |
|---|---|---|
| Email message to a single address | to | |
| Slack | Message to a connected Slack channel | slack_destination_id or webhook_url |
| Discord | Message to a Discord channel via webhook | webhook_url |
| Webhook | HTTP POST to any URL | target_url |
{
"channel": "email",
"config": {
"to": "oncall@mycompany.com"
}
}Email alerts send to one recipient per rule. If multiple people should receive email notifications, create multiple alert rules.
Slack
Team workspaces can connect Slack from the project alerts modal. DebugBundle opens Slack OAuth, Slack shows a channel picker, and alert rules store the returned destination ID instead of exposing the webhook URL.
{
"channel": "slack",
"config": {
"slack_destination_id": "11111111-1111-4111-8111-111111111111"
}
}Direct webhook_url configuration is still accepted through API, CLI, and MCP for automation that intentionally manages its own Slack webhooks.
Discord
{
"channel": "discord",
"config": {
"webhook_url": "https://discord.com/api/webhooks/..."
}
}Webhook
{
"channel": "webhook",
"config": {
"target_url": "https://myapp.com/alerts"
}
}Condition Types
Each alert rule has a condition that determines when it fires.
| Condition | Trigger | Typical Use |
|---|---|---|
new_incident | A new incident is created. | "Tell me about new errors." |
incident_regressed | A resolved incident reopened. | "Alert if a fix didn't hold." |
error_spike | Unusual increase in error occurrences. | "Warn if something is going off." |
severity_threshold | Incident severity meets or exceeds a threshold on selected lifecycle events. | "Only page me for high-severity opens or regressions." |
regression_after_deploy | Regression detected after a deployment. | "Did the deploy break something?" |
Severity Threshold Lifecycle
severity_threshold rules can notify on new incidents, incident regressions, or both.
The default is both, so a threshold rule with severity_min: "medium" matches medium,
high, and critical incidents when they are first opened and when they later regress.
Use severity_lifecycle_scope in the API, --severity-lifecycle-scope in the CLI,
severityLifecycleScope in MCP, or the dashboard's "Notify on" field to choose:
| Scope | Meaning |
|---|---|
new_incident | Notify only when a matching incident is first created. |
incident_regressed | Notify only when a resolved matching incident regresses. |
both | Notify for matching new incidents and regressions. |
Non-threshold alert conditions do not use this field because their condition already defines the lifecycle event.
Severity Filter
Alert rules can include a severity_min threshold. When set, the alert only fires
for incidents at or above the specified severity:
low < medium < high < criticalFor example, severity_min: "high" fires for high and critical incidents only.
Severity is inferred from signal confidence. Backend exceptions, non-opaque frontend
exceptions, and immediate request-failure incident signals default to high. Opaque
browser-native window_error captures default to low, and opaque resource_error
captures default to medium, so a severity_min: "high" rule will not fire from
those opaque browser signals alone.
Service Scope
Optionally scope an alert to a specific service using service_id. When set, the alert
rule only evaluates events from that service.
Notification Cooldowns
Alert rules can include cooldown_seconds to reduce repeated notifications for the same alert signal. The default is 0, which preserves immediate delivery behavior. A positive value up to 604800 seconds (7 days) suppresses repeated notifications for the same computed notification key while leaving incident grouping unchanged. A one-day cooldown is not a daily reminder; it means the same matching notification key can send at most once per day.
For low-information browser-native window_error signals, DebugBundle may use a broader notification key than the incident fingerprint so repeated opaque browser noise can be quieted without merging separate incidents.
The web app shows this setting in whole days for human input. API, CLI, and MCP use seconds (cooldown_seconds, --cooldown, and cooldownSeconds respectively).
Alert Lifecycle
| State | Meaning |
|---|---|
is_enabled: true | Alert actively evaluates events and sends notifications. |
is_enabled: false | Alert is paused — no notifications sent. |
Disable alerts temporarily during maintenance windows or known-issue periods without deleting the rule configuration.
Example: Production Alert Stack
A typical production setup combines multiple alert rules:
Channel: Slack (#incidents)
Condition: new_incident
Severity: >= medium
Channel: Slack (#incidents-critical)
Condition: severity_threshold
Severity: >= critical
Notify on: new incidents and regressions
Channel: Email (oncall@company.com)
Condition: incident_regressed
Channel: Webhook (PagerDuty)
Condition: error_spike
Severity: >= highManaging Alerts
Alerts can be managed through all three interfaces:
| Interface | Reference |
|---|---|
| API | Alerts API |
| CLI | CLI Alert Management |
| MCP | MCP Tools |
Next Steps
- Alerts API — CRUD endpoints for alert rules
- CLI Alert Management — Manage alerts from the command line
- Webhook Events — Events that can trigger alerts