Logic and Utility
Control workflow flow with conditions, routers, code, and more
Condition
Use typed comparison rules for exact decisions. Select an upstream value, comparison operator, and comparison value; combine rules with All rules or Any rule.
New Condition nodes have fixed If and Else outputs. Connect both paths and test a matching and non-matching input. For example, compare an order amount with 100 using a numeric greater-than rule, or compare a status with approved using an equality rule. You do not need to write JavaScript for these comparisons.
Older workflows may contain the earlier expression or LLM-based Condition configuration. Those saved variants remain supported, but they are not the new Condition form. For decisions about text meaning, use Router or AI Decision when available.
All operations and configuration fields.
Router
Use Router to choose a branch from the meaning of an input. Configure the context, route names and instructions, and the model. Router supports best-match selection and first-match routing. In first-match mode, rules are evaluated in order; the first match wins and Else is the fallback. Put specific rules before broad ones.
Connect each named output to the path that should run. Older workflows can retain the earlier route-selection configuration. Test overlapping rules as well as an input that should reach Else.
All operations and configuration fields.
Code
Run Python, JavaScript, or Java in a sandbox. Python is the default. Configure the variable name, language, code, timeout in seconds, and optional declared output fields.
Read upstream data through context. For a structured Python result, print JSON as the final output:
import json
result = {"message": "Ready"}
print(json.dumps(result))The runner first uses a captured expression result when available, then tries to parse the last nonempty stdout line as JSON; otherwise it returns stdout text or null. Do not rely on a bare final expression working identically in every language.
For a Code node named code, the result is {{code.result}}. Logs are available as {{code.stdout}} and {{code.stderr}}. Declared output fields validate the result structure; they do not change that wrapper. Python scripts cannot use return outside a function.
All operations and configuration fields.
HTTP Request
Find this node as API in universal search. Send GET, POST, PUT, PATCH, DELETE, HEAD, or OPTIONS requests.
Configure the URL, query parameters, authorization, headers, body format, and timeout in milliseconds. Authorization supports no auth, bearer token, API key, and basic auth. Bodies can be JSON, plain text, or form URL encoded.
For a node named api, use {{api.httpResponse.data}} for the body, {{api.httpResponse.status}} for the status code, and {{api.httpResponse.ok}} to check for a 2xx status. Non-2xx HTTP responses remain structured results; inspect the status before continuing. Transport or configuration errors can fail the node.
All operations and configuration fields.
Human Approval
Pause a workflow until a selected workspace member approves or rejects the request. Approval requests appear in the Inbox and open a dedicated approval page.
Use Human Approval before sending customer-facing messages, publishing content, changing important records, or taking another action that needs review.
All operations and configuration fields.
Wait for Event
Pause a workflow until an external system sends an event to a unique callback URL. Use this for long-running processes where the next step depends on something that happens later, such as a signed document, completed job, or external status change.
The wait request appears in the Inbox. Callback requests are signed when a workflow wait signing secret is configured by the deployment administrator.
All operations and configuration fields.
Transform Array
Map, filter, or reduce an input array. Configure Input Array and select an operation:
- Map: transform each item with a template expression.
- Filter: choose a field, comparison operator, and comparison value.
- Reduce: choose an aggregation such as sum, count, concatenate, first, last, minimum, maximum, or a custom reduction expression.
Choose whether an item error stops the node or returns partial results. For a node named transformArray, the output is {{transformArray.result}}, with processedCount and errorCount alongside it.
Operations:
- Map (
MAP) — Transform each item into a new shape - Filter (
FILTER) — Keep only items matching a condition - Reduce (
REDUCE) — Aggregate items into a single value
All operations and configuration fields.
Edit Fields
Edit Fields is retained for existing workflows but is hidden from the standard node picker and universal search. For a new workflow, use Code to reshape an object or Transform Array to reshape items in a list.
CSV Export
Convert data into CSV format for download or further processing.
All operations and configuration fields.
Webhook Action
Send data to an external webhook URL. Unlike the Webhook Trigger (which receives data), this node sends data out.
Configuration:
| Field | Description |
|---|---|
| URL | The webhook endpoint to call |
| Payload | Data to send (supports template variables) |
All operations and configuration fields.
Sleep
Find this node as Wait in universal search. Choose A duration (for example 5s, 1m, or 1h) or A date and time. Include an explicit timezone or UTC offset for date-based waits to avoid ambiguity. This pauses the workflow durably until the chosen time.
For a node named wait, inspect {{wait.targetAt}}, {{wait.completedAt}}, and {{wait.actualDurationMs}} after it resumes.
All operations and configuration fields.
Tables Node
Read from, query, add to, update, or delete rows in your Innflow Tables directly from a workflow.
Operations:
- Read Table (
READ_TABLE) — Read all rows - Query Rows (
QUERY_ROWS) — Filter rows by column value - Add Row (
ADD_ROW) — Insert new row(s) - Update Row (
UPDATE_ROW) — Update an existing row - Delete Row (
DELETE_ROW) — Remove a row by ID
Configuration:
| Field | Description |
|---|---|
| Variable name | Name for the output |
| Table | Which table to operate on |
| Operation | The action to perform |
| Row Data | JSON data for add/update operations |
| Row ID | Target row for update/delete operations |
All operations and configuration fields.
Knowledge Base Node
Use a Knowledge Base node to Search an existing base or Upload a document to it.
For Search, select the knowledge base, query, number of results, and optional score threshold. For Upload, supply the file URL, file name, and supported file type (PDF, TXT, or Markdown). Uploading queues document processing; wait for the document to become ready before expecting it in search results.
For a search node named kb, use {{kb.results}}, {{kb.query}}, and {{kb.totalResults}}. There is no extra output level. See Knowledge Base.
Operations:
- Search (
SEARCH) — Search knowledge base for relevant information - Upload (
UPLOAD) — Upload a document to the knowledge base
All operations and configuration fields.