Platform Documentation

Alerts

Alerts watch your device data and tell you when something needs attention. You define a condition, NEQTO.ai checks every reading against it, and when the condition is met it fires an alert and notifies the people you chose. Every alert that fires is recorded in Alert History so you can track and triage it.

The mental model: an alert is a rule (which devices, which attribute, what condition) plus a notification list (who to tell). Data arrives, the rule is evaluated, and matching events become notifications and history entries.
Lifecycle diagram: a device reading arrives, NEQTO.ai evaluates it against the alert's conditions, and when the conditions are met the alert fires. Firing sends notifications on the channels you enabled, writes an event to Alert History with a severity and status, and optionally locks the alert until an unlock condition or timer is satisfied.
How an alert flows: reading in, condition check, fire, notify, then a tracked event in Alert History.

The UI says Attribute and Endpoint; the API and support docs call these data type and data source. They are the same things, and this page uses the UI words.

Quick Start

If you already know NEQTO.ai, here is the short version.

  • 1
    Open an application, go to Alerts, and click the + button to open the Set Alert dialog.
  • 2
    Give the alert a title and a severity, then add a trigger condition: a device, one of its attributes, an operator, and a value. For example temperature Greater than 30.
  • 3
    Leave Unlock by Timer on so one ongoing problem does not notify repeatedly. At the bottom, pick who to tell. Email and SMS both arrive switched on, so turn SMS off if this alert should only send mail.
  • 4
    Click Create. The alert is checked against every reading from then on, and each time it fires the event appears in Alert History.

Alert Types

NEQTO.ai evaluates three kinds of alert. You build threshold alerts yourself in the Set Alert dialog. Connectivity and anomaly alerts are turned on per device — and, for anomalies, per sensor — from that device’s Connectivity Monitoring and Anomaly Detection Settings tabs. All three appear together in Alert History.

Type What it watches How it triggers
Threshold The current value of one or more device attributes. Fires when your conditions are met, for example temperature Greater than 30. This is the default type in the Set Alert dialog.
Connectivity Whether a device is still sending data. Fires when a device goes silent past its timeout, and again when it comes back online.
Anomaly One sensor reading versus its own physical limits and learned statistical range. Fires when a value leaves the normal range. Configured per sensor on the device.

An older kind of alert compared an attribute against its own recent history. The platform still understands those, but the Set Alert dialog now creates threshold alerts, and an old history alert opens as one.

Creating a Threshold Alert

Open Alerts and click the + button (its tooltip reads Create Alert) to open the Set Alert dialog. The dialog has six parts, in this order: title and severity, trigger conditions, unlock conditions (optional), message details (optional), payload push (optional), and notifications.

Alerts list page titled Alerts, with a red box around the plus button beside the title that opens the Set Alert dialog. Below it, three summary cards count the Critical, Warning and Info alerts, then Status and Severity filters, then one card per alert. The alert card shows a severity badge, when it last fired, its name and its description sentence, and on the right a second red box around its controls: a lock indicator, a Status switch labelled Active, an Edit button, a delete button and an expand arrow.
The Alerts list. Each card is one rule; the switch enables or disables it, and the actions menu has Edit and Delete.

Each row shows a Status switch with an Active or Inactive badge, a Severity badge, a lock icon while the alert is locked (paused), the devices it covers and the attributes it watches. The row’s actions menu (the ⋮ button) offers Edit and Delete, each shown only with the matching permission. There is no “lock” action: locking comes from the alert’s unlock settings, below.

1. Title and severity

  • 1
    Enter an Alert Title (required, up to 100 characters; letters, numbers, spaces, and the basic punctuation - _ ( ) , . : are allowed).
  • 2
    Pick a Severity: Info (blue), Warning (yellow, the default), or Critical (red). Severity is a label for triage and filtering; it does not change when the alert fires.
Top of the Set Alert dialog, with a red box around the two fields it covers: an empty Alert Title text field placeholdered Write an Alert Title, and below it a Severity dropdown showing its default, Warning, with a yellow dot. The Trigger conditions section begins underneath.
Title and severity. Severity is for organizing and filtering, not for triggering.

2. Trigger conditions

A condition is one row: a device, one of its attributes, an operator, and a value. Add up to 10 conditions.

Set Alert dialog Trigger conditions section with one condition. Above the condition sits a switch labelled Alert when this condition is not met. The condition row has a device selector, an attribute selector, the word is, and an operator dropdown, followed by a Compare to control offering Use a value or Use a tag with the value input and its unit. An Add condition button sits below. Adding a second condition replaces the switch with a Condition logic choice of AND (All), OR (Any), or NOR (None).
Trigger conditions. Build one or more device-and-attribute rows. With a single condition you get the switch shown here; with two or more you choose AND, OR, or NOR instead.

The available operators depend on the attribute’s data type:

For numbers For text
Greater than (greater) Contains (contains)
Greater than or equal to (greater_equal) Exact match (exact_match)
Less than (less) Does not match (no_match)
Less than or equal to (less_equal)
Equal to (equal)
Not equal to (not_equal)

