Workspace Docs
Workflows

The query

How a list step selects rows — filters, time, and joins.

A list step carries a query that selects which rows the workflow acts on. It reads like a set of conditions that all must hold.

Filter by column

query:
  where:
    status: { in: [confirmed] }      # status is one of these
    starts_at: { lt: "now-30m" }     # started more than 30 min ago
  limit: 50

Operators: eq, neq, gt, gte, lt, lte, like, ilike, in. Which columns a feature allows is in the Feature catalog ("Filterable columns").

Relative time

A time value can be now or now±N with unit m / h / d: now-30m, now-2d, now+1h. Resolved at run time.

Select only rows whose related record matches — e.g. open conversations of active customers:

query:
  where: { status: { in: [open] }, last_message_at: { lt: "now-1d" } }
  embed:
    customer_id: { inner: true, where: { status: { eq: active } } }

The join uses the feature's declared relationships — no new links are invented, and joined rows still respect the reader's permissions.

On this page