
# Automation Actions Overview

Actions are the individual steps an automation runs. Every action shares the same shape: a **`type`** and an **`operator`** that together select the operation, plus a **`props`** object carrying its inputs. Steps run sequentially (top to bottom) unless a `path` or `loop` action branches execution.

```yaml
actions:
  - name: fetchUser # step name — referenced as {{fetchUser.result}}
    type: http # action family
    operator: get # operation within the family
    props: # operation-specific inputs
      url: 'https://api.example.com/users/{{trigger.data.userId}}'
      connection: example-api
```

## The Action Model

| Element    | Description                                                                                           |
| ---------- | ----------------------------------------------------------------------------------------------------- |
| `type`     | The action **family** (e.g. `http`, `record`, `email`). Selects the broad capability.                 |
| `operator` | The **operation** within the family (e.g. `get`, `create`, `send`). Determines the shape of `props`.  |
| `props`    | Operation-specific inputs. String values support [template variables](/en/docs/automations-overview). |

## Common Base Properties

Every action — regardless of `type`/`operator` — accepts these base fields:

| Property          | Description                                                                                                                               |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `name`            | Step name for referencing outputs (e.g. `fetchUser`). Must match `^[a-zA-Z][a-zA-Z0-9_]*$`. **Required.**                                 |
| `label`           | Human-readable label for the step.                                                                                                        |
| `retry`           | Per-action retry policy — `{ maxAttempts, delayMs?, strategy? }`. See [Retry & Failure](/en/docs/automation-retry-failure).               |
| `continueOnError` | Boolean. When `true`, the workflow continues even if this action fails. Defaults to `false`.                                              |
| `timeout`         | Per-action timeout in milliseconds (1000–900000). Terminates the action uniformly when exceeded — distinct from per-type `props.timeout`. |

:::callout
**Two timeouts, two scopes.** The top-level `timeout` field fences the whole action and is enforced for **every** action type. A `props.timeout` (e.g. on `http`, `code`, `automation/call`) fences the handler's internal operation. The smaller of the two wins.
:::

## Conditional Execution

Branching and conditional skipping are handled by dedicated control-flow actions rather than a per-action `condition` field:

- **`filter/continue`** — evaluate a condition group; on false, `stop` the run or `skip` to the next action.
- **`path/branch`** — route into named branches based on per-branch conditions.

See [Flow Control](/en/docs/automation-flow-control) and [Data & State Actions](/en/docs/automation-data-actions).

## The ~22 Action Families

Each family groups one or more operators. The pages below document every operator.

| Family       | Operators                                                                                                                                   | Page                                                       |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| `data`       | set, aggregate, sort, limit, deduplicate, merge, split, compare, lookup                                                                     | [Data & State](/en/docs/automation-data-actions)           |
| `state`      | get, set, increment, delete, list                                                                                                           | [Data & State](/en/docs/automation-data-actions)           |
| `filter`     | continue                                                                                                                                    | [Data & State](/en/docs/automation-data-actions)           |
| `crypto`     | hash, hmac                                                                                                                                  | [Data & State](/en/docs/automation-data-actions)           |
| `digest`     | collect, release                                                                                                                            | [Data & State](/en/docs/automation-data-actions)           |
| `http`       | request, get, post, put, patch, delete                                                                                                      | [HTTP & Webhooks](/en/docs/automation-http-actions)        |
| `webhook`    | send, response                                                                                                                              | [HTTP & Webhooks](/en/docs/automation-http-actions)        |
| `record`     | create, read, update, delete, upsert, batchCreate, batchUpdate, batchDelete, batchUpsert                                                    | [Record & File](/en/docs/automation-record-actions)        |
| `file`       | upload, download, delete, copy, move, list, getMetadata, signUrl, generatePdf, generateCsv, parseCsv, extractText, transformImage, compress | [Record & File](/en/docs/automation-record-actions)        |
| `path`       | branch                                                                                                                                      | [Flow Control](/en/docs/automation-flow-control)           |
| `loop`       | each                                                                                                                                        | [Flow Control](/en/docs/automation-flow-control)           |
| `automation` | call, return                                                                                                                                | [Flow Control](/en/docs/automation-flow-control)           |
| `flow`       | stop                                                                                                                                        | [Flow Control](/en/docs/automation-flow-control)           |
| `email`      | send                                                                                                                                        | [Email & Notifications](/en/docs/automation-email-actions) |
| `analytics`  | track                                                                                                                                       | [Email & Notifications](/en/docs/automation-email-actions) |
| `ai`         | generate, classify, extract, agent                                                                                                          | [AI Actions](/en/docs/automation-ai-actions)               |
| `approval`   | request                                                                                                                                     | [Approval & Delay](/en/docs/automation-approval-delay)     |
| `delay`      | wait, queue, webhook                                                                                                                        | [Approval & Delay](/en/docs/automation-approval-delay)     |
| `auth`       | createUser, assignRole, banUser, unbanUser                                                                                                  | [Auth Actions](/en/docs/automation-auth-actions)           |
| `code`       | runTypescript                                                                                                                               | [Code Actions](/en/docs/automation-code-actions)           |
| `cloud`      | provision-db, spawn-app, route-add, disable-app, destroy-app                                                                                | [Cloud Actions](/en/docs/automation-cloud-actions)         |
| `ref`        | _(no operator)_                                                                                                                             | this page                                                  |

## Reusable Action Templates (`ref`)

Define a reusable action under the top-level `app.actions[]` array, then invoke it from any automation with a `ref` action. The `ref` action has no `operator` — it carries a `$ref` (template name) and optional `$vars` (substitution overrides).

| Property | Description                                                                           |
| -------- | ------------------------------------------------------------------------------------- |
| `$ref`   | Name of the action template to invoke (must match a template in `app.actions[]`).     |
| `$vars`  | Variables to substitute in the referenced template (overrides the template defaults). |

```yaml
# Top-level reusable template
actions:
  - name: notify-slack
    type: http
    operator: post
    props:
      url: $env.SLACK_WEBHOOK_URL
      body: { text: '{{message}}' }

# Invoking it inside an automation
automations:
  - name: order-alert
    trigger: { type: record, table: orders, events: [create] }
    actions:
      - name: alert
        type: ref
        $ref: notify-slack
        $vars: { message: 'New order {{trigger.data.id}}' }
```

## Related Pages

- [Automations Overview](/en/docs/automations-overview) — the trigger + actions anatomy.
- [Triggers](/en/docs/automation-triggers) — events that start a workflow.
- [Retry & Failure](/en/docs/automation-retry-failure) — retry, timeout, idempotency.
- [Connections](/en/docs/automation-connections) — credentials for authenticated actions.
