Expert Guide

Advanced configuration for AI optimizers and complex systems.

Alarm Notifications

Alarm Notifications turn alarm events into messages. Whenever an alarm is created on a site — whether from a device (e.g. a BMS or PLC reporting a hardware fault), an analytic, or a Smart Alarm — the notification engine evaluates your rules and dispatches e-mails or SMS to the recipients you have configured.

Each rule describes a When/Then flow: when alarms matching certain criteria are created, then send these messages using these templates.

Core idea

Alarm Notifications do not generate alarms — they react to alarms that already exist. A Smart Alarm decides whether something is wrong; an Alarm Notification decides who needs to know about it and how.

When to use Alarm Notifications

Use this feature whenever an alarm in the system should reach someone outside the platform without them having to log in. Typical examples:

ScenarioTrigger filterAction
Wake on-call technician for critical faultsPriority = Fault, State = ActiveSMS to on-call number
Notify facility manager of overnight warningsPriority = Warning / Anomaly, State = ActiveE-mail to facility manager
Send digest when alarms self-resolveState = ResolvedE-mail to a shared inbox
Escalate stuck-valve detections from Smart AlarmsPriority = FaultSMS + E-mail in parallel

Alarm Notifications work with any alarm in the platform — device alarms forwarded from BMS, PLC or other connected hardware, analytic alarms produced by the rule engine, and Smart Alarm aggregations. There is no separate wiring step; if an alarm reaches the site, the notification engine sees it.

Accessing Alarm Notifications

Open the site you manage, then navigate to Automation and select Alarm Notifications.

Alarm Notifications navigation placeholder

The list view shows every notification rule defined for the site, along with its current Enabled / Disabled state and a summary of the triggers and actions it contains.

Anatomy of a notification rule

A rule has three layers, all configured on the same page:

Notification rule layout

SummaryTriggers (When)Actions (Then)
  1. Summary — the rule name, enabled state, and the site it belongs to.
  2. Triggers — the When column. One or more conditions describing which alarm events activate the rule. Multiple triggers combine as OR.
  3. Actions — the Then column. One or more messages to dispatch. Multiple actions combine as AND — every action runs each time the rule fires.

OR triggers, AND actions

If you list two triggers, the rule fires when either matches.
If you list two actions, both are executed on every trigger.
This mirrors how operators usually want to think: "on any of these events, do all of these things".

Step 1 — Create the rule

From the Alarm Notifications list, open New and give the rule a descriptive name (e.g. "On-call SMS — faults"). The Entity is fixed to Alarm — this section of the platform is dedicated to alarm-driven notifications.

After saving, the rule opens in detail view where you can build out triggers and actions.

Name rules by audience and event type rather than by recipient name. "On-call SMS — faults" survives staff changes; "SMS to Anna" doesn't.

Step 2 — Define triggers (When)

Click Create Automation Trigger in the When column. Each trigger is the combination of a trigger type and a set of optional filters.

Trigger type

TypeFires when
CreatedA new alarm record is created on the site

"Created" covers the full lifecycle for notification purposes — when an alarm becomes Active, when it transitions to Resolved, and when an operator marks it OK (cleared) the platform writes new alarm records that this trigger sees. Use the filters below to narrow which of those events should notify.

Filters

Filters narrow which created alarms activate the trigger. Both filters accept multiple values; leaving a filter empty means any value matches.

With Priority

Match alarms by severity (same four levels shown on alarm badges across the platform):
Warning — informational, no immediate action expected.
Anomaly — unusual pattern detected, investigate when possible.
Error — malfunction affecting system operation.
Fault — serious failure requiring immediate attention.

And State

Match alarms by lifecycle stage:
Active — the underlying condition is currently present.
Resolved — the condition cleared on its own.
OK — an operator manually acknowledged or cleared the alarm.

For example, a trigger configured with Priority = Fault and State = Active will fire only when a Fault-priority alarm becomes active — it will not fire when that same alarm later resolves.

Multiple triggers (OR)

Add more than one trigger when you want a single rule to react to distinct event classes. Each card in the When column is a separate trigger; the rule fires whenever any of them matches.

A common pattern is one rule with two triggers:

  • Trigger APriority: Fault, State: Active → wake on-call
  • Trigger BPriority: Fault, State: Resolved → confirm the fault cleared

Both triggers share the same actions, so the on-call technician gets one SMS when the fault starts and another when it ends — without maintaining two separate rules.

Step 3 — Define actions (Then)

Click Create Automation Action in the Then column. Each action has two parts: the action type (what to send) and the message template (what to say).

Action types

ActionRequired fieldNotes
Send e-mailTo e-mail addressFree-text address, validated as e-mail format
Send SMSTo phone numberMust include country code (e.g. +372555555)

Webhook actions are not currently exposed in the Alarm Notifications UI.

SMS is billed per message by the upstream provider and has a hard length limit (typically 160 characters per segment). Keep alarm SMS templates short — long templates fragment into multiple billed segments, and very long templates may be rejected.

Message templates

