> For the complete documentation index, see [llms.txt](https://docs.kiloiot.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kiloiot.io/kilo-iot-server/alarm/first-operational-alert.md).

# Your First Alert

Walkthrough — create your first operational alarm, link it to a rule, see it fire in the Inbox, resolve the event.

This walkthrough takes you from zero to a working operational alarm. By the end, you will have created an alarm definition, connected it to a rule in the Rules Engine, seen it fire in the Inbox, and resolved the event. This is the happy path — one alarm, one rule, one device.

For full reference on all alarm definition fields, see [Alarm Definitions](/kilo-iot-server/alarm/notification-rules.md).

## Prerequisites

* At least one device registered and reporting sensor data.
* A verified email contact in the [Delivery Channels](/kilo-iot-server/alarm/notification-channels.md) settings.

## Step 1 — Create the alarm definition

1. Open **Alarm** from the sidebar.
2. Switch to the **Alarm definitions** tab.
3. Click **Add alarm rule**.
4. Fill in the form:
   * **Alarm name:** "Cold Storage Alert" (or whatever describes the condition you are monitoring).
   * **Severity:** Choose **High** for this test. You can change it later.
   * **Escalation chain:**
     * **Step 1 (Immediate):** Select the on-call technician under **Notify**. Select **Email** under **Via**. This person is notified the moment the alarm fires.
     * Click **Add step** to add a second tier.
     * **Step 2 (After configurable delay):** Select the shift supervisor under **Notify**. Select **Email** and **SMS** under **Via**. If the technician does not resolve the alarm within the configured window, the supervisor is automatically notified — no manual intervention needed.
   * **Theme:** "Temperature exceedance in cold storage."
   * **Message body:** "Sensor reading has exceeded the operational threshold. Check the facility."
5. Leave Schedule, Custom Notification interval, and Suppress duplicates at their defaults for now.
6. Click **Add new alarm rule**.

Your alarm definition is created and appears in the **Alarm definitions** list.

## Step 2 — Connect it to a rule in the Rules Engine

The alarm definition you just created does not monitor sensors on its own — it defines the response. You need a rule in the [Rules Engine](/kilo-iot-server/rules-engine.md) to evaluate sensor data and fire the alarm when conditions are met.

1. Open **Rules engine** from the sidebar.
2. Create a new rule (or edit an existing one).
3. In the visual editor, add a **Set Alarm** node to the automation canvas.
4. In the Set Alarm node's properties, select your "Cold Storage Alert" definition from the **Choose Alarm** dropdown.
5. Fill in the **Motivation Message** — this is a CEL expression that produces the notification text. For a simple test: `"Temperature reading exceeded threshold"`.
6. Connect the Set Alarm node into your automation flow (after a gateway condition that checks the sensor threshold).
7. **Save**, then **Build**, then **Deploy** the automation.

The rule is now running and will fire the alarm when the sensor data matches your conditions.

## Step 3 — See the alarm in the Inbox

Once the rule fires (either from real sensor data or a test condition), the alarm event appears in the **Inbox** tab on the Alarm page:

* The event shows with **Active** status (warning triangle).
* Severity is color-coded as **High**.
* The message matches what you configured in the definition.

<figure><img src="https://2057878315-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtNQh1wBSHSaknslMdOXm%2Fuploads%2Fgit-blob-67a8a1df5d0c1feedf30deee774d4d9db5247a7d%2Falarm-inbox.jpg?alt=media" alt="A triggered alarm in the Inbox with its message, severity, first and last trigger times and the Mark as resolved action"><figcaption></figcaption></figure>

## Step 4 — Resolve the alarm

Click **Mark as resolved** on the alarm event. The status changes to **Resolved** (checkmark). If the alarm was still in Step 1 when you resolved it, Step 2 never fires — the supervisor is not notified because the technician handled it. If the alarm had already escalated to Step 2, resolving it stops any further notifications from that event.

The resolved event stays in the Inbox as a historical record.

## What's next

| Goal                                       | Where to go                                                                       |
| ------------------------------------------ | --------------------------------------------------------------------------------- |
| Add escalation steps for unresolved alarms | [Escalation and Response](/kilo-iot-server/alarm/escalation-and-response.md)      |
| Configure severity-level repeat timing     | [Notification Severity](/kilo-iot-server/alarm/notification-delivery-settings.md) |
| Full reference for alarm definition fields | [Alarm Definitions](/kilo-iot-server/alarm/notification-rules.md)                 |
| Set up SMS or push delivery                | [Delivery Channels](/kilo-iot-server/alarm/notification-channels.md)              |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kiloiot.io/kilo-iot-server/alarm/first-operational-alert.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
