Automations
Automations
An automation does work for you when something happens: it starts on a trigger and runs its steps in order. Build them under Build → Automations. Like the rest of the app, they take effect when you publish.
Video coming soon
#How an automation works
- A trigger starts it: a record is added, changes or is deleted; a schedule; another service calling a webhook; an API call; a button on a record; a Stripe payment.
- Its steps run one after another: change records, check a condition, send emails and messages, post to Slack or Teams, add rows to Google Sheets, call any API, ask AI.
- Every run is written to the run log, step by step.
Steps read the trigger record's fields ([Name], [Customer].[Email]), and their text
settings are templates:
New order {{[Order number]}} from {{[Customer].[Name]}}.
#Build one
- Under Build → Automations, add an automation and give it a name.
- Pick its trigger and set it up (the table, the fields to watch, a condition, a schedule).
- Add steps. Each step's settings are checked as you go: field names, expressions and templates.
- Test run it on your test data: nothing is sent, and the log shows what would have happened. See Test and debug.
- Publish the app.
You can pause an automation (turn it off) without deleting it; Run now runs the published version for real.
#Who an automation acts as
- Automations started by an API call act as the caller (the API key's user), with that person's permissions.
- All others act with the app's own authority: they can read and change every record of the app.
#Connections
Integration steps use connections: a Slack webhook URL, a Telegram bot token, a Google sign-in, an MCP server, a REST API key. Add them under Build → Automations → Connections; they are stored encrypted and never shown again. See Integrations.
#Limits
- Automations started by other automations stop after 5 levels, so loops always end.
- A Change records step changes at most 1,000 records per run.
- Webhook bodies: 256 KB. API call bodies: 1 MB.
- A step that fails for a reason that may pass (a timeout, a service that was down) is retried a few times with growing waits; see Retries.