> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wittify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Alerts

> Catch trouble before it compounds.

<Note>
  **Alerts** is the page that watches the numbers that matter and tells you when something is unusual.
</Note>

## Page anatomy

| Region              | What you see                                                                         |
| ------------------- | ------------------------------------------------------------------------------------ |
| Filter bar          | Date and hour controls, see [Overview](/en/Systems/Contact-Center-QA/Overview-Page). |
| Aggregate KPI strip | Four small cards with feed-level totals.                                             |
| Tab bar             | **Anomaly feed** and **Rules** pills.                                                |
| Feed or rules table | Body of the active tab.                                                              |
| Event detail drawer | Slides in when you click a row in the feed.                                          |

A small mock-data notice strip can also appear above the KPI strip when the project has just been connected and rules have not yet seen real data, with copy *Rules are evaluated live against your analytics data for the selected window, compared against the equal-length prior window. Rules you create persist in your browser until the server-side evaluator lands and takes over email, webhook, and in-app delivery.*

## Aggregate KPIs

Four cards reactive to the active filter window.

| KPI                   | Notes                                                                                               |
| --------------------- | --------------------------------------------------------------------------------------------------- |
| **Open anomalies**    | Anomalies that are not yet acknowledged or resolved.                                                |
| **High and critical** | Subset filtered to **High** and **Critical** severity.                                              |
| **Rules enabled**     | Count of rules currently turned on.                                                                 |
| **Last detected**     | Timestamp of the most recent anomaly. Reads **No anomalies in range** when there are none in scope. |

## Anomaly feed tab

The default tab. A time-ordered feed of anomalies for the active filter window.

| Element per row   | What it shows                                                                     |
| ----------------- | --------------------------------------------------------------------------------- |
| **Severity** chip | One of **Low**, **Medium**, **High**, **Critical**, in green, amber, orange, red. |
| **Triggered by**  | The rule that produced this anomaly.                                              |
| **Detected at**   | A timestamp formatted **YYYY-MM-DD HH:MM:SS**.                                    |
| **Observed**      | The metric's actual value in the alert's window.                                  |
| **Baseline**      | What the metric usually is over the equal-length prior window.                    |
| **Change**        | Delta between observed and baseline.                                              |
| **Status** chip   | **Open**, **Acknowledged**, or **Resolved**.                                      |
| Click             | Opens the event detail drawer (see below).                                        |

When the feed is empty, the empty state reads *No anomalies in this range. Everything looks steady against the rolling baseline. Widen the date filter to scan a longer window.*

## Rules tab

A project-scoped library of alert rules.

| Column        | Notes                                                                   |
| ------------- | ----------------------------------------------------------------------- |
| **Rule name** | Plain-language description.                                             |
| **Metric**    | The thing being watched (negative sentiment share, call volume, etc.).  |
| **Condition** | The operator and threshold.                                             |
| **Window**    | The evaluation window.                                                  |
| **Severity**  | The chip color.                                                         |
| **Delivery**  | Channels: **In-app**, **Email**, **Webhook**, or any combination.       |
| **Enabled**   | A switch to turn the rule on or off. Off rules stop firing immediately. |
| **Updated**   | Timestamp of the last edit.                                             |

A **Create rule** button on the card header opens the rule dialog. Each row also carries an inline **Edit** action to modify an existing rule and a **Delete** action with a destructive confirmation dialog.

### Default seed rules

Six rules ship by default, five enabled.

| Rule                                     | Condition      | Severity                  | Default state |
| ---------------------------------------- | -------------- | ------------------------- | ------------- |
| Negative sentiment share at or above 10% | `>= 0.10`      | High (in-app and email)   | Enabled       |
| Negative sentiment spike                 | rises by 15%   | Medium                    | Enabled       |
| Call volume shift                        | rises by 20%   | Medium                    | Enabled       |
| Low call volume                          | drops by 30%   | Medium (in-app and email) | Enabled       |
| Handle time above 90 seconds             | `> 90` seconds | Low                       | Enabled       |
| Silence ratio at or above 30%            | `>= 0.30`      | Medium                    | Disabled      |

## Creating a rule

Click **Create rule** in the Rules tab. A small dialog opens.

| Step          | What you do                                                                                                                                         |
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name**      | Type a name your team can spot in the feed. Optional **Description** for context.                                                                   |
| **Metric**    | Pick from **Negative sentiment share**, **Call volume**, **Avg handle time**, **Escalation rate**, **Silence ratio**, **Dead-air events per call**. |
| **Operator**  | One of **is above**, **is at or above**, **is below**, **is at or below**, **rises by**, **drops by**.                                              |
| **Threshold** | A number within the metric's range. The dialog rejects out-of-range values inline with a small red error.                                           |
| **Window**    | One of **Last 15 minutes**, **Last hour**, **Last 4 hours**, **Last 24 hours**.                                                                     |
| **Severity**  | **Low**, **Medium**, **High**, or **Critical**.                                                                                                     |
| **Delivery**  | At least one of **In-app**, **Email**, **Webhook**. Save is blocked when no channel is selected.                                                    |

