Automations
Allowlisted rules: a trigger, optional conditions, then safe actions. This is not a script engine, not cron itself, and not a webhook endpoint editor.
Settings → Integrations → Automations · /app/w/{workspace}/settings/automations · capability + plan workflow_automation · automations.view / manage / automations.runs.view
Queue worker required. Time triggers also need cron (php artisan schedule:run).
When to use it
Section titled “When to use it”Repeatable follow-up on emitted events (appointment completed → customer message) or time clocks (invoice overdue). Do not use automations to generate PM work orders — that remains fsm:maintenance-generate. Do not use them to assign Dispatch.
Create a rule
Section titled “Create a rule”- Settings → Automations → Create automation.
- Name. Section When → Trigger (emitted list only).
- Optional If conditions (max 10). Empty = every occurrence of that trigger. No nested Boolean trees.
- Then → Add action (max 5). Order in the form is display-only; actions do not wait on each other.
- Save. New rules start inactive. Activate — confirm: Once active, :name will evaluate new matching events. Past events are not replayed.
While active, trigger / conditions / actions are locked (This automation is active. Deactivate it before changing the trigger, conditions, or actions.). Deactivate stops future events. There is no delete — only deactivate.
Released triggers
Section titled “Released triggers”| Trigger (EN) | Kind | Limitation |
|---|---|---|
| Service request created | Event | — |
| Appointment completed | Event | Closeout, not office Work Order Complete |
| Payment recorded | Event | Office/online payment recorded |
| Maintenance occurrence generated | Event | PM Draft WO created — scheduler still required |
| Invoice overdue / Invoice due soon | Time | Needs schedule:run; no historical backfill on activate |
| Estimate expiring soon / Service agreement expiring soon | Time | Same clock + cron |
Catalog keys such as work_order.completed that exist in code with emitted: false are not in the builder.
Actions
Section titled “Actions”| EN label | Effect |
|---|---|
| Customer communication | Creates a Communications intent. Needs customer_communications. |
| Notify staff | In-app notification to selected members |
| Add tag / Remove tag | Workspace tag on a supported related record |
There is no “call webhook” or “change status” action in V1.
What this is not
Section titled “What this is not”Not AI, not bulk Dispatch optimization, not GPS, not a replacement for cron. Emits that originate from an automation are dropped (no recursive fan-out). Execution is not advertised as exactly-once — check Runs.
If nothing fired: rule still inactive; trigger not in the emitted list; queue/cron down; you expected PM generation (wrong engine).
Related: Communications, Preventive maintenance, Queue.