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

# Notifications

> Configure alert channels — Email, Slack, Discord, Teams, SMS, ClickUp, and webhooks

Upmetr supports 7 notification channels for delivering alerts. Configure channels at **Settings > Integrations**, then create **notification rules** to define when each channel fires.

## Channels Overview

| Channel             | Use Case                                                 |
| ------------------- | -------------------------------------------------------- |
| **Email**           | SMTP-based alerts to team inboxes                        |
| **Slack**           | Rich-formatted messages in Slack channels                |
| **Discord**         | Embed-formatted messages in Discord channels             |
| **Microsoft Teams** | Adaptive Card messages in Teams channels                 |
| **ClickUp**         | Create tasks or send chat messages                       |
| **Twilio**          | SMS or WhatsApp messages                                 |
| **Webhook**         | HTTP requests to n8n, Zapier, PagerDuty, or any endpoint |

All credentials are **encrypted at rest** using Fernet symmetric encryption.

***

## Email (SMTP)

Send alerts via any SMTP provider (AWS SES, Gmail, SendGrid, etc.).

| Field          | Example                              |
| -------------- | ------------------------------------ |
| **SMTP Host**  | `email-smtp.us-east-1.amazonaws.com` |
| **SMTP Port**  | `587` (TLS) or `465` (SSL)           |
| **Username**   | Your SMTP username                   |
| **Password**   | Your SMTP password                   |
| **From Email** | `alerts@yourdomain.com`              |
| **To Emails**  | Comma-separated recipient list       |

<Note>
  For AWS SES: Create SMTP credentials in the SES console (not IAM credentials). The "From Email" must match a verified domain or address in SES.
</Note>

***

## Slack

Rich-formatted messages with severity-based color coding.

### Setup