What the dialog offers for combining conditions depends on how many you have added. With two or more, a Condition logic control appears: AND (All) fires only when every condition is true at once, OR (Any) when at least one is, and NOR (None) only when none are. With exactly one condition there is nothing to combine, so you get a switch instead, Alert when this condition is not met. Turn it on and the alert fires when the condition is false. Either way, conditions are re-checked as each device’s readings arrive.

Each condition’s value field has a Compare to switch. Use a value, the default, compares against a fixed number — or a keyword, on a text attribute. Use a tag compares against one of your tags instead: click the braces icon, search, and pick one. Point several alerts at the same tag and a shared limit changes in one place instead of in every alert.

The picker only offers tags whose value type fits the attribute, and greys out the rest. Once you pick one, a preview shows what it resolves to right now, for example Resolves to 30. If the tag is later deleted, or stops fitting, the field flags it and blocks Save.

A condition can compare the result of a calculation instead of the number the device sent — a short formula built from that device’s own attributes, re-run on every reading. A sensor sending Fahrenheit can be watched in Celsius. Once a row names both a device and an attribute, a Σ marker and an Add calculation button appear beside it, and only numeric attributes accept one.

Writing the formula, what it changes about the condition, and what clears it are the same wherever this appears, so they are documented once under Calculated Conditions below.

3. Unlock conditions (optional)

Unlock conditions control how an alert re-arms after it fires. With either method on, the alert fires once, then locks and goes quiet until it is allowed to re-arm. So a timer’s length is the minimum gap between notifications about the same problem. Unlock by Timer is on by default at 60 minutes. Turn both methods off and the alert stays locked until you re-enable it by hand.

Set Alert dialog Unlock Conditions section with two toggles: Unlock by Condition, which reveals its own device/attribute/operator/value condition rows, and Unlock by Timer, which reveals an Unlock after (minutes) number input. Helper text explains that whichever method is met first will unlock the alert.
Unlock conditions. Turn on either method, or both; the first one satisfied re-arms the alert.
Method What it does
Unlock by Condition Re-arms when a condition you define becomes true. These rows work exactly like trigger conditions (same device, attribute, operator, and value, up to 10), including the option to compare against a tag. Use the opposite of your trigger, for example trigger when temperature is above 30, unlock when it drops below 25.
Unlock by Timer Re-arms automatically after a set number of minutes (minimum 1, the field defaults to 60). The countdown starts when the alert locks.

4. Message details (optional)

Message details adds context to the message sent to the people you notify, on whichever channels you switch on below. Everything here is off by default.

Set Alert dialog Message details section. Three toggles — Include application link, Include device tags (which reveals a tag picker when it is on), and Include device endpoint — and a Custom message text field limited to 160 characters.
Message details. Add context to the outgoing notification, or a short custom note.
  • Include application link — adds a link back to the application the alert belongs to.
  • Include device tags — turning this on reveals a picker so you choose which of the device’s tags to include in the message.
  • Include device endpoint — adds a link to the device’s endpoint.
  • Custom message — a free-text note (up to 160 characters) added to the alert message.

5. Payload push (optional)

Email and SMS tell a person that something happened. Payload push tells a machine. When the alert fires it also sends a message of your own design to an integration or a device endpoint, separately from the notifications below it.

The section starts empty, reading “No payload push targets configured.” Click Add target, pick a destination, and optionally write a payload template. An alert may have up to five targets, and Add target greys out at five.

That is all of it inside this dialog. Destinations, templates, tokens, what blocks a save, and what each delivery outcome means are the same wherever payload push appears, so they are documented once under Payload Push below.

6. Notifications

The bottom of the dialog is where you say who to tell, and how. Email notifications and SMS notifications are independent and both are on by default, and they use the same recipient list. Turn off either channel if you do not want to use it.

The two notification switches in the Set Alert dialog, each a row with a label and a one-line description. Email notifications is switched on and reads Email selected recipients when the alert is triggered. Below it SMS notifications is switched off and reads Text selected recipients who have a phone number and have opted in to SMS alerts.
Two independent switches, one per channel. Here email is on and SMS is off, so this alert sends mail and no texts.

A Notification Recipients block appears as soon as either switch is on. Turn both off and the individual users you picked are cleared, though external contacts and groups are left alone.

For an account user, turning SMS notifications on is only half of it. They also need a phone number on their profile and the SMS opt-in switched on there, and a user with neither is skipped quietly, by design. External contacts work the other way round: you set their email and SMS preferences yourself when you add them.

Payload push does not depend on either switch. An alert with both switches off still sends its payload. A failed push cannot cost anyone their email or text either: each destination records its own outcome, and none of them stops a notification going out.

Set Alert dialog Notifications section, with a red box around the whole of it. At the top the two switches, Email notifications and SMS notifications. Beneath them a Notification Recipients block appears (account or application users plus external contacts shown as chips) added via an Add Recipient menu offering Add User and Add External, then a Notify account owners and administrators toggle that is on by default, and a Notification Groups picker with an Add Notification Group button.
The whole Notifications section. One recipient list serves both channels; individual users, ad-hoc external contacts, and reusable notification groups all go into it.

Three kinds of recipient go into that one list:

  • Users from your account or application, added with Add Recipient → Add User. Each is reached on the channels you switched on, as far as their own profile allows.
  • External contacts, added with Add Recipient → Add External. Give an email address and/or a phone number, and toggle Email and SMS per contact. Phone numbers use E.164 format, for example +1234567890.
  • Notification Groups, reusable recipient lists (see below).
