Steps
The steps panel in the automation editor groups steps into nine categories. The names below are the labels you see in the panel. When a step’s settings panel has a different title, it’s given in the Notes column.
To add a step, drag it from the steps panel onto the canvas, or select the + below an existing step and pick it from Add Step. See The editor.
Every step type listed here has a handler in the engine, so it runs when the automation runs.
“Control flow and data operations.”
| Step | What it does | Notes |
|---|---|---|
| Smart Function | Runs code that AI writes from your description, with access to the platform SDK. | Panel tabs: Setup, Inputs, Code, Settings. |
| Variable | Stores values for later steps to read as {{var.name}}. |
Panel title: Variables. |
| Condition | Sends the run down the first branch whose rule matches. Each row has a Name, Expression, Operator and Value. | Operators: equals, does not equal, contains, matches, greater than, less than, greater than or equal to, less than or equal to, is one of, is not one of, has no value (missing, null or empty text), has a value, is empty (also [] and {}), is not empty. A branch that is always true is the Otherwise branch, taken when nothing else matches. |
| Loop | Repeats the steps inside it. For each item runs once per item in a List to loop over. A set number of times counts from a start to an end value. Until stopped repeats until an End Loop step, up to the Stop after limit. | Inside the loop, read the item with {{loop.current}}. |
| Function | Runs JavaScript you write. What the code returns becomes the step’s output. | JavaScript only. Python is listed but not available yet. See Function steps. |
| Data Store | Saves and queries records in a collection, without SQL: Save record (insert / upsert), Find records (query), Delete record by id, Define collection (schema), List collections, Describe collection, and more. | |
| Sub-Workflow | Runs another automation as one step, and can wait for its result. | Panel title: Run Automation. |
| End Loop | Stops the loop it’s in. | Use it with Until stopped loops. |
Connectors
Section titled “Connectors”“External service integrations.” Select a connector to see its Operations, then drag the operation onto the canvas. A connector step uses a connection to the system.
Database
Section titled “Database”“Database connections and queries.”
| Step | What it does | Notes |
|---|---|---|
| SQL Query | Runs SQL on any database connection. | Panel title: Database. An expression in the query is sent to the database as a value, never as SQL: WHERE email = {{input.email}} and WHERE name LIKE '%{{input.q}}%' work; a value can’t change the query. An expression can’t name a table or column (FROM {{var.table}} is refused). An expression can’t stand where SQL needs a name or a keyword either: after FROM, JOIN, INTO, UPDATE, SET or AS, or in ORDER BY and GROUP BY. A list in IN ({{var.ids}}) or IN (0, {{var.ids}}) becomes one value per item; an empty list matches nothing, and an empty list in NOT IN (...) fails the step (check for it first). In LIKE '%{{input.q}}%', a % or _ in the value matches itself; to take the whole pattern from a value, write LIKE {{input.pattern}}. Quotes and comments are read the way your database reads them (MySQL "..." strings and # comments, for example); a quote that is never closed fails the step. On PostgreSQL and Redshift, a value such as a date, an ID or true is compared as the column’s type. A typed literal with an expression, such as DATE '{{input.day}}', is sent as a cast of the value. On PostgreSQL and Redshift, INTERVAL '{{input.days}} days' and INTERVAL '{{input.days}}' DAY work too. On MySQL, write INTERVAL '{{input.days}}' DAY and it’s sent as it is. On Oracle, BigQuery and Snowflake, an INTERVAL literal can’t hold an expression, so do the date math with a function or in code. A type word inside a comment or a quoted string is not read as one. Where nothing gives a value its type, as in concat(), format(), json_build_object() or {{input.x}} IS NULL, the step fails with a hint: add a cast, such as {{input.x}}::text. In MongoDB filters and documents, an expression fills a value, never a key or an operator: "{{input.x}}" in quotes is always text, and an object value that contains an operator such as $ne or $where fails the step. Extended JSON takes values: {"$oid": "{{input.id}}"}, {"$date": "{{input.at}}"}, {"$numberLong": "{{input.n}}"}. In a quoted pattern, such as "$regex": "^{{input.q}}", the value matches itself, because its regex characters are escaped. This also applies to the pattern of $regularExpression and the regex of $regexMatch, $regexFind and $regexFindAll. Any other field, such as a data field called pattern, is left as it is. To take a whole pattern from a value, write it without quotes: "$regex": {{input.pattern}}. In pipeline stages and in projections, a value starting with $ is text, never a field path. $match and $geoNear are queries, where this applies only inside $expr. The collection, and the collections and field names in $out, $merge, $lookup, $graphLookup and $unionWith, can’t come from expressions. Expressions inside $where, $function and $accumulator are refused. |
| Your database connections | Each database connection appears here. Select one to see its Methods. |
ETL / Data
Section titled “ETL / Data”“Data extraction, transformation, and loading.”
| Step | What it does | Notes |
|---|---|---|
| Poll Data | Reads data from another system page by page, and remembers where it stopped so the next run picks up from there. | Uses a connector operation. |
| ETL Job | Starts an ETL job for large-scale data processing. | Needs an ETL job set up under Setup › ETL. |
| Run on Agent | Runs an operation on an execution agent inside a customer’s environment. The run waits until the agent reports back. |
Task Management
Section titled “Task Management”“Create and manage work items.”
| Step | What it does | Notes |
|---|---|---|
| Create Task | Creates a task, story, bug or epic. When the step waits for the task to be finished, the run goes on once the task is approved, rejected, completed or dismissed; later steps read which one as {{step.<id>.output.outcome}}, and approved is true only when the task was approved. |
Panel title: Task. |
AI Agents
Section titled “AI Agents”“AI-powered automation agents.” This category shows in Flow even though agents themselves are built in the full Designer view.
| Step | What it does | Notes |
|---|---|---|
| AI Pipeline | Runs a multi-phase AI processing pipeline. | In the full Designer view only. Pipelines are managed by work.studio. There’s no screen for creating your own. |
| Each of your agents | Every active agent in your organization appears by name. The step sends it a prompt and passes its answer on. | Panel title: AI Agent. See Agents. |
Response
Section titled “Response”“Output and response handling.” A response step ends the run. Nothing can follow it.
| Step | What it does | Notes |
|---|---|---|
| Success Response | Ends the run and returns a value, with an HTTP status code from 200 to 299. | Panel title: Success. |
| Error Response | Ends the run with an error, with an HTTP status code from 400 to 599. | Panel title: Error. |
Human Interaction
Section titled “Human Interaction”“Human-in-the-loop tasks.” These steps pause the run until a person responds.
| Step | What it does | Notes |
|---|---|---|
| Your task templates | Each task template in your organization appears by name. | |
| Custom Task | Asks a person without a template. Shown when your organization has no task templates. | Panel title: Human Task. Types: Approval, Single Choice, Multiple Choice, Text Input, Form. See Approvals. |