---
title: "Needs attention"
description: "Spikes, negative spikes, noisy keywords and failing channels, found for you once an hour and sent where you choose."
canonical: https://docs.mentio.dev/guides/attention
markdown: https://docs.mentio.dev/guides/attention.mdx
---

# Needs attention

Spikes, negative spikes, noisy keywords and failing channels, found for you once an hour and sent where you choose.

Some things should not wait for the daily digest: a keyword that suddenly gets ten times its usual mentions, a day that turns negative, a keyword whose matches are mostly noise (every match bills), a Slack channel that stopped receiving. Mentio looks for them once an hour and opens an **attention item** for each.

```bash
curl https://api.mentio.dev/v1/attention \
  -H "Authorization: Bearer $MENTIO_API_KEY"
```

```json
{
  "data": [
    {
      "id": "att_5b1f...",
      "kind": "mention.spike",
      "status": "open",
      "subject": { "type": "keyword", "id": "kw_60d9..." },
      "title": "Spike on bloom: 16 mentions in an hour, usually about 2",
      "openedAt": "2026-10-02T12:10:04.000Z",
      "resolvedAt": null,
      "dismissedAt": null,
      "data": {
        "attentionId": "att_5b1f...",
        "url": "https://app.mentio.dev/mentions?keywordId=kw_60d9...",
        "keyword": { "id": "kw_60d9...", "term": "bloom", "kind": "brand", "name": "bloom", "groupId": "grp_..." },
        "window": { "from": "2026-10-02T11:00:00.000Z", "to": "2026-10-02T12:00:00.000Z" },
        "matches": 16,
        "relevant": 11,
        "baseline": { "meanPerHour": 1.8, "stddevPerHour": 2.5, "hours": 168 }
      }
    }
  ],
  "nextCursor": null
}
```

`status` is `open` by default; pass `resolved`, `dismissed` or `all` to read the history, and `kind` (a comma list) to narrow it. Pages of 50, newest first, with `nextCursor`.

## The four kinds

| Kind                       | Opens when                                                                                                                                                                                                                                                                                                                                                                                | Resolves when                                            |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| `mention.spike`            | A keyword's matches in the last full hour are at least 10, at least 4 times its hourly average over the week before, and 4 standard deviations above it. Only fresh posts count (published at most 6 hours before they matched): look-backs, a platform's indexing lag and free review look-backs are history, not a burst. A keyword needs 3 days of listening before it has a baseline. | The next hour is back to normal.                         |
| `sentiment.negative_spike` | In the last 24 hours, at least 5 relevant mentions are negative, out of at least 10 relevant, a share of 20% or more and at least 2.5 times the keyword's own share of the week before.                                                                                                                                                                                                   | The 24 hours no longer qualify.                          |
| `keyword.noisy`            | The keyword's [health](/guides/keyword-health) reads `noisy`: 20 or more scored matches in 14 days (or since your last change) and under 30% of them relevant.                                                                                                                                                                                                                            | Its health is anything else, or it is paused or deleted. |
| `channel.failing`          | A channel's last 5 sends of the last 24 hours all failed. The email caps, an address that has not confirmed yet and a transport we have not configured are not the channel failing and never count.                                                                                                                                                                                       | The channel delivers again, or it is deleted.            |

The thresholds were set on two weeks of production data so that a real burst opens an item and an ordinary busy hour does not: over every keyword that matched anything in those 14 days, they would have opened 6 spikes and 5 negative spikes.

## Episodes, once each

An item is one **episode**: it opens when the condition starts and resolves on its own when the condition is gone. A subject has at most one open item per kind, so a spike lasting three hours is one item, and a subject whose item resolved in the last 24 hours opens no new one, so a count hovering at its line does not ping you every other hour.

Dismiss an item when you have seen it:

```bash
curl -X POST https://api.mentio.dev/v1/attention/att_5b1f.../dismiss \
  -H "Authorization: Bearer $MENTIO_API_KEY"
```

A dismissed item leaves the open list and does not come back while its condition lasts. Once the condition clears, a later episode opens a new item.

## Hear about it

Each item, when it opens, is also an [account event](/webhooks/account-events) of the same name, sent once:

* **Webhooks** subscribe with `events` on the channel, like the keyword and wallet events, and receive the item's `data` as the payload's `data`.
* **Slack, email and Telegram channels** can subscribe too, to these four events only: one short message with the keyword's name and a link. On the dashboard it is the **Attention alerts** switch on each channel under Alerts; through the API, `events` on `PATCH /v1/channels/{id}`.

```bash
curl -X PATCH https://api.mentio.dev/v1/channels/dest_... \
  -H "Authorization: Bearer $MENTIO_API_KEY" -H "Content-Type: application/json" \
  -d '{"events": ["mention.spike", "sentiment.negative_spike", "keyword.noisy", "channel.failing"]}'
```

Email keeps the instant alert rules: confirmed addresses only and at most 20 instant emails per channel an hour. Resolving an item sends nothing; `status=resolved` has it.

The dashboard shows open items in a **Needs attention** card above the mentions, with a Dismiss on each. In the MCP server the tools are `list_attention` and `dismiss_attention`; in the CLI, `attention:list` and `attention:dismiss`. Attention is never billed.
