Workspace Docs
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:

  1. Trigger — when it runs. A schedule (cron), a data change (db), or a periodic tick (heartbeat). See Triggers.
  2. Query — which rows. A list step selects rows with a filter (status, time, joins). See the query grammar.
  3. 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.

On this page