Workflows
Workflows
Automate status changes — no-shows, stale conversations, expiries — with three parts.
A workflow automates work on your data. Every workflow is three parts:
- Trigger — when it runs. A schedule (
cron), a data change (db), or a periodic tick (heartbeat). See Triggers. - Query — which rows. A
liststep selects rows with a filter (status, time, joins). See the query grammar. - Act — what happens. Later steps run a feature (update a status, cancel,
send…) once per selected row (
each).
trigger (WHEN) → <impl>.list with a query (WHICH) → each: update/... (WHAT)Example, in words
Every few minutes, find reservations that are confirmed but whose start time passed 30 minutes ago, and mark each no-show.
That's a heartbeat trigger, a reservations.list step with the query
status = confirmed AND starts_at < 30 min ago, and a reservations.update
step run for each result. See it built in the Cookbook.
Good to know
- It won't loop forever. An acting step should move rows out of the query's condition (confirmed → no-show), so the next run finds nothing.
- Which features can a step run? Any capability in the Feature catalog — generated live from the code.