Rule types reference
Complete parameter reference for all rule types in Blecon Track.
Common properties
Every rule has these properties:
| Property | Type | Required | Description |
|---|---|---|---|
rule_name |
string | Yes | Human-readable name for the rule |
rule_type |
string | Yes | One of the types listed below |
parameters |
object | Yes | Rule-specific configuration |
severity |
string | No | notification (default), low, medium, high, or critical |
apply_to_all_devices |
boolean | No | Apply to all tags (default: true) |
device_ids |
array | No | Specific tag IDs to monitor (when apply_to_all_devices is false) |
enabled |
boolean | No | Whether the rule is active (default: true) |
Severity levels
| Level | Description |
|---|---|
notification |
Notify-only (the default): sends a notification, not an alert — nothing to acknowledge or resolve |
low |
Informational alert: routine events, logging |
medium |
Warning alert: needs attention but not urgent |
high |
Important alert: needs prompt action |
critical |
Emergency alert: needs immediate response |
Any severity other than notification raises an alert that stays open until resolved.
Geofence entry (geofence_entry)
Triggers when a tag enters a location.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
location_id |
string | Yes | — | Zone ID |
min_duration_seconds |
integer | No | 0 | Minimum time inside before triggering |
Geofence exit (geofence_exit)
Triggers when a tag leaves a location.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
location_id |
string | Yes | — | Zone ID |
min_duration_seconds |
integer | No | 0 | Minimum time outside before triggering |
Geofence containment (geofence_containment)
Triggers when a tag is outside all allowed locations during specified hours.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
location_ids |
array | Yes | — | List of allowed location IDs |
check_hours |
string | No | All hours | Time window (e.g., "09:00-17:00") |
check_days |
array | No | All days | Days of week |
timezone |
string | No | UTC | Timezone for time window |
Return to base (return_to_base)
Triggers when a tag hasn't returned to base within a time limit. Created from the Not where expected rule, in its Away too long mode.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
base_location_id |
string | Conditional | — | Base location ID. Use this or zone_tags. |
zone_tags |
array | Conditional | — | Match zones with these tags |
exclude_zone_ids |
array | No | — | Zone IDs to exclude |
max_away_duration_seconds |
integer | No | 3600 | Maximum away time (1 hour) |
Scheduled return (scheduled_return)
Triggers when a tag hasn't returned to base by a daily deadline. Created from the Not where expected rule, in its Not back by a time mode.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
base_location_id |
string | Conditional | — | Base location ID. Use this or zone_tags. |
zone_tags |
array | Conditional | — | Match zones with these tags |
exclude_zone_ids |
array | No | — | Zone IDs to exclude |
return_by_time |
string | Yes | — | Deadline (e.g., "18:00") |
return_by_days |
array | No | All days | Days to check |
timezone |
string | No | UTC | Timezone for deadline |
grace_period_minutes |
integer | No | 0 | Grace period after deadline |
One alert per tag per day. Resets at midnight in the configured timezone.
Inactivity (inactivity)
Triggers when a tag hasn't reported a position.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
max_inactive_duration_seconds |
integer | No | 3600 | Maximum time without update (1 hour) |
Dwell time (dwell_time)
Triggers when a tag stays in a location too long.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
location_id |
string | Conditional | — | Location to monitor. Use this or zone_tags. |
zone_tags |
array | Conditional | — | Match zones with these tags |
exclude_zone_ids |
array | No | — | Zone IDs to exclude |
max_dwell_duration_seconds |
integer | No | 3600 | Maximum dwell time (1 hour) |
Movement detection (movement_detection)
Removed. movement_detection and geofence_containment were the same rule: the position processor put both in one bucket and evaluated them identically. New rules of this type are rejected; use geofence containment.
Rules already stored with this type keep working and are still listed and editable, under the Zone Containment name.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
expected_location_id |
string | Conditional | — | Expected location. Use this or zone_tags. |
zone_tags |
array | Conditional | — | Match zones with these tags |
check_hours |
string | No | All hours | Time window to monitor |
timezone |
string | No | UTC | Timezone for time window |
min_movement_distance_meters |
integer | No | 0 | Minimum movement distance |
Minimum visit frequency (minimum_visit_frequency)
Triggers when a tag hasn't visited a location recently enough. Created from the Not where expected rule, in its Not visited recently mode.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
location_id |
string | Conditional | — | Location to visit. Use this or zone_tags. |
zone_tags |
array | Conditional | — | Match zones with these tags |
exclude_zone_ids |
array | No | — | Zone IDs to exclude |
min_visit_interval_seconds |
integer | No | 86400 | Maximum time between visits (24 hours) |
Unknown location (unknown_location)
Triggers when a tag is at an unregistered location.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
alert_after_seconds |
integer | No | 3600 | Time at unknown location before triggering (1 hour) |
exclude_location_ids |
array | No | — | Locations to exclude from "known" check |
Zone asset count (zone_asset_count)
Triggers when asset count in a location crosses a threshold. This is a location-level rule; one alert per location, not per tag.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
location_id |
string | Conditional | — | Location to monitor. Use this or zone_tags. |
zone_tags |
array | Conditional | — | Match zones with these tags (evaluated independently) |
exclude_zone_ids |
array | No | — | Zone IDs to exclude |
condition |
string | Yes | — | "below", "above", or "outside_range" |
threshold |
int/object | Yes | — | Number for below/above, {"min": X, "max": Y} for outside_range |
asset_filter |
object | No | All assets | Filter which assets to count |
check_interval_seconds |
integer | No | 300 | Cooldown between alerts (5 minutes) |
Proximity association (proximity_association)
Triggers when two tag types come near each other or move apart. Used to auto-create asset associations based on physical proximity.
The "co_movement" trigger has been removed. It associated two tags once the parent had travelled a distance while the child stayed near, which is travelled together asked at ingest. A rule sending it is now rejected.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
child_device_type |
string | Yes | — | Tag type of the child asset |
parent_device_type |
string | Yes | — | Tag type of the parent asset (must differ from child) |
radius_meters |
number | Yes | — | Proximity radius (0–10,000 meters) |
trigger |
string | No | — | "dwell", or absent to associate as soon as they are within the radius |
dwell_seconds |
integer | Conditional | — | Required when trigger is "dwell". Time in proximity before triggering (1–86,400 seconds). |
Separation (separation)
Monitors existing asset associations and alerts when a child asset is too far from its parent. Works with any association source (manual, scan, or auto), and is the one way to be alerted about a pair coming apart — the alert_on_separation flag on proximity association rules has been removed, and is dropped from a rule on its next save. For auto-associations, set this rule's radius below the association radius, or the pair is removed before it can fire. Supports an optional grace period: the alert starts as pending and promotes to active after the grace period elapses; if the child returns within the grace period, the pending alert is cleared without sending a notification.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
radius_meters |
number | Yes | — | Maximum allowed distance between child and parent (1–10,000 meters) |
grace_period_seconds |
number | No | 0 | Seconds the child must be out of range before the alert becomes active (up to 24 hours) |
child_device_type |
string | No | — | Only monitor children of this asset type |
parent_device_type |
string | No | — | Only monitor children of parents of this asset type |
Trip completed (trip_completed)
Notifies when an asset finishes a trip, carrying where it went, how far and how long it took. A trip is one movement between two stops. See Trip completed.
Every parameter is optional. A rule with none set notifies on every trip.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
min_distance_meters |
number | No | — | Only trips at least this far (0–1,000,000 m). Trips with no measurable distance are skipped when this is set. |
min_duration_seconds |
number | No | — | Only trips that took at least this long (0–2,592,000 s) |
destination_zone_id |
string | No | — | Only trips that ended in this zone |
origin_zone_id |
string | No | — | Only trips that started in this zone |
device_tags |
array | No | — | Only assets carrying at least one of these keywords (up to 10) |
exclude_device_tags |
array | No | — | Never assets carrying any of these keywords (up to 10) |
What counts as a trip is set per workspace under Tracking then Trips, and can be overridden per asset type.
Trip abandoned (trip_abandoned)
Alerts when an asset stops reporting in the middle of a trip. The trip is closed at the last place the asset was seen, with no destination, once it has been silent for the workspace's abandonment time. See Trip abandoned.
destination_zone_id is rejected: an abandoned trip has no known destination.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
min_distance_meters |
number | No | — | Only trips at least this far (0–1,000,000 m), measured to the last known position |
min_duration_seconds |
number | No | — | Only trips that ran at least this long (0–2,592,000 s) |
origin_zone_id |
string | No | — | Only trips that started in this zone |
device_type |
string | No | — | Only assets of this type |
device_tags |
array | No | — | Only assets carrying at least one of these keywords (up to 10) |
exclude_device_tags |
array | No | — | Never assets carrying any of these keywords (up to 10) |
Trip overdue (trip_overdue)
Alerts when a trip is still in progress longer than expected. A finished trip that took too long is a trip_completed rule with min_duration_seconds. This rule is for the trip that has not come back. See Trip overdue.
destination_zone_id and min_duration_seconds are rejected: a trip in progress has neither.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
max_duration_seconds |
number | Yes | — | Alert once the trip has run this long without arriving (60–2,592,000 s) |
origin_zone_id |
string | No | — | Only trips that started in this zone |
min_distance_meters |
number | No | — | Only trips at least this far (0–1,000,000 m) |
device_type |
string | No | — | Only assets of this type |
device_tags |
array | No | — | Only assets carrying at least one of these keywords (up to 10) |
exclude_device_tags |
array | No | — | Never assets carrying any of these keywords (up to 10) |
Wrong destination (unexpected_destination)
Alerts when a trip ends anywhere other than the zones listed. The inverse of trip_completed's destination_zone_id filter. See Wrong destination.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
allowed_zone_ids |
array | Yes | — | Zones where the trip is expected to end (1–10 zones) |
alert_on_unknown |
boolean | No | true | Also alert when the trip ends outside every zone |
origin_zone_id |
string | No | — | Only trips that started in this zone |
min_distance_meters |
number | No | — | Only trips at least this far (0–1,000,000 m) |
min_duration_seconds |
number | No | — | Only trips that took at least this long (0–2,592,000 s) |
device_type |
string | No | — | Only assets of this type |
device_tags |
array | No | — | Only assets carrying at least one of these keywords (up to 10) |
exclude_device_tags |
array | No | — | Never assets carrying any of these keywords (up to 10) |
Unscheduled stop (unscheduled_stop)
Alerts on a long pause inside a trip: a stationary period too short to end the trip, which is therefore invisible in the trip list. One alert per qualifying pause. See Unscheduled stop.
min_pause_seconds must be below the workspace's stop time. A stationary period longer than the stop time is a stop, which ends the trip, so a rule above that number could never fire and is rejected at creation.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
min_pause_seconds |
number | Yes | — | Alert on any pause at least this long (60–86,400 s, and below the workspace stop time) |
ignore_zone_ids |
array | No | — | Pauses inside these zones are not reported (up to 10 zones) |
device_type |
string | No | — | Only assets of this type |
device_tags |
array | No | — | Only assets carrying at least one of these keywords (up to 10) |
exclude_device_tags |
array | No | — | Never assets carrying any of these keywords (up to 10) |
Out of hours trip (out_of_hours_trip)
Alerts when an asset departs or arrives outside working hours. The parameters describe when travel is expected, and the rule reports what falls outside. Times are read on the local clock at each end of the trip (where it left for a departure, where it arrived for an arrival), so one rule covers a fleet crossing time zones. An end with no timezone is not judged. See Out of hours trip.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
days |
array | No | every day | Weekdays on which travel is expected, 0 = Monday to 6 = Sunday |
start_time |
string | No | "08:00" |
Start of the working window, local HH:MM |
end_time |
string | No | "18:00" |
End of the working window, local HH:MM. Set it before start_time for a window that crosses midnight. |
trigger_on |
string | No | "either" |
"departure", "arrival" or "either" |
origin_zone_id |
string | No | — | Only trips that started in this zone |
device_type |
string | No | — | Only assets of this type |
device_tags |
array | No | — | Only assets carrying at least one of these keywords (up to 10) |
exclude_device_tags |
array | No | — | Never assets carrying any of these keywords (up to 10) |
Travelled together (trip_matching)
Records when two tag types made the same trip: each started at a stop, both started at the same place, both finished at the same place, and both arrived within the time window. Creates historical shared trip records rather than alerts.
Matched against stored trips, so the workspace's trip distance decides what counts as having gone anywhere. min_displacement_meters and accuracy_multiplier no longer exist; a rule that still carries them has them dropped on its next save.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
device_type_a |
string | Yes | — | First tag type to match |
device_type_b |
string | Yes | — | Second tag type (must differ from type A) |
origin_radius_meters |
number | Yes | 500 | How far apart the two origins may be when neither is a zone (1–10,000 meters) |
destination_radius_meters |
number | Yes | 500 | How far apart the two destinations may be when neither is a zone (1–10,000 meters) |
time_window_minutes |
number | Yes | 60 | How far apart the two arrivals may be (1–1,440 minutes) |
Temperature (temperature_threshold)
Alerts when a tag's latest temperature is above a high threshold or below a low threshold. Resolves automatically when the reading returns within range. Thresholds are always stored in Celsius; the workspace unit setting controls how they and the alert message are displayed. See Temperature.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
high_temp_celsius |
number | Conditional | — | Alert above this temperature (°C). Optional if low_temp_celsius is set. |
low_temp_celsius |
number | Conditional | — | Alert below this temperature (°C). Optional if high_temp_celsius is set. When both are set, high must be greater than low. |
trigger_delay_seconds |
number | No | 0 | Time the reading must stay out of range before the alert fires (0 = immediate). |
auto_resolve |
boolean | No | true | Resolve automatically when the temperature returns within range. |
At least one of high_temp_celsius / low_temp_celsius is required.
Tamper (tamper)
Fires immediately when a monitored tag reports it has been physically detached. Event-driven, with no rule-specific parameters. The tag also carries a clearable tamper state, shown on the asset until cleared. See Tamper.
This rule has only the common properties (severity, tag/type filtering); it has no parameters of its own.
Low battery (low_battery)
Alerts when a tag's latest battery voltage drops below a threshold. Uses a 100 mV recovery buffer: an active alert clears only once voltage rises 0.1 V above the threshold, preventing flapping. See Low battery.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
threshold_voltage_mv |
number | No | 2900 | Alert when battery voltage falls below this, in millivolts (the rule form edits this in volts). |
auto_resolve |
boolean | No | true | Resolve automatically once voltage recovers above the threshold plus the 100 mV buffer. |