Triggers, Conditions & Actions
This is the reference page for everything you can wire into an automation. For the how-to, see Building an Automation.
Triggers
| Trigger | UI label | Status | Context it provides |
|---|---|---|---|
| Manual | "Manually / from Claude" | Live | client_id (optional, passed when you run it) |
| Scheduled | "On a schedule" | Live | client_id (optional, set on the automation) |
| Event | "When something happens" | Coming soon | Varies by event (see below) |
Scheduled frequencies
| Frequency | Configure | Fires |
|---|---|---|
| Hourly | — | Top of every hour |
| Daily | Time (HH:MM, 24h) | Once a day at that time |
| Weekly | Day of week + time | Once a week |
| Monthly | Day of month (1–28) + time | Once a month |
Event types (roadmap)
These appear in the editor but aren't wired yet. When they ship, they'll provide this context:
| Event | Provides |
|---|---|
| Client created | client.id, client.name |
| Ticket opened | ticket.id, ticket.subject, ticket.client_id |
| Intake submitted | intake.id, responses |
| Marketplace purchase | product.name, buyer, amount, purchased_at |
Conditions
A condition is field → operator → value. Add them at the automation level (skip the whole run) or the step level (skip just that step). Multiple conditions on a level are combined with AND.
Operators
| Operator | UI label | Behavior |
|---|---|---|
equals | "is" | Exact match |
not_equals | "is not" | Does not match |
contains | "contains" | The value contains the text |
is_empty | "is empty" | No value present |
not_empty | "is not empty" | Some value present |
greater_than | "is over" | Numeric: greater than |
less_than | "is under" | Numeric: less than |
greater_or_equal | "is at least" | Numeric: ≥ |
less_or_equal | "is at most" | Numeric: ≤ |
Fields available by trigger
| Trigger | Fields |
|---|---|
| Manual | client_id |
| Scheduled | client_id |
| Event: client created | client.id, client.name |
| Event: ticket opened | ticket.id, ticket.subject, ticket.client_id |
| Event: intake submitted | intake.id, responses |
| Event: marketplace purchase | product.name, buyer, amount, purchased_at |
Action Tools
Steps draw from the shared tool catalog — the same tools available to the MCP integration. Destructive tools (those that create, change, or delete data) only run unattended when the automation has the destructive opt-in enabled.
| Category | Tool | Destructive | Does |
|---|---|---|---|
| Clients | Create Client | Yes | Create a new client |
| Get Client | No | Read client data | |
| Update Client | Yes | Edit a client | |
| Projects | Create Project | Yes | Create a project for a client |
| Update Project | Yes | Edit a project | |
| Get Project Activity | No | Read a project's activity log | |
| Tickets | Get Ticket | No | Read a ticket |
| Update Ticket | Yes | Change status, due date, assignee, etc. | |
| Reply Ticket | Yes | Post a reply, optionally set status | |
| Tasks | Create Task | Yes | Create a task |
| Update Task | Yes | Edit a task | |
| Complete Task | Yes | Mark a task done | |
| List My Tasks | No | Read tasks | |
| Read Email Template | No | Read a template | |
| Create Email Template | Yes | Save a new template | |
| Update Email Template | Yes | Edit a template | |
| Send Test Email Template | Yes | Send a test send | |
| Automations | Create / List / Get Automation | mixed | Manage automations |
| Toggle Automation | Yes | Enable/disable another automation | |
| Run Automation | Yes | Trigger another automation | |
| System | Whoami | No | Identify the run-as user |
The catalog reflects which portal features are enabled and grows over time. The Automations editor always lists the live, authoritative set for your portal.
Transforms
When a field is in Mapped mode, you can apply an optional transform to reshape the value before it reaches the tool:
| Transform | UI label | Effect |
|---|---|---|
none | "As-is" | Pass the value through unchanged |
same_structure | "Keep structure" | Preserve array indexing; otherwise pass through |
first_only | "First item only" | If the value is a list, take the first item |
colors_to_palette | "Colors → palette" | Pull the value out of a list of color objects |
asset_to_text | "Assets → text" | Format a list of assets as Name (S/N: …) text |
Template Tokens
In Template mode, reference any context field with {path}. The available tokens are the same fields listed under Fields available by trigger. For a manual or scheduled automation that's {client_id}; event triggers (when live) add their richer context such as {client.name} or {product.name}.
Resolution rules:
{ spaced }and{spaced}behave identically.- A token with no matching value becomes an empty string.
- Only path-like braces are substituted; other
{ }text is left as written.
Run History
Every execution — manual, scheduled, dry-run, or assistant-triggered — is recorded. Expand an automation in the list to see its recent runs, each with:
- When it ran and what triggered it (manual, cron, or a dry-run marker)
- The user it ran as
- An overall status — success, partial (some steps failed), or failed
- Per-step results, so you can see exactly which actions succeeded
Dry-runs are logged too, but they don't change data or increment the run/error counters — they're purely a preview.