Only adding individual users narrows delivery. With a channel on and no individual users picked, the alert goes to every user with access to the account, and the dialog says so in place of the list: “No recipients selected. All users with access to the account will receive notifications.” External contacts and notification groups are always added on top rather than narrowing it, so picking only a group still notifies every account user.

Notify account owners & administrators sits below the recipients and is on by default, adding the account’s owners and administrators to whoever you picked. It only matters once at least one individual user is picked: with none, everyone is notified regardless.

Every alert that fires is written to Alert History whichever channels are on, so there is nothing to switch on for in-app activity.

Click Create to save. Editing an existing alert opens the same dialog (titled View Alert) with a Save button.

Calculated Conditions

A calculation lets an alert watch something the device never reports. A device sending a supply and a return temperature can be watched on the gap between them, and one sending Fahrenheit can be watched in Celsius. Nothing changes on the device; the alert does the arithmetic.

Trigger conditions section of the Set Alert dialog with one condition. The condition row names a device, the attribute temperature_fahrenheit, and the operator Greater than. Beneath it a sigma symbol is followed by the saved formula, written as a minus 32 over 1.8, then an Edit calculation button and a Remove calculation button. Below that the Compare to control is labelled calculated value (no unit), with the value 15 typed in and no unit beside the box.
A condition comparing a calculation. The saved formula is shown on the row, and Compare to says the number you type is matched against a calculated, unitless result.

Adding a calculation

  • 1
    Add calculation opens the editor with an empty formula and one variable already bound: a, the attribute the condition watches. It cannot be removed, because a formula ignoring it would be comparing something else. Writing the formula is still yours to do — insert a from its card, or type it — and Save stays greyed out until you do.
  • 2
    Edit calculation reopens the saved formula, though you rarely need it just to read one: the formula is written out on the row.
  • 3
    Remove calculation deletes the formula and returns the condition to the raw reading. Closing the editor with Cancel is not the same thing; that changes nothing.
The Calculation editor immediately after Add calculation, before anything has been typed. The operator toolbar sits above an empty formula box, and the counters below it read tokens 0 of 25 and Variables 1 of 5. One variable card is present, marked with a sigma and the letter a and labelled ATTRIBUTE, showing the fixed device Cold Room Sensor 1 with its endpoint and the attribute temperature_fahrenheit. The Preview panel beneath reads Build a valid formula to preview. At the bottom Cancel is solid black and Save is pale grey, showing it is disabled.
The editor as it opens. The variable a is already bound, but the formula box is empty — so Save is disabled until you write one.

How the alert editor differs

This is the same editor the dashboard widgets use. Widget Calculations documents it in full — the toolbar, the templates, the functions, and how the limits are counted — so read that page for the editor itself. Four things differ when you open it from an alert:

  • Every variable comes from this condition’s device. There is no device picker, because an alert judges one device’s reading rather than a chart’s worth of data.
  • The limits are much smaller: 5 variables, 25 building blocks, 8 levels of nesting and 4,096 characters, against a widget’s 20, 50, 12 and 32,768. An alert formula runs on every incoming reading rather than once when a chart is drawn. The counters show the alert’s limits, and the button that would add a sixth variable is greyed out.
  • The preview is a single number, not a chart — the alert has no time range to draw, only the reading that just arrived.
  • The result has no unit, since a formula’s output is no longer in the attribute’s unit.
The Calculation editor opened from an alert condition. A toolbar of operators sits above the formula, written as a minus 32 over 1.8, with counters reading tokens 5 of 25 and Variables 1 of 5. Below, one variable row shows the fixed device name and the attribute temperature_fahrenheit, with no device picker. At the bottom a Preview panel repeats the formula and shows a single number — the device's latest reading converted to Celsius, here just over 23 — with Cancel and Save buttons beneath.
The editor in alert mode. The device is fixed, the counters show the smaller alert limits, and the preview is one number rather than a chart.

The preview has three states, and they differ in whether you can save. An unfinished formula blocks Save; readings that have not arrived do not.

What you see What it means
Build a valid formula to preview The formula is not finished — an empty box, or a variable with nothing chosen. Save is disabled while this shows, including when the editor has just opened.
Latest values unavailable The formula is fine, but the device has not reported recently enough to compute it. The condition is still valid and can be saved.
A number What this condition would compare right now. Shown without a unit.

What changes on the condition

Only the six numeric operators are offered, because a formula’s result is a number. Compare to is marked calculated value (no unit) and the attribute’s unit disappears, as a reminder that your number is matched against the formula’s result. Both Use a value and Use a tag still work.

The sentence the alert writes about itself gains the word (calculated)“Alert me when Boiler room temperature (calculated) is greater than 100” — so nobody goes looking for a reading of 100 the device never sent.

Changing the device or the attribute removes the calculation, and there is no undo. Add it again for the new device.
A condition row just after its device was changed to Weather Station Alpha. The attribute and operator selectors have emptied back to their placeholders, and an amber message beneath reads: The calculation was removed because its attributes belong to the device you changed away from. Add it again for the new device. The Compare to control below no longer carries the calculated value marker.
Changing the device clears the calculation and explains why. Add it again for the new device.