Every action must reference a Message Template. Templates live at the organization level under Organization Settings → Message Templates, so they can be reused across sites and across rules.

The template body uses Mustache syntax — placeholders of the form {{variable}} are replaced with values from the alarm record when the message is rendered.

Available variables

The following variables are most relevant for alarm notifications:

VariableDescription
{{alarm.priority}}Numeric priority (0 = Warning, -1 = Anomaly, 1 = Error, 2 = Fault)
{{alarm.class}}Alarm class identifier
{{alarm.source}}Source system that produced the alarm
{{alarm.state}}Current state (active, resolved, ok)
{{alarm.activatedAt}}Timestamp the alarm became active
{{alarm.resolvedAt}}Timestamp the alarm resolved (if applicable)
{{deviceAlarmDefinition.name}}Human-readable name for device-driven alarms
{{deviceAlarmDefinition.description}}Long description of the device alarm definition
{{deviceAlarmDefinition.nodeId}}Hardware node identifier
{{analyticAlarmDefinition.name}}Name for analytic/Smart Alarm definitions
{{analyticAlarmDefinition.description}}Long description of the analytic alarm
{{property.name}}Site name
{{property.timezone}}Site timezone
{{org.name}}Organization name
{{user.firstname}}, {{user.lastname}}, {{user.email}}, {{user.phone}}Recipient details (when the message is bound to a user)

Either deviceAlarmDefinition.* or analyticAlarmDefinition.* will be populated for any given alarm — never both. A template that includes both placeholders side-by-side (e.g. {{deviceAlarmDefinition.name}}{{analyticAlarmDefinition.name}}) is the simplest way to display "whichever name applies".

Template examples

A compact SMS template for critical alarms:

[{{property.name}}] CRITICAL: {{deviceAlarmDefinition.name}}{{analyticAlarmDefinition.name}} - state {{alarm.state}} at {{alarm.activatedAt}}

A more detailed e-mail body:

An alarm was raised on {{property.name}}.

Alarm:       {{deviceAlarmDefinition.name}}{{analyticAlarmDefinition.name}}
Priority:    {{alarm.priority}}
State:       {{alarm.state}}
Activated:   {{alarm.activatedAt}}
Source:      {{alarm.source}}

Description:
{{deviceAlarmDefinition.description}}{{analyticAlarmDefinition.description}}

Create one short template for SMS and a longer, formatted one for e-mail, then reuse them across every notification rule on the site. Keeping templates centralized means a single edit propagates to all rules at once.

Multiple actions (AND)

Add more than one action when an event should produce more than one outgoing message — for example SMS to on-call and e-mail to the team inbox. Every action listed in the Then column runs on every trigger match, in the order they appear.

If different audiences need different content, give each action its own template rather than trying to make one template serve both channels.

How notifications are dispatched

Once the rule is enabled, the platform processes each matching alarm asynchronously:

Notification dispatch pipeline

Alarm createdMatch against rulesRender templatesQueue messagesProvider sends
  1. The alarm record is created on the site.
  2. The notification engine evaluates every enabled rule whose triggers match the alarm's priority and state.
  3. For each matching action, the referenced template is rendered against the alarm record's variables.
  4. The rendered message is queued as a messaging job and handed to the e-mail or SMS provider.
  5. Delivery happens through the configured upstream provider (SMTP for e-mail, SMS gateway for text).

If the recipient's e-mail or phone is later cleared from their user record, any pending notifications addressed to them are unscheduled automatically — the messaging engine will not attempt to deliver to an empty address.

Managing rules

Rules can be paused without deleting them — useful during planned maintenance or when investigating noisy alarms.

ActionEffect
DisableRule remains in the list but stops evaluating alarms. No notifications are sent until re-enabled.
EnableResumes evaluation of new alarms. Alarms that fired while disabled are not retroactively notified.
RemovePermanently deletes the rule, its triggers, and its actions. Already-queued messages still deliver.

Disabling a rule does not affect alarms already raised — only the rule's ability to react to new alarms. If a noisy alarm is generating duplicate messages, address the source (the alarm definition, the Smart Alarm threshold) rather than relying on disable/enable cycles.

Best practices

  • One rule per audience, not per alarm — A single rule with Priority: Fault covers every current and future Fault-priority alarm on the site. Avoid creating one rule per device.
  • Combine activated + resolved triggers — On-call operators usually want to know when a fault ends, not just when it starts. Two triggers in one rule keeps the lifecycle complete.
  • Keep SMS templates under 160 characters — Longer messages fragment into multiple billed segments. Move long descriptions into the e-mail template instead.
  • Centralize templates at the organization level — A single SMS template + a single e-mail template is enough for most operators. Reuse them across every rule.
  • Filter by priority, not by alarm class — Class names change as devices are reconfigured; priorities are stable. Use priority filters to keep rules robust against renaming.
  • Pair with Smart Alarms for end-to-end coverage — A Smart Alarm detects a stuck valve; an Alarm Notification rule with Priority: Fault, State: Active puts that detection in the on-call technician's pocket within seconds.