The dialog saves the rule to the project. New anomalies that match this rule appear in the feed on the next evaluation pass.

## Event detail drawer

Click any row in the Anomaly feed to open a side drawer. The drawer also opens automatically if you arrive via a deep link (the URL carries the event id).

| Section                          | What it shows                                                                                                         |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| Header                           | Severity chip, rule name, detected timestamp.                                                                         |
| Detail block                     | Observed value, baseline, delta, the metric being watched.                                                            |
| **Open Sentiment Analysis** link | Routes to [Sentiment Analysis](/en/Systems/Contact-Center-QA/Sentiment-Analysis) with the alert's window pre-applied. |
| **Open Overview** link           | Routes to [Overview](/en/Systems/Contact-Center-QA/Overview-Page) with the alert's window pre-applied.                |
| Calls table                      | The actual calls captured in this alert's window.                                                                     |
| Search                           | Filter calls by filename, session id, or transcription.                                                               |
| **Acknowledge** button           | Flips the alert's status to **Acknowledged**.                                                                         |
| **Resolve** button               | Flips the status to **Resolved** when the issue is fixed.                                                             |
| **Download CSV**                 | Exports the calls in this window.                                                                                     |

The drawer fetches calls for the alert's own window, not the page's filter range. So a 1-day alert always shows the right calls even when your filter bar is set to **Last 30 days**.

## Topbar bell

The global notifications bell in the dashboard topbar swaps to the CCQA alert feed whenever you are on a CCQA route. The bell trigger gains a small red count badge whenever there are unread anomalies, and the dropdown body lists the most recent few. The dropdown header has a **Mark all read** action.

<Tip>
  There is one notification bell across the entire app. CCQA does not add a second bell, the existing bell extends to show alerts when you are on a CCQA route.
</Tip>

## Common questions

<AccordionGroup>
  <Accordion title="A rule is enabled but I do not see any anomalies in the feed.">
    The rule may genuinely never have triggered (good news). The other common cause is the metric is not yet computed in the active filter window, change to a wider date range and check again.
  </Accordion>

  <Accordion title="Can I delete a default seed rule?">
    Yes. Open the Rules tab, click the **Delete** action on the rule's row, confirm the destructive dialog. The rule disappears immediately. To bring it back, recreate it with **Create rule**.
  </Accordion>

  <Accordion title="The Email channel is selected but my team is not getting notifications.">
    Email and webhook delivery rely on a server-side dispatcher that is being rolled out. Today only the in-app bell reflects new events. The Email and Webhook channels are saved on the rule, the dispatcher will read them when it goes live.
  </Accordion>

  <Accordion title="Can I share a rule's evaluation window with the page's filter?">
    The rule's window is independent. A rule has its own window (15 minutes, 1 hour, 4 hours, 24 hours) and is evaluated continuously. The page's filter only changes which anomalies you see in the feed, not when rules fire.
  </Accordion>

  <Accordion title="The drawer's calls table looks different from the Sentiment Analysis sessions table.">
    Yes. The drawer scopes calls to the alert's window, not the page filter, and adds the alert metadata at the top. Use the **Open Sentiment Analysis** link to jump to the project-wide view with the alert's window pre-applied.
  </Accordion>

  <Accordion title="Can I import or export rules?">
    Not yet. Each project has its own rules library, and you create or delete them through the dialog. Bulk import is on the roadmap.
  </Accordion>

  <Accordion title="The bell shows zero but the feed has events.">
    The bell counts unread (Open) anomalies. Once you acknowledge or resolve an event, it stops counting toward the bell badge.
  </Accordion>

  <Accordion title="What happens to anomalies that are no longer relevant?">
    Mark them **Resolved** in the drawer. They stay in the feed history but no longer count as Open. There is no automatic auto-resolve today.
  </Accordion>
</AccordionGroup>

## Where to go next

<CardGroup cols={2}>
  <Card title="Goals" icon="target" href="/en/Systems/Contact-Center-QA/Goals">Set the targets these rules monitor.</Card>
  <Card title="Sentiment Analysis" icon="face-smile" href="/en/Systems/Contact-Center-QA/Sentiment-Analysis">Drill into the calls behind a sentiment alert.</Card>
  <Card title="Speaker Timeline" icon="timeline" href="/en/Systems/Contact-Center-QA/Speaker-Timeline">Silence tab feeds the dead-air events metric.</Card>
  <Card title="Volume Forecasting" icon="chart-mixed" href="/en/Systems/Contact-Center-QA/Volume-Forecasting">Pre-empt a low-call-volume alert.</Card>
</CardGroup>