Rarely, a saved calculation cannot be read, which means this version of the app does not understand the stored formula. The row says so and offers Remove calculation but not Edit. Remove it and add the formula again.

A fired calculated condition records what the formula produced alongside what the device sent. See Alert History below.

Payload Push

Payload push sends a message of your own to another system when an alert fires. It appears in three places — the Set Alert dialog, a device’s Connectivity Monitoring card, and each anomaly sensor row — and the rules below are the same in all three. Only the alert tokens available to you differ, because they describe whatever fired.

Choosing a destination

There are two kinds of destination:

  • An integration is a connection to an outside service. Use it to hand the event to software living outside NEQTO.ai.
  • A device endpoint is the doorway your own equipment talks through, so pushing there sends a message back down to your devices. This is how an alert makes something happen in the physical world rather than only telling somebody about it.
The Payload push section of the Set Alert dialog with two destinations configured. A line above them reads Device attributes referenced across all targets: 1/25, followed by Manage integrations and Manage endpoints links. The first destination is Endpoint — Test MQTT Broker (MQTT) and carries a Topic override (optional) field, greyed with the suggested topic ctrl/v1 followed by the endpoint's identifier, and a payload template showing a short JSON object. The second is Integration — Acme Cloud (https); it has no topic field at all, and its payload template reads Leave empty to send the default alert JSON. An Add target button sits below both.
Two destinations of different kinds. Only the MQTT one offers a topic override, and the second one’s blank template means the default alert JSON is sent.

The picker lists each destination with its kind and protocol, for example Endpoint — Test MQTT Broker (MQTT). Not everything you own appears: an integration has to be set up to send data out, and an endpoint has to be one the platform can push down. HTTP and HTTPS endpoints cannot receive a payload push at all. Manage integrations and Manage endpoints links open the pages where those are set up. A destination that stops being usable is not dropped — it stays in the list with — no longer available added to its name.

MQTT delivers to a named topic, the address the receiving side listens on. A Topic override (optional) field lets this alert publish somewhere other than the destination’s usual topic. It appears only where a topic exists to override — an integration speaking MQTTS, or an endpoint of type MQTT — so its absence elsewhere is not a fault. Topics may be 256 characters, and # and + are refused with “Topics must not contain # or + wildcards”: they mean “match anything” when listening, and nothing when sending.

On a device endpoint, the topic must sit inside that endpoint’s own area. It has to begin ctrl/v1/ followed by that endpoint’s identifier, or match a topic template already configured for it. The greyed-out text in the field shows exactly that prefix. Nothing in the browser checks it as you type. So a topic outside the area is accepted by the field, then refused when you save the whole alert, with “Payload push target is not usable: Topic is outside the endpoint’s allowed namespace”. If a save fails on a field that looked fine, this is usually why.

The payload template

The template is the text of the message. Leave it blank and NEQTO.ai sends its own default description of the alert as JSON, which is enough for many receivers. Write one and you control the shape exactly, which matters because the system at the other end usually insists on a particular shape.

Each destination row shows the first two lines of its template. Click the pencil, or the preview itself, to open Edit payload template. A template may be up to 4,096 characters, and a counter beside the box keeps score.

