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 Threshold Alerts and click the + button (its tooltip reads Create Alert) to open the Set Alert dialog. The dialog is organised as four tabs — Details, Conditions, Notifications and Payload Push — and the first of them opens with a Draft with AI field that can fill the whole form in for you.

Threshold Alerts with the create button and first card's lock indicator, status switch, Edit, Delete and expand controls outlined in red. Status and Severity filters appear above the alert cards.
The Threshold Alerts list. Each card is one rule; the switch enables or disables it, and Edit and the delete button sit beside it.

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. Edit and the delete button sit on the card itself, each shown only with the matching permission, and without edit permission the switch is replaced by the plain status. There is no “lock” action: locking comes from the alert’s unlock settings, below.

Filtering the list

Above the cards, Status (All, Active, Inactive) and Severity narrow the list, and the three summary cards also toggle a severity. Filtered Results gives the count.

When an alert’s device is deleted

Permanently deleting a device removes its trigger and unlock conditions. Alerts with remaining trigger conditions continue running. Those with none show Device unassigned and cannot fire. Hover the badge for what to do, then edit each alert to add a condition on an active device.

To move alerts to a replacement device before deleting the old one, follow the steps on the Endpoints & Devices page.

Moving between the tabs

Use Back and Next at the foot of the dialog to walk the tabs in order, or select a tab directly to jump to it. Nothing is lost either way: every tab stays filled in while you move around, and the alert is saved only when you save it.

On a narrow screen the tabs collapse to their icons alone, and the name shows as a tooltip. When something on a tab is incomplete or invalid, a small count appears on that tab’s label saying how many problems it has. This matters because a validation error on a tab you are not looking at would otherwise be invisible — if a save is refused, the counts tell you which tab to go back to.

Draft with AI

At the top of the Details tab is a field where you can describe the alert you want in plain language — something like tell me when the cold room goes above 8 degrees — and let the assistant fill the form in. It works when creating an alert and when editing one, where it asks instead what you would like to change.

The field needs Ask AI access in this application, and without it the field is hidden. Drafting also needs the permission to create alerts, or to edit them when the alert already exists. Without that, the field reads You don’t have permission to use this. It is not offered when the dialog was opened from the assistant.

When your plan uses AI credits, a line under the field gives the draft’s price and your balance, for example 5 credits · 120 of 500 credits available. Your message and each step the assistant takes are charged on top, as in chat. A draft that would use a large share of what is left asks first in a Confirm AI credit use dialog. When the balance cannot cover it, the field reads Not enough credits for this action. If AI is not part of your plan, the field says so instead, for example AI credits are not included in your plan.

Each field the assistant worked out for itself, rather than one you typed, is marked AI-inferred. Treat those badges as a checklist: they are exactly the values worth reading before you save.

Status What happened
Drafting Your description is with the assistant.
Applied The draft was applied and one or more fields were filled in.
No changes The assistant had nothing new to add. Usually this means the form already says what you asked for.
Question The assistant needs something from you before it can draft, and has asked in Ask AI. Answer it there and the draft continues.
Your own entries are kept. Where a draft would overwrite a field you filled in yourself, your value wins and the status line tells you how many fields it protected. The assistant fills gaps; it does not quietly rewrite decisions you have already made.

The Details tab

What this alert is called, what it is for, and how loudly it should read.

  • 1
    Enter an Alert Title (required, up to 100 characters; letters, numbers, spaces, and the basic punctuation - _ ( ) , . : are allowed).
  • 2
    Optionally add a Description saying what this alert watches and why. It is free text, and it is worth writing: it is what the next person sees when they are deciding whether an alert still earns its place.
  • 3
    Pick a Severity. The control is a row of three buttons — Info (blue), Warning (yellow, the default) and Critical (red) — and exactly one is selected. Severity is a label for triage and filtering; it does not change when the alert fires.
View Alert dialog. A left rail lists four tabs, Details, Conditions, Notifications and Payload Push, with Details selected. Above the form a field reads Describe what you would like to change about this alert. The Alert Details panel below holds an Alert Title field, a Description textarea, and a Severity control of three buttons: Info with a blue dot, Warning with a yellow dot and selected, and Critical with a red dot. View event history, Next, Cancel and Save sit at the foot of the dialog.
The Details tab. The AI draft field sits above the form, and severity is a row of three buttons.

The Conditions tab

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

View Alert dialog on the Conditions tab, with Details, Conditions, Notifications and Payload Push in the left rail. A Trigger conditions panel holds a switch reading Alert when this condition is not met, then Condition 1 with a device selector, an attribute selector reading temperature_celsius, the word is, and an operator dropdown reading Greater than. Beneath the row a sigma marker and an Add calculation button, then a Compare to block with Use a value selected, Use a tag beside it, and the value 90. An Add condition button closes the panel, and an Unlock Conditions panel begins below it. View event history, Back, Next, Cancel and Save sit at the foot of the dialog.
The Conditions tab. Trigger conditions and Unlock conditions share it. Once a row names both a device and a numeric attribute, Add calculation appears beside it; with two or more conditions the single switch is replaced by AND, OR, or NOR.

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 and, if you like, your numeric tags, 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.

