*Workflows › Build*

# Steps

> Steps run in order, one after another. Each can read what the trigger and the steps before it produced, and each can publish a value for the steps after it.

## Three kinds of step

| Kind | What it is | Examples |
| --- | --- | --- |
| Atomic | One unit of work with a fixed shape. | «Wait», «Send HTTP request», «Set variable», «Send email» |
| Capability (an action of Filmo) | Anything the Filmo app can do to your data, offered as a step. They live in the Filmo group of the palette, one drop-down per kind of record. | Create a task, validate an invoice, find orders, ask the AI |
| Composite | A step that contains other steps and decides which of them run. | «Condition», «Switch», «Loop», «Iterate list», «Try» |

## Utilities

| Step | What it does | Publishes |
| --- | --- | --- |
| «Send HTTP request» | Calls a URL. GET, POST, PUT, PATCH or DELETE with a JSON body. See the page on HTTP requests. | The response body |
| «Custom development» | An HTTP request to an endpoint that the Filmo team has developed for your company. Filmo support adds and configures it (method, URL, headers, body, response shape), like the HTTP request step. If anyone else chooses it in the palette, a dialog invites them to talk to the Filmo team (contact@filmo.io) and no step is added. In a workflow the card shows the name and the description the team wrote, not the method or URL; the configuration, input, output and failure details are visible to Filmo staff only. It runs under the same rules as the HTTP request step (SSRF guard, time limit, size cap; a response that is not 2xx ends the run). | The response |
| «Internal notification» | Shows a notification in the app to everyone, to a role or to one member, in a style (neutral, success, warning or error), with optional confetti. | Nothing |
| «Send email from Filmo» | Sends an email from Filmo's own sending address to exactly one recipient. It works without a connected mailbox and does not make the workflow private. | Nothing |
| «Chat message» | Posts to an internal chat channel as the "workflows" bot. Only channels of the company, and not archived ones. | Nothing |
| «Set variable» | Computes a value, with functions, and keeps it under a name. It is the only place you can use functions. | The value |
| «Fire a signal» | Fires a signal for the workflows that listen to it. | Nothing |
| «Wait» | Pauses the run for minutes, hours or days (up to 30 days). | Nothing |
| «Wait until» | Pauses the run until a date (up to a year ahead). | Nothing |
| «Adjust date» | Adds or subtracts a number of days to a date. | The new date |
| «Aggregate values» | Adds up, averages, or takes the minimum or maximum of a list of numbers. It sums exactly, without floating-point errors. | A number |
| «Filter list» | Keeps the items of a list that meet a condition. | The list |
| «Find in list» | Finds the first item that meets a condition. | The item, or nothing |

> **Note:** Two further steps, one that summarizes a list and one that iterates the lines of an accounting invoice, exist in the engine but are not in the palette. They appear only in workflows that already contain them.

## Integration steps

Steps for email, calendar and Slack are described on [Integrations](https://docs.filmo.io/workflows/integrations). Email and calendar steps work on the creator's personal accounts and make the workflow private.

## Actions of Filmo (capability steps)

A capability step runs one action of the Filmo app. The palette lists every action that is available to workflows; the form is generated from the action's own input definition, so a new action appears in the palette with no change to the engine. The [actions reference](https://docs.filmo.io/workflows/reference/actions) lists them all with their inputs and results, grouped like the palette; the generic step is described in [its own page](https://docs.filmo.io/workflows/reference/steps/capability).

- It runs with the permissions of the workflow's creator, checked at that step, every time. If the creator no longer has the permission, the step fails with "you do not have permission to run <action>". See [Permissions](https://docs.filmo.io/workflows/permissions#run-actor).
- An action can also be locked by a plan or add-on, by a provider that is not connected, or by the AI credit pool. The step fails naming the gate.
- Required inputs that are blank are caught when you turn the workflow live. Optional inputs that are blank are left out of the request.
- What the step publishes is the action's result. A list result publishes the list itself. If the action creates or changes a record, the result also carries `entity`, the record as it is after the change, and `entityUrl`, a link to it.
- Writes are guarded against being done twice: the step runs inside an idempotency guard keyed by the run and the step's position, kept for 24 hours.
- Nothing marks an action as irreversible. Read the description of the action before you use one that deletes, cancels or voids.

### Deletes that do not depend on your role

Eleven actions run without the usual role check, because a workflow that deletes things should not stop working when its author changes role: deleting availability, contacts, incidents, items, kits, spaces, staff, tags, tasks and vehicles, and inviting a contact to the portal. They still respect plans, add-ons, connected providers and AI credits, and they never cross a company.

The reference lists every action with its inputs and results, grouped by area.

## Composite steps

| Step | Read |
| --- | --- |
| «Condition» | Conditions and operators |
| «Switch» | Conditions and operators |
| «Loop» | Branches and loops |
| «Iterate list» (and attachments, thread messages, channel members) | Branches and loops |
| «Jump to an earlier step» | Branches and loops |
| «Try» | Errors and retries: the Try step. Runs the steps inside it and, if one fails, the run goes on after it. |

## When a step fails

A step that fails ends the run as failed, unless it sits inside a «Try» step: then the run goes on after the Try. There is no per-step retry. The engine retries a run on its own only when it breaks, not when a step reports a problem; see [Errors and retries](https://docs.filmo.io/workflows/errors-and-retries).

## What a step costs

Every action step that completes uses one credit, including the small ones («Set variable», «Wait»). Conditions, switches, loops, iterations and jumps do not. A step in a loop body costs one per lap. See [Limits and credits](https://docs.filmo.io/workflows/limits#credits).

---

Canonical URL: https://docs.filmo.io/workflows/steps  
Last updated: 2026-10-09