Alerts
Get told in Slack or by webhook when a number crosses a line or moves sharply — and when it recovers.
An alert watches one number and checks it every hour, day or week. When the number breaks your rule, the alert fires: you get a message, and another one when it's back to normal. Alerts in the sidebar shows every alert with its state, latest value and recent history.
Hand this to your agent. It looks at your events and proposes a few alerts worth having, then sets them up with you.
What an alert can watch
| Watch | The number | Good for |
|---|---|---|
| Event | A count, unique people, or sum or average of a property, for the last complete hour, day or week | Daily orders, signups per hour, revenue per day |
| Insight | A saved trend: its latest complete period. A saved funnel: its overall conversion % | Checkout conversion, weekly active users |
| SQL query | A number from the first row of a saved query | Anything else: refunds over sales, accounts at risk |
For SQL, sort so the row you care about comes first, for example ORDER BY day DESC.
When it fires
- drops below or goes above a number;
- changes by a percentage, going up, down or either way. Event and trend alerts compare against the period before, and funnel and SQL alerts compare against the previous check.
The form shows the current value as you build the alert, and whether it would fire right now. A new alert checks once straight away.
Where you're told
Every check is recorded on the alert's page, and fires and recoveries appear in the activity log. Add up to five destinations:
- Slack: paste an incoming webhook URL. Messages look like Daily orders: 12 (was 31, −61%) — drops below 20, with a link to the alert.
- Telegram: add the Datahop bot to a channel or group, then enter its chat id. See Destinations → Telegram for how to find it.
- Webhook: Datahop sends a JSON
POSTyou can point at an automation or an agent:
{
"type": "alert.fired",
"alert": { "id": 4, "name": "Daily orders", "url": "https://app.datahop.dev/p/1/alerts/4" },
"project": { "id": 1, "name": "Acme" },
"value": 12,
"previous": 31,
"period": "2026-11-01T00:00:00",
"condition": { "type": "below", "value": 20 },
"message": "Daily orders: 12 (was 31, −61%) — drops below 20",
"at": "2026-11-02T08:00:12.000Z"
}type is alert.fired, alert.resolved or alert.test. Send test posts a test message to every destination. Destinations must be public https addresses.
Pause, check, delete
Switch an alert off to pause it. Check now runs it immediately and notifies you if its state changes. Editing what it watches or when it fires starts it fresh.
Agents
Agents can do all of this over MCP: create_alert, list_alerts, get_alert, update_alert, check_alert and delete_alert. A good pattern is to point a webhook at your agent, so a firing alert starts an investigation: "Orders dropped 40% — which step of checkout changed?"