Numbered attributes fan out into one condition each. Some devices report the same measurement on several channels, named with a trailing number — current_channel_1, current_channel_2, current_channel_3. If you ask the assistant to watch “current channel”, it does not guess which one you meant: it creates one numbered condition per channel, so Condition 1 through Condition 3 cover all of them.

Two rules keep that from over-reaching. A family needs at least two members sharing a trailing number, so temperature_celsius and temperature_fahrenheit are never treated as channels of one thing. And a name that matches two families expands to neither, because the assistant cannot tell which you meant. If fanning out would push the alert past the limit of 10 conditions, nothing is expanded at all — you are told rather than handed a rule that silently watches only the first few channels. You can combine a channel family with another condition using OR, so any of those conditions can fire the alert. If you ask to combine a family with another condition using AND or NOR, the assistant asks you to clarify because the alert cannot group the channels separately. A family on its own defaults to OR; if you explicitly choose AND or NOR, the assistant keeps your choice.

Unlock conditions

Unlock conditions sit on the Conditions tab, below the trigger conditions. They 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.

The Notifications tab

The Notifications tab offers two delivery channels: email and SMS. Slack and PagerDuty are not channel options in this tab. Choose who to tell in the recipient list below. 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.

Email and SMS alerts depend on your plan. An excluded channel is off and greyed out, with Email alerts aren’t included in your plan. or SMS alerts aren’t included in your plan. in place of its description. If you can open the Billing tab, a View plans link follows it. The matching switches on external contacts are greyed out too. See Administration.

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 when the target’s Action is Enabled or Sending unapproved. 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.

Message details

Below the notification channels, on the same tab, Message details adds context to the message those channels send. Everything here is off by default.

Threshold alerts only. The editor offers these options for threshold alerts and not for history alerts. The application link, device tags, device endpoint and custom message reach the message only on a threshold alert; the investigation link is the exception and would be honoured on a history alert too, but there is no control for setting it on one.
Message details block with four toggles, all switched off: Include application link, Include device tags, Include device endpoint, and Include AI investigation link, whose description reads Add an email link that opens the event for AI investigation and notes that SMS messages do not include this link. Beneath them a Custom message textarea shows a zero of 160 character counter.
Message details, inside the Notifications tab. The investigation link rides on email only.
  • 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.
  • Include AI investigation link — adds a link to the notification email that opens the event ready for an AI investigation, so whoever reads the alert can start looking into it in one click. SMS messages do not carry the link, because a text has nowhere useful to put it.
  • Custom message — a free-text note (up to 160 characters) added to the alert message.

The Payload Push tab

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, independently of the notification channels on the previous tab.

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.

Saving the alert

Click Create to save. Editing an existing alert opens the same dialog (titled View Alert) with a Save button. If a save is refused, check the error counts on the tab labels to find what is missing.

When you open an alert that already exists, and you have permission to view alerts, a View event history button sits in the bottom-left of the dialog. It is not offered when the editor is opened from the assistant. It opens Alert History filtered to that one alert, so you can see what this rule has actually been doing before you change it. Opening it does not start an AI investigation.

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. In this older screenshot, the Compare to control is labelled calculated value (no unit), with the value 15 typed in.
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 attribute 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. A tag variable is the exception; see below.
  • 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.

Tags in a calculation

Under Variables, Tag adds one of your tags beside the attributes, so a formula can read a value you keep in one place, such as a calibration offset subtracted from the reading. The button appears only with permission to view tags. Only numeric tags (INT or FLOAT) can be picked; the rest are greyed out with Only numeric (INT or FLOAT) tags can be used. The formula must still use the condition’s own attribute.

  • A tag has one value for the whole alert. The picker offers the account’s tags and this application’s tags. The tag does not need to be assigned to the device.
  • Changing the tag’s value takes effect without a new reading. About every 30 seconds NEQTO.ai re-checks enabled alerts whose trigger formula reads a tag edited since the alert was last saved, using each device’s latest reading. A locked alert waits for its unlock as usual.
  • A formula with no answer is not read as false. If a reading lacks one of the formula’s attributes, that condition keeps its previous state. If a tag gives no usable number, the whole alert holds, so nothing fires or clears on that pass.

A tag that an alert calculation reads cannot be deleted or changed to a non-numeric type. The request is refused and names the reason. Take the tag out of every alert formula first, including on alerts that are switched off.

What changes on the condition

