Condition
Fires when a device’s telemetry matches one or more conditions, e.g. “temperature above 38°C.”
Automation rules watch your device data and trigger actions when conditions are met: sending you a notification, controlling another device, or both. Notification actions (email, Discord, Slack, Telegram, webhooks) are available on every plan. Multi-condition logic and device commands require the Business plan or higher.
Alerts and automation are the same system. If you’re looking for “alerts,” this is the page.
The builder can be expanded to fill the screen using the maximize icon in its header, the same control used on the Historical Plot chart.
A rule fires one of three ways. Pick one per rule.
Condition
Fires when a device’s telemetry matches one or more conditions, e.g. “temperature above 38°C.”
Schedule
Fires daily at a fixed time, or on a repeating interval, independent of any sensor reading.
Device status
Fires when a device goes offline or comes back online, detected server-side from missed check-ins.
| Setting | Description |
|---|---|
| Device | The device to monitor |
| Field | The telemetry field to check (e.g., “temperature”) |
| Operator | Greater/less than, equals, between, or changed. See Operators for the full list |
| Value | The threshold value (two values for between) |
| Sustained for | Optional: the comparison must hold continuously for this many seconds before it counts, filtering out a brief spike |
| Hysteresis | Optional, numeric operators only: once triggered, stays triggered until the reading crosses back past the threshold by this much, instead of flipping on every small wobble around the exact line |
| Time window | Optional (in Advanced settings): only evaluate this rule during a daily UTC time range, e.g. motion detection that should only matter overnight |
Operators:
| Operator | Meaning | Example |
|---|---|---|
| Greater than / equal | > / >= | temperature > 38 |
| Less than / equal | < / <= | battery < 20 |
| Equals / not equals | = / != | status = “error” |
| Between | Value falls within a range | humidity between 40 and 60 |
| Changed | Fires on any change from the last reading | door_state changed |
Example: “When temperature on Sensor A is greater than 38, sustained for 5 minutes”
Business and Scale plan users can add multiple conditions with AND/OR logic:
Free and Starter users are limited to a single condition per rule.
Fires independent of any telemetry value:
| Type | Description |
|---|---|
| Daily | Fires once at a fixed time (UTC) each day |
| Interval | Fires roughly every N minutes, paced by the Cooldown setting |
Fires when a device transitions online ↔ offline. A device is considered offline once it’s gone silent for 3x its own reporting interval, with a 5-minute floor. Useful as a “did this sensor stop reporting” watchdog independent of any specific reading.
Each rule can have multiple actions that execute when it triggers.
| Action | Description | Setup |
|---|---|---|
| Sends alert to your account email | Automatic | |
| Discord | Posts to a Discord channel | Webhook URL |
| Slack | Posts to a Slack channel | Webhook URL |
| Telegram | Sends message via Telegram bot | Bot token + chat ID |
| Custom Webhook | HTTP POST to any URL | Endpoint URL |
See Alert Integrations for detailed setup guides for each channel.
Sends an SMS to your verified phone number. Requires a Business plan or higher with SMS alerts enabled. Monthly limits: Business (100/mo), Scale (200/mo).
Sends a command to a device via MQTT, and controls another device (or the same one) rather than just notifying you. Configure:
relay)true), or leave blank on a toggle-type command to flip its current state instead of setting an absolute valueA rule can carry more than one command action, each with its own target device and delay, so one rule can control several devices at once.
The command is published to the device’s command topic (d/{device_id}/c).
Makes an HTTP POST request to a URL with the full trigger data as JSON body. Useful for integrating with external automation platforms like n8n, Node-RED, or Zapier. See Alert Integrations for the exact payload shape.
| Setting | Description |
|---|---|
| Severity | Info, Warning, or Critical, shown on the rule and in its history |
| Cooldown | Minimum time between fires. Default 5 minutes, range 10 seconds to 24 hours |
| Only notify when it changes (edge-triggered) | Fires once on the transition into the triggered state, not repeatedly while it stays true. Cooldown still applies on top. Turn off for repeated reminders while a condition persists |
| Time window | Condition-based rules only, restricts evaluation to a daily UTC time range |
Two protections apply automatically to every rule, no configuration needed:
Toggle the switch next to any rule to enable or disable it. Disabled rules are not evaluated.
View the history tab to see when rules fired, which conditions matched, and which actions executed. Each entry shows success or failure status with timestamps. More than 3 fires in an hour are grouped into a single entry to avoid flooding the history.
Mark triggered events as acknowledged to track which ones have been reviewed.
Use the edit and delete icons on each rule card.
| Trigger | Action | Use Case |
|---|---|---|
| Temperature > 35°C, sustained 5 min | Email + Discord | Critical temperature alert without false alarms on a brief spike |
| Soil moisture < 30% | Send valve_open command | Irrigation control |
| Humidity between 40 and 60 | Keep a greenhouse or server room in range | |
| Temperature > 80, hysteresis 2 | Thermostat-style alert that doesn’t flap right at the threshold | |
| Motion detected, time window 22:00 to 06:00 | SMS | Overnight-only motion alert |
| Relay on, delay 60s | Send relay command (blank value) | Auto-off a pump or light after a fixed run time |
| Every 30 minutes (schedule) | Send pump command (blank value) | Periodic toggle without a sensor trigger |
| Device offline | Email + SMS | Catch a sensor that’s stopped reporting, which the device itself can never signal |
| Vibration > threshold | Webhook to maintenance system | Predictive maintenance |
| Temperature > 40°C AND humidity < 20% | SMS + email + command | Multi-condition safety alert |
| Feature | Free/Starter | Business | Scale | Enterprise |
|---|---|---|---|---|
| Single condition rules | Yes | Yes | Yes | Yes |
| Schedule and device-status triggers | Yes | Yes | Yes | Yes |
| Between / sustained-for / hysteresis / time window | Yes | Yes | Yes | Yes |
| Multi-condition (AND/OR) | No | Yes | Yes | Yes |
| Email notifications | Yes | Yes | Yes | Yes |
| Discord/Slack/Telegram | Yes | Yes | Yes | Yes |
| Custom webhooks | Yes | Yes | Yes | Yes |
| SMS notifications | No | Yes (100/mo) | Yes (200/mo) | Yes |
| Device commands (including delayed and multi-device) | No | Yes | Yes | Yes |
| AI-suggested rules | No | No | Yes | Yes |
Managing rules across many devices by hand doesn’t scale well past a handful. If you’re scripting rule creation from your own backend or provisioning system, see Alerts in the Public API reference for creating, updating, and deleting rules programmatically.