# Metric alerts

## What is a metric alert?

A metric alert watches a widget and tells you when a scheduled refresh brings a number worth seeing.
The number crossed a line you set, moved by more than you allowed, or made a move that is unusual for
its own history. Alerts reach you under the **Notifications** bell and by email, as they happen or in one daily digest.

Your alerts are your own, and nobody else sees or sets them. Checking them is plain arithmetic on the published rows, with no model call and no cost.

## How do you set an alert?

Open a widget's `⋯` menu and choose **Manage alerts**. The item appears when the widget can be
watched. A widget with your own alerts on it shows a small filled bell, which opens them too.

**Settings → Subscriptions** on the dashboard lists every widget in three groups.

| Group | Holds |
|---|---|
| **Active** | The widgets you watch |
| **Available** | The widgets you could watch |
| **Unavailable** | Widgets that cannot be watched, with the reason: **Not a time series**, **No metric**, **Too many series** or **No data yet** |

Open a widget there to see its **Recent alerts**, **Triggers** and **Delivery**. Every change saves
as you make it. A widget left with no trigger switched on stops being watched.

Anyone who can view the dashboard can set alerts on it. Guests cannot, and the Subscriptions pane is
hidden from them.

## What can an alert watch?

Each widget takes any of these triggers, at most one of each.

| Trigger | Fires when |
|---|---|
| **Above threshold**, **Below threshold** | A value crosses the line you set. Set either side or both |
| **Absolute change (#)** | A value differs from the one before by at least your amount, up or down |
| **Relative change (%)** | The same, as a percentage of the value before |
| **Anomaly detection** | A move falls in the tail of the series' own history, at **High**, **Medium** or **Low** sensitivity |

The number boxes start filled from the widget's data. The thresholds start at the latest value and
**Absolute change** at the series' typical move from one point to the next. **Relative change**
starts at 10%. A checked trigger with an empty box is not saved until you enter a number.

Every trigger watches every series on the widget. On a chart with several lines, each line is judged
on its own, and the alert names the lines that moved.

A bar chart over categories rather than dates, such as revenue by country, takes thresholds only.
Each bar is judged on its own, and the alert names the bar: "Germany reached $2.1M". Such a chart
can be watched only with a single series of bars.


## How do you watch every widget at once?

The **All widgets** row watches every eligible widget on the dashboard at once. It takes only
**Relative change (%)** and **Anomaly detection**, and it delivers in the daily digest unless you
change it. It skips a bar chart over categories, which takes thresholds only.

A trigger you set on one widget replaces the same trigger from **All widgets** on that widget, along
with its delivery. Other triggers from **All widgets** still apply there.

## When are alerts checked?

Alerts are checked after each scheduled refresh and at no other time. A refresh you start by hand, a
filter you apply and anything you explore never fire one.

A dashboard with no schedule never fires an alert. Its Subscriptions pane says so, with a link to set one.
See [Refresh](/docs/dashboards/refresh).

A point is judged only once its period has closed. An hourly refresh of a daily series sees the same
day 24 times, and a month-to-date total is smallest on the 1st. Waiting for the period to close
costs one period of delay. A KPI with no date column, and each bar of a chart over categories, is
judged on each scheduled run's value instead.

A threshold fires when the value crosses the line and re-arms once the value comes back. The first
check after you set or move a line only records where the value stands. A line the value is already
past fires on the next crossing.

Anomaly detection works on a time series, and on a KPI with a date column. It needs more than 20
points in a series to compare against, and the row says why when it is not offered. To find out why a value
moved, open the widget from the alert and ask the built-in assistant.

## How does an alert reach you?

Each widget's alerts share one **Delivery** setting.

| Delivery | How it arrives |
|---|---|
| **Immediate** | Under the bell when the refresh lands. The email follows a few minutes later, so one refresh's alerts arrive together. At most one immediate email every 15 minutes |
| **Daily digest** | One email a day at your digest hour, with everything since the last one |

New widget alerts start on **Immediate**, and the **All widgets** row starts on **Daily digest**.

Set the digest hour in **Settings → Notifications**, on the **Metrics digest** row. It is set per
workspace, in your browser's time zone, and starts at 8:00 AM. With **Daily digest** chosen, the
**Delivery** row shows that hour, and **Change** opens the row.

An email groups alerts by dashboard. It shows up to five dashboards and the three biggest movers on
each, with a count of the rest that links to the Subscriptions pane. When more dashboards moved, its
**more dashboards** link opens the [notifications page](/docs/account/notifications#where-do-you-see-past-notifications)
filtered to metric alerts. The bell groups the same way, one row per dashboard, such as "Q3 Revenue ·
7 metrics moved". One refresh sends you at most five alerts per dashboard, largest moves first.

The **Metrics** row in [Notifications](/docs/account/notifications) has an in-app switch and an email
switch. Turning off email stops alert emails. Turning off in-app stops both.

## How do you pause or stop alerts?

The **Unsubscribe** link at the foot of an alert email pauses alerts on every dashboard in that email,
with an Undo. Your triggers are kept. A paused dashboard's Subscriptions pane shows **Resume**.

To stop watching a widget for good, switch its triggers off. If you lose access to a dashboard or
become a guest on it, your alerts there are removed at its next scheduled refresh.

## What limits apply to alerts?

| Limit | Value |
|---|---|
| Alerts you hold in one workspace, counting each **All widgets** row as one | 200 |
| People watching one dashboard | 200 |
| Series on one widget | 100, each bar of a chart over categories counting as one. A widget with more is Unavailable |
| Alerts per dashboard from one scheduled refresh | 5 per person, largest first |

Your agent can read and set the same alerts. See [Metric alerts](/docs/mcp-tools/alerts).