In a JSON template, tokens go inside the quotes. Write {"name": "{{deviceName}}"} and not {"name": {{deviceName}}}. The replacement is pure text, so an unquoted token produces something that is no longer valid JSON. NEQTO.ai only judges a template as JSON when it starts with [, or with a { that is not the beginning of a token. A template opening with a token, like {{device.Boiler.temp}} ppm, is treated as ordinary text and never JSON-checked.

Tokens

A token is a placeholder replaced with a real value when the alert fires. {{deviceName}} becomes the device’s name. There are three families:

Family Looks like What it gives you
Alert tokens {{alertName}}, {{value}}, {{threshold}} Facts about the alert that is firing — its name and severity, the device and measurement that tripped it, the value and the limit, the time. The editor lists the ones this alert type offers underneath the text box.
Tag tokens {{tag.location}} The current value of one of your tags.
Device tokens {{device.Cold%20Room%20Sensor%201.temperature_celsius}} The latest reading of a named device’s measurement — and it need not be the device that fired, so one alert can carry the state of several sensors at once.
The Edit payload template dialog. Its help line reads: Insert alert tokens, {{tag.key}} tags, or {{device.name.attribute}} latest device values. In JSON payloads, place tokens inside quoted strings. Two small buttons sit above the text box, one for tags and one for device attributes; the device one is pressed and its panel is open, listing Cold Room Sensor 1, Smart Thermostat Office, CNC Machine Floor 2, Greenhouse Sensor B-1 and Weather Station Alpha with their endpoint beside each, above a note saying device tokens reference the device by name and that renaming or deleting the device stops the token resolving. Behind the panel a half-written JSON template is visible, and beneath it the list of alert tokens this alert type offers.
The template editor with the device picker open. Picking a device and then one of its measurements writes the token for you.

Two buttons above the text box insert tokens for you: one searches your tags, the other your devices and then that device’s measurements. Use them rather than typing. A device name inside a token is escaped, so a space becomes %20 and Cold Room Sensor 1 has to be written Cold%20Room%20Sensor%201. Most real device names cannot be typed literally at all.

Device tokens are found by name, and a name can change. Renaming or deleting the device breaks the token. So does a name shared by two devices in the alert’s scope, which is common because device names only have to be unique within one endpoint. Nothing tells you when it happens. An unresolved token is sent on exactly as written, so the receiver gets the characters {{device.OldName.temperature_celsius}} where a number should be, and the push is still recorded as queued. That is deliberate: a device briefly late reporting should not drop the whole message. Check the templates that mention a device when you rename it.

One alert may reference 25 device measurements. The count is of distinct measurements across every destination, so naming the same one in three templates costs one rather than three. A line above the destination rows keeps the running total: “Device attributes referenced across all targets: 3/25.”

The alert tokens on offer differ by alert type. A threshold alert knows the condition you wrote and the reading that tripped it. A connectivity alert knows the outage — which device, offline or back online, how long it was down, when it was last seen — and nothing about a threshold, because no reading is involved. An anomaly alert knows the sensor, the value that broke the rule and its unit, which detection layer caught it, and the mean and standard deviation at the time. So a template copied between alert types can name tokens that do not exist there, and saving will say so. The editor lists what it accepts beneath the template field; that list is the authority.

What blocks saving

A broken template does not reveal itself until the alert fires, so NEQTO.ai checks it first. What it finds is either a mistake, which blocks saving until you fix it, or a warning, which you accept by pressing Save again. A mistake is anything NEQTO.ai will not keep: invalid JSON, a token this alert type does not offer, a device the alert cannot see. A warning means the template is well formed but a value cannot be confirmed yet. That is legitimate: a device that has not reported is not a mistake. The exact messages are listed under Troubleshooting below.

The Edit payload template dialog after a first press of Save. A JSON template referencing a device measurement is in the text box, the character counter reads 64 of 4096, and an amber panel below is headed Review before saving. It lists one warning — No value has been received yet for that device token — and closes with the line Save again to accept these warnings. The Save button now reads Save anyway.
A warning does not block you. The panel explains what could not be confirmed, and the button changes to Save anyway.

Delivery outcomes

When the alert fires, each destination gets its own line in the event’s Payload push delivery block in Alert History — one line per row, even where two rows point at the same destination. The line names the kind and the destination’s identifier, gives one of three outcomes, and adds a reason where there is one.

The Payload push delivery block of a fired alert event, showing three lines. The first, with a clock icon on a plain background, reads Endpoint followed by an identifier and the word queued. The second, in red with a warning triangle, reads the same endpoint and the word failed, with the reason Push payload exceeds the 64 KiB limit beneath. The third, also in red, reads Integration followed by a different identifier and the word skipped, with the reason integration not found in scope.
One line per destination. Here the same endpoint was queued once and failed once, and an integration that had been removed was skipped.
Outcome What it means
queued The message was built and accepted for delivery, which happens afterwards. Shown with a clock. Nothing has been delivered at this point, and no network attempt has necessarily been made yet.
failed The send itself was refused or went wrong. Shown in red with a warning triangle. The reason says which: a message over the 64 KiB limit, a rendered result that is no longer valid JSON, or — for an endpoint — usage limit exceeded or rate limit exceeded when the account’s Data Push budget was the problem.
skipped The destination could not be used, so nothing was attempted. Reasons include a destination that has been removed or disabled, an endpoint whose protocol cannot receive a payload push, and a topic override on an endpoint that is not MQTT.
Queued means accepted for asynchronous delivery, not delivered. NEQTO.ai never reports what became of the message.

Two size limits apply, and they measure different things. A template may be 4,096 characters as you type it. The finished message may be 64 KiB after every token has been replaced. A short template full of tokens that expand can pass the first and fail the second, which shows up as a failed line reading “Push payload exceeds the 64 KiB limit”.

Troubleshooting

These mistakes block saving until you fix them:

What went wrong What you see
A destination row has nothing chosen “Select a target for every payload push row”
A JSON-looking template does not parse “Payload must be valid JSON when it starts with { or [“
A topic contains a wildcard “Topics must not contain # or + wildcards”
A token is incomplete or mistyped “A Handlebars token is incomplete or malformed.”
A token is not one this alert type offers “Unknown template token: …”
A tag or device token is the wrong shape “Invalid tag token: …” / “Invalid device token: …”
The tag or device is real, but not one this alert can see “This tag is not available in the alert scope: …” / “This device is not available in the alert scope: …”
Two devices share the name, or the device does not report that measurement “More than one scoped device has this name: …” / “The attribute is not mapped on this device: …”
More than 25 device measurements across the alert “Payload templates can reference at most 25 device attributes across this alert.”
The check itself could not run “Template validation is temporarily unavailable. Please try again.” — treated as a mistake, not a warning: NEQTO.ai will not keep a template it could not check.

These warnings do not. Press Save again to accept them:

What it means What you see
Nothing has arrived for that measurement yet “No value has been received yet for …”
The tag exists but holds nothing usable “The tag currently has no usable value: …”
The value could not be checked at all “The current value could not be verified for …”

Notification Groups

A Notification Group is a reusable recipient list, so you do not re-pick the same people for every alert. Groups are scoped to an application: open an application and go to its Notification Groups page (alongside that application’s Alerts).

Notification Groups page inside an application, titled Notification Groups with the description Create mailing lists to easily assign notification recipients to alerts. A red box marks the plus button beside the title, which opens the create-group dialog. Beneath it a table is headed Name, Description, Members and Actions, and where its rows would be it reads No notification groups yet, create your first notification group to get started.
Notification Groups. Build a list once, then attach it to any alert.
Create Notification Group dialog with Name and optional Description fields and a Members section. Members are added as Add User (account users) or Add External (an email and a phone for SMS, with Email Notifications and SMS Notifications toggles per member).
A group’s members can be account users or external email/SMS contacts.
  • 1
    Click Create Group, give it a Name and an optional Description.
  • 2
    Add members: Add User for account users, or Add External for an email and/or phone number with per-member Email and SMS toggles.
  • 3
    In any alert’s Notifications section, use Add Notification Group to attach the group. When the alert fires, everyone in the group is notified.

Connectivity Alerts

A connectivity alert tells you when a device stops sending data. You do not build these in the Alerts list: each device has its own Connectivity Monitoring tab, and NEQTO.ai creates the underlying alert automatically.

Open the device from inside an application. The Connectivity Monitoring and Anomaly Detection Settings tabs appear only when you reach the device through an application — open an application, go to its Devices list, and pick the device. From the account-level Devices list the same device shows only General Information, Attributes and Device Data, with the two tabs absent rather than empty.
Device detail, Connectivity Monitoring tab. It has a Connectivity alerts toggle (the master on/off, shown on), an Email notifications toggle and an SMS notifications toggle (both off), an Offline Timeout field in minutes showing 30, and a How it works note at the foot of the card.
Per-device connectivity monitoring. Set the timeout to match how often the device actually reports.

The card’s controls:

Control What it does
Connectivity alerts The master switch. When off, this device raises no offline or back-online alerts (in-app, email, or SMS).
Email notifications Also email you when the device goes offline or comes back online. Only applies while connectivity alerts are on.
SMS notifications Also text you when the device goes offline or comes back online. Independent of the email toggle; only applies while connectivity alerts are on, and requires a phone number on your profile with SMS alerts enabled.
Payload push The same payload-push editor the Set Alert dialog has, so going offline or coming back can also send a message of your own to an integration or a device endpoint. See below.
Offline Timeout (minutes) How long to wait with no data before treating the device as offline. The minimum you can enter is 10 minutes.

How “offline” is decided

A device counts as connected while data keeps arriving. If nothing is received within its Offline Timeout it is marked offline and the alert fires, and when it starts sending again a back online notification says how long it was down. NEQTO.ai re-checks for silent devices on a short, regular schedule, and a per-device cooldown limits how often one device can notify, so a flapping connection does not spam you.

Match the timeout to how often the device actually reports. A device reporting hourly reads as offline between reports unless you raise the timeout to cover the gap.

Payload push on a connectivity alert

The same editor, so Payload Push above covers the rules. Destinations belong to the device, and what differs here is where Save lives. The card’s Save Changes button saves them along with the timeout and the two channel switches. So an incomplete destination row stops the timeout beside it being saved too. The whole card is also gated on the Connectivity alerts master switch: with it off, the editor is visible but greyed out. The alert tokens describe an outage rather than a reading.

The Payload push block on a device's Connectivity Monitoring card. Under its heading are the running count of device measurements referenced across all targets, reading 0 of 25, and Manage integrations and Manage endpoints links. Below them one destination row names an MQTT endpoint, with an empty Topic override field whose placeholder is the allowed prefix ctrl slash v1 slash the endpoint's id, and an empty Payload template field placeholdered Leave empty to send the default alert JSON. An Add target button follows, then the card's Offline Timeout field set to 20 minutes and its Save Changes and Cancel buttons.
Payload push on a device’s connectivity alert. The destinations are saved with the rest of the card by Save Changes.

Anomaly Detection

Anomaly detection flags a single reading that is abnormal, without you setting a fixed number. It learns each sensor’s normal range from its own history. Configure it per sensor on the device’s Anomaly Detection Settings tab — reached, like Connectivity Monitoring above, by opening the device from inside an application.

Device detail, Anomaly Detection Settings tab. Each sensor row shows its attribute name (the raw key, e.g. temperature_celsius), a Sigma Multiplier input between 1 and 5, the current statistical range Mean ± Sigma × StdDev, a Save button, and a help button. Sensors that have finished warm-up and have an anomaly alert also show On/Off, Email, and SMS toggles, plus Email every (min) and SMS every (min) interval fields when those channels are on; sensors still learning show a Warm-up in progress label instead.
Per-sensor anomaly settings. Sigma controls how far from normal a reading must be before it counts as an anomaly.

How it works

Detection has two layers:

  • Absolute limits. Hard physical bounds per sensor type: temperature in Celsius is bounded at -40 to 85 °C (Fahrenheit -40 to 185 °F), humidity and battery at 0 to 100 %, and signal strength at -100 to -20 dBm. A reading outside these is always a critical anomaly. Unrecognized sensor types have no absolute limits.
  • Statistical range. Once a sensor has collected enough readings to finish its warm-up, NEQTO.ai computes its mean and standard deviation and flags readings outside mean ± (sigma × standard deviation). A statistical anomaly is rated warning when the reading is more than 3 standard deviations from the mean, otherwise info.

What you configure

  • Sigma Multiplier per sensor, from 1 to 5 in steps of 0.1, default 2. It is the width of the “normal” band, and 2 sigma is about a 95% confidence interval. A higher sigma means a wider band: fewer false alarms, but more chance of missing a real anomaly. Change it and click Save on that row.
  • On / Off, Email and SMS per sensor. These appear only once the sensor has finished warm-up and its anomaly alert exists. Email and SMS are independent of each other and work only while the sensor’s alert is on; SMS also needs a phone number on your profile with SMS alerts enabled.
  • Payload push per sensor — a button opening the same editor in a dialog. It sits alongside the On / Off, Email and SMS controls and needs the same two things they do.
  • Notification interval per channel — Email every (min) and SMS every (min), each shown when that channel is on. They set how often a sensor re-notifies while it keeps reading anomalous, from 15 minutes to 7 days. Leave one blank for the default of 60 minutes; the value saves when you click away.

Setting names match the sensor’s attribute name exactly — the raw key, such as temperature_celsius — so they line up with what you see under Device Data.

Anomaly Detection Help dialog showing a bell-curve normal distribution chart for one sensor, with a green Mean line and two orange dashed lines at minus sigma and plus sigma marking the lower and upper statistical thresholds, a Mean / StdDev / Sigma / Confidence summary, and a sigma slider from 1 to 5 with confidence percentages.
The Anomaly Detection Help dialog visualizes the normal range. Drag or click the slider to widen or narrow the band, then Save.

Warm-up

Per-sensor statistics only appear after a device has been sending data for a while. Until then the row reads Warm-up in progress and the sensor cannot raise statistical anomalies. When warm-up finishes the row shows the sensor’s live mean, standard deviation and statistical range, and NEQTO.ai creates that sensor’s anomaly alert. The On / Off, Email, SMS and Payload push controls arrive with that alert; until it exists the row says so, though its wording mentions only the first two.

A sensor can finish warming up and still have no controls. The alert is only created if the platform can place the sensor: its attribute has to exist for the account, and the device has to belong to an application. When it cannot, the row says so: “Warm-up finished — if no alert appears, check that this sensor’s data type exists for the account and the device is assigned to an application.” Act on that message; it is not a fault.

Payload push on an anomaly alert

Again the same editor, with Payload Push above covering the rules. Destinations belong to the sensor rather than the device. The button shows how many: a row reading Payload push (2) pushes to two places. Setting them on temperature does nothing to humidity. Save here is the dialog’s own and saves only the destinations, unlike the connectivity card. The button needs that sensor’s alert switched on, and a sensor’s alert arrives off, so a newly warmed-up sensor has to be turned on first. The alert tokens describe the sensor and the value that broke its rule.

Two warmed-up sensor rows on the Anomaly Detection Settings tab. The upper row, signal_strength_dbm, has its alert switched off: the Alert Off, Email and SMS switches are all off and its Payload push button is greyed out and carries no count. The lower row, temperature_celsius, has its alert switched on, so its Payload push button is active and reads Payload push (2). Each row also shows a Sigma Multiplier box set to 2, the sensor's current statistical range, and a line beginning Active giving its live mean and standard deviation.
Payload push per anomaly sensor. The count in brackets tells you how many destinations that one sensor pushes to, and the button is only available while that sensor’s alert is switched on.

Alert History

Every time an alert fires it creates an event. The Alert History page is where you review, triage, and clean up those events.

Alert History page titled Alert History with the description View and manage all alert events and their status history. Four summary cards count Critical, Warnings, Info and Completed events. Below them the filters: Severity, Status and a Date Range picker, and no alert filter. Under a Select all checkbox and a count of filtered results, one card per event carries a severity badge, a status badge, how long ago it fired, the alert's name, its description, a Triggered line naming the device and what it read, and per-event history, edit and delete buttons. A red box surrounds the first event card.
Alert History. Filter by severity, status, and date, then work through events.

Event status

Each event carries a workflow status you can update as you handle it:

Status Meaning
New Just fired, not yet looked at.
In Progress Someone is working on it.
Pending Waiting on something else.
Completed Resolved.
Dismissed Acknowledged and set aside.

Status changes are recorded, so each event keeps a history of who moved it where.

Expand an event to see what each condition looked like when the alert fired. A condition that carried a calculation adds three lines. Formula is the formula it used. Calculated value is the number that formula produced. Raw value is the reading the device actually sent, kept because the first question about a surprising alert is always what the device reported.

On a calculated condition the Actual Value line above them holds the calculated number rather than the device’s reading, and neither is shown with a unit.

A fired event's condition card in Alert History, headed Condition States at Trigger Time and marked TRIGGERED. It lists Sensor temperature_fahrenheit, Condition greater, Threshold 15, and an Actual Value in the low twenties. Beneath them a separated group reads Formula a minus 32 over 1.8, then Calculated value repeating that same low-twenties number, and Raw value showing the much higher Fahrenheit reading the device actually sent. No units are shown against any of the numbers.
A fired calculated condition. The formula, the number it produced, and the reading the device actually sent.

Two normal cases can look like missing data. An event recorded before calculations existed shows none of these three lines, exactly as it always did. And a condition the platform did not evaluate on that pass — routine when an alert covers several devices and only some of them reported — shows its formula with neither number beside it.

Filtering and cleanup

  • Filter by Severity (All Severities, Info, Warning, Critical), by Status (All Statuses, New, In Progress, Completed, Pending, Dismissed), and by a Date Range picker.
  • Use the select-all checkbox to pick events and Delete selected in bulk, or set a date range and Delete by date range. Both ask for a confirmation, and both need the alert-delete permission.

Where you are looking changes what a range delete covers. There are two Alert History screens: the account-wide one, and the one inside an application, reached from that application’s Alerts → Alert History in the sidebar. They look almost identical, and only one of them can be narrowed to a single alert.

Screen What Delete by date range covers
Alert History, account-wide Every alert’s events in the range. This screen filters by severity, status and date only — there is no alert filter on it at all.
Alert History, inside an application The same, unless the view is filtered to one alert. While it is, the delete covers only that alert’s events in the range.

That filter is not a dropdown — nothing on either screen lets you choose an alert. It arrives by following a link. On a dashboard, an Alert List widget shows one row per alert with its event count; clicking that count opens the application’s Alert History in a new tab, already narrowed to that alert. A small Alert: <name> chip appears above the filters, and clearing it widens the view — and the delete — back to every alert. The widget itself is covered on the Dashboards page.

The two confirmations are worded differently, and that wording is how you tell them apart:

  • Not filtered to one alert — “Are you sure you want to delete all alert events from <start> to <end>? This action cannot be undone.”
  • Filtered to one alert — “Are you sure you want to delete the events of “<alert>” from <start> to <end>? Other alerts are not affected. This action cannot be undone.”
The Delete alerts by date range confirmation dialog on an application's Alert History screen while the view is filtered to one alert. Under a red bin icon its text names that alert in quotation marks, gives the start and end dates, and says other alerts are not affected and the action cannot be undone, above Cancel and Delete buttons. The filtered event list shows behind it.
The confirmation names the alert when the view is filtered to one. If it says “all alert events” instead, the delete is not narrowed.
A range delete is not limited to the events you can see. Only three things narrow it: the date range, the application whose history you are in, and the alert chip where the view carries one. The severity and status filters change the list only — they do not reach the delete. So deleting a range while the list shows just Warning events also destroys the Critical and Info events in those days.

Alerts shown across the app refresh on their own when the platform pushes an update, and immediately after you create or edit one, so lists and counts stay current without a manual reload.

Muting Your Own Alert Notifications

You can silence alert notifications to yourself across the whole platform. This is a personal preference on your own account, not a change to the rules other people see.

User Settings Alerts section with a Disable all alerts to me toggle. When it is on, a Receive alerts from these applications list of per-application checkboxes appears below, letting the user re-enable notifications for chosen applications.
Settings → Alerts. Mute everything, then opt specific applications back in.

Open Settings and find the Alerts section. Turn on Disable all alerts to me to stop receiving alert notifications everywhere. While it is on, a Receive alerts from these applications list lets you tick the applications you still want to hear about.

Muting is per person, not per alert. The alert still fires, is still recorded in Alert History, and everyone else on the recipient list is notified as normal. To stop an alert firing for everyone, disable the alert itself or use its unlock settings.

Limits and Good to Know

Every number on this page, in one place.

Item Value
Conditions per threshold alert 1 to 10
Unlock conditions per alert Up to 10
Unlock timer minimum 1 minute (field defaults to 60)
Repeat-notification gap (older alert with no unlock set) 24 hours per rule
Connectivity offline timeout 10 minutes minimum
Anomaly sigma multiplier 1 to 5 (steps of 0.1), default 2
Variables in a condition’s calculation 5 (a widget’s allows 20)
Building blocks in a condition’s calculation 25 (a widget’s allows 50)
Nesting depth in a condition’s calculation 8 (a widget’s allows 12)
Length of a condition’s calculation 4,096 characters (a widget’s allows 32,768)
Payload push destinations per alert 5 (Add target greys out at five)
Device measurements a payload template may reference 25 per alert, counting each distinct measurement once
Length of a payload template 4,096 characters as written
Size of a pushed message 64 KiB after every token has been replaced
Topic override length 256 characters, and no # or +
Push rate for endpoint destinations Your account’s Data Push rate limit, account-wide. 60 per minute when your plan sets no usable value
Push history for endpoint destinations Your account’s Data Push history retention. 90 days when your plan sets no usable value

What a push costs

A payload push to a device endpoint is an ordinary data push, so it spends your account’s Data Push allowance — the same budget and history as anything else you send to your devices. The limit is account-wide, not per endpoint, so alerts pushing to four endpoints draw on the same allowance as alerts pushing to one. If your plan carries no usable rate limit or retention, the platform substitutes 60 pushes per minute and 90 days of history rather than reading an unset value as “no pushes” or “expire immediately”. Integration destinations do not use this budget and do not appear in the endpoint Data Push history, so not finding one there is expected.

When a push is refused because the budget is spent, Alert History records that destination as failed, with the reason “usage limit exceeded” or “rate limit exceeded”. The Data Push allowance itself is covered on the Data Push page.