1. Go to [api.slack.com/apps](https://api.slack.com/apps) and create an app
2. Enable **Incoming Webhooks**
3. Add a webhook to your target channel
4. Copy the webhook URL

### Configuration

| Field           | Required | Description                                      |
| --------------- | -------- | ------------------------------------------------ |
| **Webhook URL** | Yes      | `https://hooks.slack.com/services/T.../B.../xxx` |
| **Channel**     | No       | Override channel (e.g., `#alerts`)               |
| **Username**    | No       | Bot display name (default: Upmetr)               |

### Message Format

Slack messages include:

* **Color bar** — Blue (info), Orange (warning), Red (error), Dark red (critical)
* **Title** — Alert summary
* **Message** — Full details with metadata
* **Custom templates** — Use `{title}`, `{message}`, `{severity}` variables

***

## Discord

Rich embed messages with severity-based color coding, sent via Discord webhooks.

### Setup

1. Open your Discord server and navigate to the target channel
2. Click **Edit Channel** (gear icon) > **Integrations** > **Webhooks**
3. Click **New Webhook**, give it a name, and click **Copy Webhook URL**

### Configuration

| Field            | Required | Description                                        |
| ---------------- | -------- | -------------------------------------------------- |
| **Webhook URL**  | Yes      | `https://discord.com/api/webhooks/...`             |
| **Bot Username** | No       | Display name for the webhook bot (default: Upmetr) |
| **Avatar URL**   | No       | Custom avatar image URL for the webhook bot        |

### Message Format

Discord messages use embeds with:

* **Color bar** — Blue (info), Orange (warning), Red (error), Dark red (critical)
* **Title** — Alert summary
* **Description** — Full alert details
* **Fields** — Additional metadata displayed inline
* **Footer** — Severity level and Upmetr branding

***

## Microsoft Teams

Adaptive Card (v1.2) formatted messages sent via Teams incoming webhooks.

### Setup

1. In Microsoft Teams, navigate to the target channel
2. Click the **...** menu > **Connectors** (or **Manage channel** > **Connectors**)
3. Find **Incoming Webhook** and click **Configure**
4. Give it a name, optionally upload an icon, and click **Create**
5. Copy the webhook URL

<Note>
  Microsoft is transitioning from Office 365 Connectors to the Workflows app. If Incoming Webhook is not available in Connectors, create a **"Post to a channel when a webhook request is received"** workflow in Power Automate and use that URL instead.
</Note>

### Configuration

| Field           | Required | Description                                                    |
| --------------- | -------- | -------------------------------------------------------------- |
| **Webhook URL** | Yes      | `https://outlook.office.com/webhook/...` or Power Automate URL |

### Message Format

Teams messages use Adaptive Cards with:

* **Title** — Color-coded by severity (accent for info, warning, attention for error/critical)
* **Body** — Full alert message
* **Fact Set** — Additional key-value details
* **Footer** — Severity level and Upmetr branding

***

## ClickUp

Two modes: create tasks or send chat messages.

### Getting Credentials

1. Go to **ClickUp Settings > Apps**
2. Generate an **API Token** (starts with `pk_...`)
3. Find your **Workspace ID** in the URL: `https://app.clickup.com/WORKSPACE_ID/...`

### Task Mode

Creates a task in a ClickUp list when an alert fires.

| Field           | Description                             |
| --------------- | --------------------------------------- |
| **API Token**   | `pk_...`                                |
| **List ID**     | Target list for new tasks               |
| **Priority**    | 1=Urgent, 2=High, 3=Normal, 4=Low       |
| **Assignee ID** | Optional — auto-assign to a team member |

### Chat Mode

Sends messages to a ClickUp chat channel.

| Field            | Description         |
| ---------------- | ------------------- |
| **API Token**    | `pk_...`            |
| **Workspace ID** | Your workspace ID   |
| **Channel ID**   | Target chat channel |

***

## Twilio (SMS/WhatsApp)

### Setup

1. Go to [console.twilio.com](https://console.twilio.com)
2. Copy your **Account SID** and **Auth Token**
3. Get or provision a phone number

### Configuration

| Field            | Description                                    |
| ---------------- | ---------------------------------------------- |
| **Account SID**  | `ACxxxxxxxx...`                                |
| **Auth Token**   | Your auth token                                |
| **From Number**  | Twilio number in E.164 format (`+15551234567`) |
| **To Numbers**   | Recipient numbers in E.164 format              |
| **Use WhatsApp** | Toggle for WhatsApp instead of SMS             |

<Note>
  Phone numbers must be in E.164 format. Examples: US `+15551234567`, Brazil `+5511999999999`.
</Note>

***

## Webhook (Generic HTTP)

Send HTTP requests to any endpoint — perfect for integrating with n8n, Zapier, Make, PagerDuty, or custom systems.

### Configuration

| Field                | Description                             |
| -------------------- | --------------------------------------- |
| **URL**              | Target endpoint                         |
| **Method**           | `POST` (default), `GET`, `PUT`          |
| **Auth Type**        | `none`, `basic`, `bearer`, or `api_key` |
| **Auth Value**       | Token or credentials                    |
| **Headers**          | Custom headers (JSON)                   |
| **Payload Template** | Custom JSON body                        |
| **Timeout**          | Request timeout (default: 30s)          |

### Default Payload

If no custom template is set:

```json theme={null}
{
  "event": "upmetr_alert",
  "timestamp": "2026-03-31T15:30:00Z",
  "title": "Alert Title",
  "message": "Alert details",
  "severity": "critical",
  "details": { }
}
```

***

## Notification Rules

After configuring channels, create **rules** to define when and where alerts are sent.

### Creating a Rule

1. Go to **Settings > Integrations**
2. Click **Add Rule**
3. Configure:

| Field               | Description                                 |
| ------------------- | ------------------------------------------- |
| **Name**            | Rule name                                   |
| **Trigger Type**    | What event triggers the notification        |
| **Severity Filter** | Minimum severity to match                   |
| **Channels**        | Which channels to send to                   |
| **Cooldown**        | Minimum time between repeated notifications |

### Trigger Types

| Trigger          | Description                            |
| ---------------- | -------------------------------------- |
| Monitor Down     | Website/API is down                    |
| Monitor Up       | Website/API recovered                  |
| Monitor Degraded | Slow response detected                 |
| SSL Expiring     | Certificate expiring soon              |
| Budget Threshold | Budget limit approaching               |
| Budget Exceeded  | Budget limit exceeded                  |
| Agent Offline    | Infrastructure agent stopped reporting |

## Enabling and Disabling Channels

Each configured channel has an **active/inactive toggle**. Disabling a channel keeps its configuration saved but stops it from sending notifications. This is useful for temporarily muting a channel during maintenance without losing your setup.

## Testing Channels

Each channel has a **Test** button that sends a test notification. Always verify channels work before relying on them for production alerts.

## Notification Preferences

Each user can customize their personal notification preferences at **Account > Notifications**. These are per-user settings that control what notifications *you* receive, independent of the org-wide channel configuration.

### Push Notifications

Toggle **browser push notifications** to receive OS-level alerts even when the Upmetr tab is in the background. Requires granting browser notification permissions.

* **Browser push** — Real-time OS notifications via service worker (VAPID)
* **In-app notifications** — Notifications in the Upmetr notification center (bell icon)
* **Test button** — Send a test push notification to verify your browser setup

<Note>
  If push notifications are not appearing, check that notifications are enabled in both your **browser settings** (`chrome://settings/content/notifications`) and your **OS settings** (e.g., macOS System Settings > Notifications > Chrome).
</Note>

### Severity Filter

Choose which severity levels trigger notifications for you. By default, all severity levels are active. Click a severity level to toggle it:

* **Info** — Informational events
* **Warning** — Non-critical issues
* **Error** — Service errors
* **Critical** — Urgent issues requiring immediate attention

When no specific levels are selected, you receive all severities.

### Event Type Filter

Choose which event types trigger notifications. By default, all event types are active. Available types match the trigger types from notification rules (Monitor Down, Monitor Up, SSL Expiring, Agent Offline, etc.).

### Quiet Hours

<Note>
  Quiet hours are supported on the backend and will suppress notifications during the configured window (e.g., 22:00 to 07:00, including overnight spans). The UI for configuring quiet hours is coming soon — currently configurable via the API only.
</Note>

## Troubleshooting

| Issue                           | Solution                                                                                                    |
| ------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| **Not receiving notifications** | Check the channel configuration and test it. Verify notification rules match the trigger type and severity. |
| **Duplicate notifications**     | Increase the cooldown period on the notification rule.                                                      |
| **Slack 404 error**             | Webhook URL may be invalid or revoked. Regenerate in Slack.                                                 |
| **SMTP auth failed**            | Verify SMTP credentials (not IAM credentials for AWS SES).                                                  |
| **Webhook timeout**             | Increase the timeout or check the target endpoint is reachable.                                             |
