The Alert Module helps you monitor key metrics in your reports and get notified when specific conditions are met. You can create custom alerts based on query results, define how often checks should run, and choose where notifications are sent.
On the Alerts page, you will find a table with the following columns:
State: Current status:
Actions:
To create a new alert, click Create Alert, enter a name, and press OK.
When you View or Create an alert, you will see a configuration form split into sections.


Define the logic that triggers the alert based on individual data points.
Configure the Rule:
<, <=, =, !=, >, >=.
Cooldown Interval (Rearm Seconds): Set a number of seconds to wait after an alert fires before allowing another notification.
0, notifications are always sent immediately when the alert condition is met.A report query runs every 30 minutes, and you set the cooldown interval to 1,800 seconds (30 minutes). The alert condition becomes true at 10:15 AM and remains true until 11:45 AM.
| Time | Alert Status | Notification Reason |
|---|---|---|
| 10:00 AM | OK | No notification (query ran, status OK) |
| 10:15 AM | Triggered | Condition met (first trigger) |
| 10:30 AM | Triggered | No notification (cooldown active) |
| 10:45 AM | Triggered | Condition still true, cooldown expired → notification sent |
| 11:00 AM | Triggered | No notification (new cooldown) |
| 11:15 AM | Triggered | No notification (cooldown active) |
| 11:30 AM | Triggered | Condition still true, cooldown expired → notification sent |
| 11:45 AM | OK | Status returned to OK → notification sent (status change) |

To delete an alert:
In addition to rule-based alerts, you can send notifications programmatically from Notebook cells using the built-in send_alert() function. This is useful for complex conditions that go beyond simple threshold rules — for example, statistical anomalies, multi-column checks, or custom business logic written in Python.
send_alert(channel, title, text, level)
| Parameter | Type | Required | Description |
|---|---|---|---|
channel |
string | Yes | The channel alias to send the alert to (e.g., 'slack', 'discord', 'telegram', 'email') |
title |
string | No | The alert title |
text |
string | Yes | The alert message content |
level |
string | No | Severity level: 'info', 'success', 'warning', or 'error' (default: 'info') |
Simple alert:
send_alert('slack', 'Daily Report', 'All metrics are within normal range.', 'success')
Data-driven alert:
df = datasets["sales_query"]
total = df["revenue"].sum()
if total < 10000:
send_alert('discord', 'Revenue Alert', f'Daily revenue is ${total:,.2f}, below the ,000 threshold.', 'warning')
else:
send_alert('slack', 'Revenue Update', f'Daily revenue: ${total:,.2f}', 'success')
Multiple channels:
message = f'Found {len(anomalies)} data anomalies in the latest batch.'
send_alert('slack', 'Data Quality', message, 'error')
send_alert('email', 'Data Quality', message, 'error')
Note: Channels must be configured before use. See Channels for setup instructions. When combined with Query Scheduling, you can automate notebook execution and send alerts on a recurring basis.
For further assistance, contact your administrator or visit the help center.