Appearance
Alerts on a form
A rule on a numeric or computed field fires when a figure crosses a line you drew, and tells somebody. It works whether or not anybody has the form open.
Rules are written in the form builder, on the field.
Writing a rule
Each rule carries:
| Part | What it is |
|---|---|
| Condition | An expression over {tokens} naming fields — {level} <= 10 |
| Severity | Info, Warning or Critical |
| Message | What the recipient reads. Supports {token} substitution |
| Channels | A marker on the form, in-app chat, push, or email |
| Recipients | Named members and/or clearance levels |
The builder shows a Reads as preview of the message, so you can see what a recipient will actually get rather than guessing at the substitution.
Who is actually told
Recipients are filtered by who may see the item the alert is about. An alert is not a way around the whitelist.
The equipment an alert names comes from the alerting field's own parameter, not the section's first one. A section commonly carries Opening, Closing and Downtime against one machine, and a reader who muted one of those muted that one — not the row.
A group that cannot be resolved drops the alert
If the alert names a tracker group that has since been deleted or renamed away, the alert is not sent. "Cannot tell who may see this" must never read as "no restriction".
What an alert says
Every channel leads with the form, the item, and the field:
Shift Sheet [EXCAVATOR 4] Mileage leftThe item is uppercased, as item names are everywhere else in Trackapt. Naming the machine and the form is what makes an alert actionable when you run more than one of anything.
When rules fire
On an entry being created, submitted or updated — and only for published entries.
A draft is somebody still typing, and a figure passing through a threshold on its way to being finished is not news.
Ordinary forms and dynamic forms differ
Two engines, because they answer different questions.
| Ordinary form | Dynamic form | |
|---|---|---|
| What it is | A record of one moment | A standing statement of how things are |
| Cooldown | Per entry — starts clear | On the live document — holds for all time |
| Two shifts both running hot | Two alerts. Both are worth hearing about | One |
A dynamic form's snapshots raise nothing. They copy figures the live document has already alerted on, so evaluating both would send the same warning twice from two cooldowns that cannot see each other.
Two rules that fire together
Every rule on a field is judged independently. There is no first-match-wins. So {level} <= 10 and {level} < 0 are both true at -2, and both are sent — one figure, two messages to the same person.
The builder checks your rules as you write them and names the combinations that overlap, with a value that proves it:
Alerts 1 and 3 all fire when Level is -1.
It finds overlaps by trying values rather than solving the expressions, so the warning is one-sided on purpose: an overlap it reports is real, and one hiding between the values it tried is missed. A false warning would teach you to ignore the line.
A rule that can never fire is reported too
The usual cause is = where == was meant. A single = is an assignment: it throws, the evaluator answers cannot say, and the rule silently never fires. The builder reports it while you are writing the rule, rather than leaving you to find out the first time a figure should have raised something and did not.
A breach shows on the printed page
On screen a met alert is a severity-coloured marker beside the value, and the marker is a control — hover it for what is wrong, click it for the detail.
The same breach is marked on the printed, exported and shared copy too. That is the copy somebody reads away from the app, where they cannot hover anything and cannot check — so a page filed, emailed or handed over carries the sign that a figure was out of range.
See Taking data away.
If an alert never arrives
| Check | Why |
|---|---|
| Is the entry published? | Drafts raise nothing. |
| Can the recipient see the item? | Recipients are filtered by the whitelist. |
| Does the alert's group still exist? | An unresolvable group drops the alert. |
| Is it a dynamic form's snapshot? | Snapshots deliberately raise nothing; the live document already did. |
| Has it already fired for this entry? | The per-entry cooldown holds until the figure recovers. |
Alerts are best-effort by design: nothing about an alert can fail the entry that triggered it. A figure is always recorded, even if telling somebody about it fails.
Alerts on a balance are separate
A balance carries its own rules, read as a sentence and thresholded per item. They cannot be muted the way a parameter alert can — the mute belongs to a parameter, and a balance is not one.