Only the six numeric operators are offered, because a formula’s result is a number. A chip appears beside Compare to reading formula result, and the attribute’s own unit disappears, as a reminder that your number is matched against the formula’s result rather than against the raw reading. Where the calculation declares an output unit the chip names it instead, as formula result: <unit>. 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.

Each target you add here becomes an Action. The Actions page, under Alerts in the application sidebar, is where a target is reviewed with a dry run, approved, enabled, and test-sent. Editing a target that was already approved invalidates its approval, so somebody has to review it again. A new target sends only once its Action is approved and enabled. Legacy targets in the Sending unapproved state continue sending without approval; see The Six States.

Choosing a destination

To trigger a webhook when an alert fires, use Payload Push with a Custom HTTPS integration. Set it up in this order:

  1. Create the Custom HTTPS integration. Set its direction to Push or Pull & Push and its Push URL to the webhook URL.
  2. In the alert’s Payload Push tab, add that integration as a target. Use the default alert JSON or a payload template that matches the receiving service, then save the alert. Adding this alert target creates its Action; creating the integration alone does not.
  3. Open Actions and select Dry run for that alert target. Review the destination and payload, then select Approve inside the Dry run dialog. Back in the Actions list, select Enable. In the UI, Dry run is how you reach Approve; it is not an optional step. A new target cannot send before approval and enabling.

When the alert fires, NEQTO.ai sends a JSON POST using the integration’s saved authentication and headers. An HTTPS device endpoint cannot receive these pushes; choose an HTTPS integration instead.

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, usage limit exceeded when the monthly push allowance is spent, or, for an endpoint, rate limit exceeded when the per-minute push rate 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. A queued line changes later only if the send does not go through. It reads failed with the reason when the Action may no longer send. An integration push can also read failed when the destination rejects it, when it stays unreachable through its retries (about three minutes), or when the monthly allowance ran out, and skipped when the integration became unusable. NEQTO.ai never reports a successful delivery.

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 tab appears 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 tab is 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. Greyed out when your plan does not include email alerts.
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. Greyed out when your plan does not include SMS alerts.
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.

Opened from What the tab offers
The account-level Devices list Warm-up progress, readiness notices, sensor statistics, and the Sigma Multiplier. Links open each application’s anomaly alert settings.
Inside an application All of the above, plus each warmed-up sensor’s alert switch, Email, SMS, notification intervals and Payload push.
Anomaly Detection Settings opened from the account-level Devices list. A sensor shows Collecting samples: 3 of 10, Sigma Multiplier 2 and a current range. A link opens its application's anomaly alert settings.
Warm-up progress shows how many readings the sensor has collected.

Each sensor’s sigma setting applies across all applications.

Anomaly Detection Settings inside an application. Two sensor rows show Alert Off, Email and SMS switches, disabled Payload push buttons, Sigma Multiplier 2, and current ranges. Both rows display a mean and standard deviation.
Per-sensor anomaly settings inside an application. 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: when a sensor’s readings are roughly normally distributed, about 95% of them fall within 2 sigma of the mean. It is a rule of thumb, not a guarantee, because real readings are often not normally distributed. 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.
  • Alert On / Alert Off, Email and SMS per sensor. These appear only inside an application, 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. A channel your plan does not include is greyed out.
  • 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

A sensor needs 10 numeric readings by default before it can raise statistical anomalies. During warm-up its row counts them, for example Collecting samples: 4 of 10. For pull integrations, the row also estimates the remaining warm-up time.

The statistical range updates during warm-up. When warm-up finishes, the row also shows the sensor’s live mean and standard deviation, and NEQTO.ai creates that sensor’s anomaly alert. The Alert On / Alert Off, Email, SMS and Payload push controls appear when that alert exists.

Above the sensor rows, a notice explains anything that keeps the device from learning, along with what to do about it:

Notice What to do
Anomaly detection is not running right now, so new readings are not being learned from or checked. Ask an administrator to check the anomaly detection service. This notice replaces the others.
This device has not sent any readings yet. Nothing. Collecting starts with the first numeric reading.
This device has not been seen since <time>, which is longer than <window>, so warm-up restarts from zero with its next reading. If the device normally reports this rarely, set its connectivity timeout on the Connectivity Monitoring tab longer than its reporting interval. For an integration, check that it is active and pulling.
The integration feeding this device is paused, so no new readings are arriving. Resume the integration.
This device has no numeric attributes. Anomaly detection only works on numeric values. Add or map a numeric attribute for the device.

Individual attributes can carry a line too. A numeric attribute with nothing yet reads Waiting for its first numeric reading., and text attributes are listed after Not available for non-numeric attributes:

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. Alert History is where you review, triage, and clean up those events. It belongs to an application: each one has its own, reached from Alerts → Alert History in that application’s sidebar.

