Tracking a list
Tracking a search
The other source type re-runs a query, which is how you catch entities you do not know about yet.conditions, a search tracker fires on membership change — entities that entered or
left the result set since the last run. That is the difference from a list tracker, which watches
metrics on a fixed set.
Conditions
string
required
Any metric defined on the tracked entity. See the metrics reference.
string
pct compares the ratio change against the previous window, abs the absolute change. Omit it
entirely to test the current level instead — { "metric": "revenue", "lte": 1000 } fires
while revenue sits below 1,000.string
The comparison window:
1d, 7d or 30d. Defaults to 1d.number
The bound. Set both to fire inside a band; use two separate conditions to fire outside one.
Schedules
Running more often than the data refreshes does not make it fresher. Most entities refresh daily —
check
typical_lag_hours in coverage before reaching for hourly.
What a firing delivers
The tracker posts atracker.triggered event to its webhook, carrying the entities that matched
and why.
last_run_at on the tracker if you need to confirm it ran.
Operating them
1
One tracker per question
A tracker with six unrelated conditions produces events nobody can route. One tracker per
thing you would actually act on keeps the webhook payload meaningful.
2
Set a floor
Filter the source list or search to entities big enough to matter before adding a percentage
condition.
3
Check last_run_at
GET /trackers/{id} reports last_run_at and next_run_at. A tracker that has not run is a
different problem from one that found nothing.4
Delete what you stopped reading
Trackers consume credits on every cycle whether or not anyone acts on the output.