Automation and agent settings
Automation and agent settings
Who can do this: Owner for everything under Automations. Edit to open Agents; Manage Members for the Agent AI provider panel. See the .
What it's for
A reference for the choices in the rule editor and the Agents page: what each trigger and action needs, what it does, and what the loop, retry and limit settings are. For the order to do things in, read . Defaults below are only those found in code.
Before you start
A rule belongs to one data table. It is saved enabled.
Actions marked "left off on copy" are switched off when you use Duplicate project, and by Leave automations and connectors switched off on import. They can email, message, call outside addresses, spend AI credit or open payments.
Needs your administrator: email from Platform mailbox (default), the Platform AI key, exchange-rate sources, and OCR for scanned documents are installation settings under
/system/config. A missing email setting, or an exchange-rate source that is deactivated or has no key, shows up as a Failed action in Run history; the exact messages are listed in . The other two behave differently. With no AI provider for the agent role, the platform falls back to its default AI settings and there is no "key missing" message. A scan without OCR leaves Extract text from document at Succeeded, and the reason appears only in the action's Error / notes column (optional).
Triggers
Chosen under Trigger in the rule editor. Conditions use Match all or Match any.
Trigger | Needs | Fires | Loop option | Notes |
|---|---|---|---|---|
On event | At least one of Created, Updated, Deleted (default Updated) | On each matching row change | Yes | Only when these columns change applies to Created and Updated; computed columns are refused; not allowed with Deleted alone |
On status change | Status column; optional From state, To state (default any) | When the column enters the state | Yes | Different from Updated plus a condition, which fires on every update while the row stays there |
On schedule | A cron schedule (default hourly, | At each matching time | No: "Schedule-type rules are not subject to the loop guard." | Run: For each filtered row (default) or Once for the table (conditions ignored). Relative to a date column: once per row, a set number of minutes, hours or days before or after it |
Manual | Nothing | Only when someone runs it | No | Run: On the selected rows (default), On all matching rows, or Once for the table (conditions ignored) |
Inbound webhook | Nothing. The Webhook URL is made on first save | When a system posts JSON to it | No | No conditions. Optional Signing secret (optional). Read the body as |
Customer message | Optional Channels (default Any channel): portal_chat, telegram, whatsapp, max, email, webchat | When a customer writes in an Inbox conversation linked to a row of this table | No | Message text, sender and link are |
On event, On status change and On schedule rules can also be marked Show in table Run menu, so editors can run them by hand. Manual rules are always in that menu.
Rule-level settings
Setting | What it does | Default |
|---|---|---|
Name, Table | Required | Table: the first one, or the one you filtered to |
Description | Shown as the tooltip on a Button column | Empty |
Inputs | Named values for runs. Types: Text, Number, Date, Date + time, Yes / no, Pick a row, Pick an option. Required for manual runs; each has a default template such as | None |
Guards | Checked before a run on a row. Block refuses and says why. Confirm needs a tick. A formula over the row decides when | None |
Stop on error / Continue on error | What happens to later actions after one fails | Stop on error |
Stages and branches | Group actions under Run this stage only if; branches run the first arm whose Take this arm if matches, with otherwise last | None. Stage-level error policy is carried but not editable on screen |
Actions
Each rule has actions that run in order. "Left off on copy" is yes for the ones that reach outside the space.
Action | Needs | What it does | Left off on copy |
|---|---|---|---|
Set fields on this row | Column and value pairs (Value, Param, Trigger row, Formula) | Writes cells of the trigger row | No |
Create a row | Target table (default Same table) and fields | Adds a row. Options: link back to the new row, Match an existing row by these target columns (the key) and skip or update, Name this row for later steps | No |
Move this row to a status | Status column, Move to state | Moves the row through its status workflow. Allowed-transition rules, required fields and row lock apply; a refused move fails the action | No |
Update related rows | A reference column, or a key into another table; fields; How many to update (required) | Writes rows linked to this one, highest-ordered first | No |
Send email | To: recipients, subject, body | Emails. Recipient tabs: Address, Column, Member, Group, External. Attach files from file columns. Send from: Platform mailbox (default) or a project email connector | Yes |
Send external message | Channel, recipients, body | Sends on Telegram, WhatsApp, MAX and other messenger channels, or by email, in-app, portal or portal chat. Delivery: One channel only, Messenger, else email (default), All available channels | Yes |
Notify person column | A person or email column, subject, body | Emails the person in that column | Yes |
Call webhook | http(s) URL, method POST, PUT or PATCH | Queues a delivery with optional JSON body (default the row) and Request headers. See Webhook deliveries | Yes |
Fetch URL (write back) | URL, method, a response mapping (required) | Calls a public https address and writes parts of the answer to columns. Timeout (ms) | Yes |
Import FX rates | Rate source, currency pairs, target table | Imports exchange rates. Only sources an administrator activated are offered | Yes |
Run agent | An internal agent, a task | Runs the agent on this row. Uses AI credit unless you use your own key | Yes |
Create rows from source | Source and target tables, match column, field map | Copies or scales rows between tables. Max rows | No |
Allocate across rows | Total, weight and destination columns | Splits a total across rows in proportion | No |
Post ledger (FIFO) | Consumption table, catalogue and balance columns | Writes off stock oldest-first and records the cost | No |
Recompute row | Nothing; optional Only these formula columns | Refreshes formula, rollup and lookup values so later actions see them | No |
Import the row's file | A file column and a saved import profile | Imports the first attached file into the profile's table | No |
Transcribe audio | A speech connector, audio and transcript columns | Sends audio to the speech provider; the text arrives later | Yes |
Extract text from document | A file column, a text column | Reads PDF, DOCX, DOC, RTF, XLSX, XLS into text; scans go to OCR if an administrator set it up | No |
Generate document from template | A template document, a documents column | Makes a document for the row. If this row already has one: skip (default), add, or replace | No |
Call connector action | A connector and one of its actions | Runs an action a connector publishes | Yes |
Request payment (link) | Payments connector, amount column, link column, description | Yes | |
Issue access link (pay without signing in) | An app connection, directory row, link column, page URL | Writes a reusable access link on the directory row | Yes |
Issue recurring invoice | Invoice and line tables | Issues invoices. Payment terms (days from issue to due) | No |
Match catalogue items | Request lines table, catalogue columns | Matches requested articles or names to catalogue rows. Which lines to process: only unmatched (default) | No |
Run another automation | A rule that can be run on demand | Runs it as a step. If it declines (conditions do not match, blocked, busy): skip this step and continue, or fail this step | No |
One more action type, "import from source", is created by the import wizard's repeat option and is not in the picker. It is also left off on copy.
Defaults found in code: Create rows from source reads up to 1,000 rows; Allocate across rows uses 2 decimals and the largest-remainder rule; Issue recurring invoice uses 14-day terms; Extract text from document keeps 50,000 characters and allows at most 200,000; Fetch URL (write back) times out after 10,000 ms; Send external message blocks an identical text to one contact for 24 hours (Suppress identical for (min), 1440) and allows 6 messages per contact per hour (Max per contact).
Run-time settings
Setting | Where | What it does | Default and limits |
|---|---|---|---|
Max executions per hour | Limits | Runs the space may start per hour | 1,000. Empty uses the default |
Max executions per day | Limits | Runs per day | 10,000 |
Chain depth | Not on screen | Longest run of rules triggering rules before a run is Skipped with "Loop guard" | 8 |
Runs per originating change | Not on screen | Runs one change may cause in an hour | 500 |
Allow this rule to run on changes made by automation | Rule editor, event and status rules | Lets the rule see changes written by other rules, which is what makes chains work | On for new rules. An old rule keeps what it was saved with |
Cycle check | Always on | A rule that already ran on the same row earlier in the chain is Skipped, naming the rules | Not changeable |
Waiting | Automatic | A run waits while an earlier run in its cascade is still writing | Not changeable |
Run retry | Automatic | Only for Run agent failures the provider calls temporary. Waits 1, 5, 20, then 60 minutes; five attempts in all | Not changeable. The retry icon on a run starts over with five attempts |
Webhook delivery retry | Automatic | For Call webhook. Retries timeouts, 408, 429, 5xx; 10-second timeout; response stored up to 4 KiB; five attempts then Abandoned | Not changeable |
Preview and All matching rows | Run / test dialog | A fan-out run is capped per tick | 500 rows |
The two "Not on screen" limits can be set over the API (maxChainDepth, maxRunsPerTree on the quota route), and saving Limits keeps them. Ask your integrator.
Agent settings
On the Agents page. A new agent starts as Conversational and Enabled.
Setting | Applies to | What it does | Default |
|---|---|---|---|
Type | All | Conversational, Row processor, Generic data, Portal completion | Conversational |
Name, Instructions | All | The agent's name and system prompt | Empty |
Audience | Conversational | portal (logged-in customer) or public (anonymous visitor) | portal |
Mutations | Conversational | ask confirms with the customer before writes; auto does not | ask |
Inbound channels (trigger) | Conversational | webchat, portal_chat, telegram, max, email | webchat |
Max reply length | Conversational | Soft cap in characters; over it the agent summarises | 1500 when blank |
Escalation group | Conversational | Assigned and notified when the agent escalates | None |
Run mode | Row processor | One call mode (fills this row only), Field extraction (one call, platform validates fields; targets are chosen per rule), Agent loop mode (several steps, other tables) | Agent loop |
Document scope | Not Portal completion, not One call or Extraction | Documents it may read or write. Empty means everything it can already access; for a public agent, every published document | Empty |
Portal key | Portal completion | The key the app calls: a to z, 0 to 9, | None |
Who may call it | Portal completion | Selected portal groups, or every signed-in portal user | Groups, none selected: nobody can call it |
Max input (characters) | Portal completion | Longest accepted text | 4,000 (1 to 60,000) |
Output budget (tokens, incl. reasoning) | Portal completion | Reply cap | 1,000 (16 to 40,000) |
Reply format | Portal completion | Text, or JSON validated against your schema; a reply that does not match is refused (422). Schema up to 20,000 bytes | Text |
Enabled | All | Off stops it | On |
Per-agent model choice is not on screen. The model comes from the pool, or from your own key's Model.
Agent AI provider
Setting | What it does | Default |
|---|---|---|
Use our own AI key for agents in this project | Switches every agent and the Portal AI assistant to your provider | Off (Platform) |
Provider | OpenRouter, Z.ai, MiniMax, Alibaba (Qwen), or Custom (self-hosted / OpenAI-compatible) | OpenRouter in a new form |
Model | Required | Empty |
Base URL (OpenAI-compatible) | Custom only. Public https only; private addresses are rejected | Empty |
API key | Write-only; shown masked. Required for hosted providers, optional for a keyless custom endpoint | None |
Max parallel jobs | Simultaneous model calls | 1 (minimum 1) |
Provider enabled | Off puts agents back on the platform pool | On |
Fall back to the platform pool if our key is unavailable | Off: if your key is limited or down, runs wait or fail rather than use platform credit | Off |
Careful: a Custom endpoint receives your agents' full prompts. Own-key usage is not metered against your plan, so your provider bills you.
Portal AI
Setting | What it does | Default |
|---|---|---|
Portal AI (under Space features in Edit) or AI assistant (in External Portals) | Gives signed-in portal users a read-only chat assistant scoped to their own access | Off |
Agents (under Space features) | Lets conversational and portal completion agents run; Portal AI should be on beside it. Row-processor and data agents started by Run agent do not need it. The banner on the Agents page says this | Off |
Rate limit | 30 requests per 5 minutes per portal user, 120 per hour per address | Not changeable |