Alert History with severity summaries and Severity, Status, Device and Date Range filters. A red outline marks the first event card, which shows its severity, status, trigger details, device, and history, edit and delete controls.
Alert History. Filter by severity, status, device 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, Warnings, Critical), by Status, by Device, and by a Date Range picker. Status and Device take several values at once: pick New, In Progress and Pending together to see everything still open, or several devices to see their events side by side. Leave either empty to include everything. The summary cards also toggle a severity, or Completed.
  • 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.

The red open alert counts on an application’s device rows and Systems lead here. Clicking one opens Alert History in a new tab with the Device filter set to that device, or to the devices in that System’s subtree, and Status set to New, In Progress and Pending. The list opens on its first page, with the most recently fired event first. See Endpoints & Devices and Systems.

Alert History filters with New and a clipped In Progress chip visible under Status, one selected device, and eight results. Severity is All Severities and Date Range is empty.
Following a count presets the device and the three open statuses; the field is too narrow to show the third chip. Remove all chips in a filter to include all its values.

What the view is narrowed to changes what a range delete covers. Alert History opens showing every alert’s events, and a range delete there reaches all of them. Narrowed to a single alert it reaches only that alert’s events — and that narrowing is the only thing that changes the answer.

The view What Delete by date range covers
Not narrowed to an alert — how the screen opens Every alert’s events in the range. None of the severity, status or device filters narrows a delete to one alert.
Narrowed to one alert — an Alert: chip sits above the filters Only that alert’s events in the range. Every other alert’s events are left alone.

That narrowing is not a dropdown — nothing on the 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 open event count; clicking that count opens the application’s Alert History in a new tab, already narrowed to that alert, with its latest open event expanded when it has one. 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, status and device filters change the list only. They do not limit deletion. Without an alert chip, deleting a range while the list shows one device’s open Warning events also deletes every other event in this application for those days, regardless of device, status or severity.

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.

Investigate with AI

On an alert event inside an application, Investigate with AI asks the assistant to look at what happened. For events tied to numeric readings, it checks the Last 7 days and Last 24 hours before the event fired, then reports back in three parts. Other event types can be investigated without those reading windows.

The button needs Ask AI access in the application. Without it the button is hidden, though an investigation someone already saved stays readable. Under the button a line estimates the extra cost and shows your balance, for example About 12 additional credits, plus the chat prompt. The chat prompt is charged as it is in chat, so the line names it without a number.

Part What it contains
Observations What the readings actually show, without interpretation.
Likely causes Possible explanations, each rated by how well the data backs it up: Supported, Possible or Insufficient.
Suggestions What to do next, each typed as Check, Configure, Monitor or Inspect on site so you can tell a desk job from a trip to the equipment.

Where the assistant could not find what it needed, a Missing evidence note says so. When it examines numeric readings, Readings examined names each window, how many readings it found, at what granularity, and the exact period covered. That is how you judge the answer: a confident-sounding conclusion drawn from two readings is worth less than a hedged one drawn from two thousand.

What it cannot conclude. The assistant receives the alert event, earlier events, available readings, and device details such as tags, notes, and connection information. It cannot know about work or conditions at your site unless someone recorded them. Where the evidence does not support a conclusion it says so rather than picking one — an Insufficient rating, or a plain statement that the evidence was not enough, is the honest answer and not a failure. Treat the result as a starting point for your own diagnosis, never as a verdict.

The result is saved to that event’s status history, attributed both to the assistant and to the person who ran it, so the next person to open the event sees what was already looked into and by whom. Run it again with Investigate again if readings from before the event have arrived late. The windows still end when that event fired; readings taken afterward need a newer event to be included. While an investigation is running, Cancel investigation stops it; where one has failed, the same button reads Dismiss and clears the error. Neither deletes a result that has already been saved — a saved investigation stays in the event’s history, and running a new one is how you supersede it.

Three things can interrupt the save, and they call for different responses. If the recorded evidence for the event changed while the investigation was running, its result no longer matches that event, so run a new investigation. Editing the alert rule or the event’s status does not cause this conflict. If the save was simply not confirmed, retry saving without running the investigation again. If the result is rejected outright, reload the alert before trying again.

An investigation can also fail to finish. It may run out of time on the server, or no answer may arrive before the page stops waiting after ninety seconds. Either way nothing is saved, and running it again is safe. If the account does not have enough AI credits, the investigation stops with There were not enough AI credits to complete the investigation.

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
Readings before an anomaly sensor finishes warm-up 10 by default
Re-check after a tag used in an alert calculation changes About every 30 seconds
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 spend the monthly allowance too, but not the per-minute rate, and they do not appear in the endpoint Data Push history, so not finding one there is expected. An integration push refused because the monthly allowance is spent is recorded as failed, with the reason “usage limit exceeded”, when the queue reaches it.

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.