Triggers, Actions & Logic
Every node you can place in the workflow editor, what it does, and how its outputs connect. Use this to find the node you need; use The Visual Automation Editor to learn how to place and configure one.
Applies to: Professional plan. Requires the crm:automations:view permission. Individual nodes are further limited by your data — a stock node needs Products & Services in use, and an SMS node needs SMS set up for the business.
Prerequisites: Automation Overview
How outputs work
Each node's right edge carries one or more outputs, and which ones you get depends on the node's kind:
- Conditions have yes and no. The record takes one path or the other.
- Actions have next and error. Leave error unconnected and a failure ends that run; connect it and you can notify someone instead.
- Lookups have next and empty. empty runs when the search returned no rows, which is the normal case most days for something like "find forgotten clock-ons".
Triggers
Every workflow has exactly one trigger. Three types are available.
Event Trigger
Runs when a business event fires. Choose the event in Event Type, and optionally narrow it further with an AQL filter. AQL is AxiomBlue Query Language, a SQL-like syntax with a visual builder behind Open Visual Editor.
Leads and customers: Lead Created, Lead Capture Form Submitted, Lead Updated, Lead Stage Changed, Customer Created.
Quotes: Quote Sent, Quote Accepted, Quote Rejected.
Jobs: Job Created, Job Updated, Job Completed, Job Scheduled, Job Rescheduled, Job Travel Started (someone tapped On my way), Job Running Late (someone tapped Running late), Material Used on Job, and Job Status Changed (any status — advanced), which fires on every status move and needs a filter to be useful.
Geofence: Worker Entered Job Site (geofence) and Worker Exited Job Site (geofence). These depend on crew members running the mobile app with location enabled.
Invoices: Invoice Created, Invoice Sent, Invoice Paid, Invoice Overdue.
People: Employee Created, Employee Updated, Leave Requested, Leave Approved.
Purchase orders: Purchase Order Submitted for Approval, Purchase Order Approved, Purchase Order Cancelled, Purchase Order Received.
Other: Milestone Reached.
Schedule
Runs on a cron expression in a timezone you choose. A schedule has no record attached to it, so a scheduled workflow almost always starts with a lookup node to find something to act on.
Webhook
Runs when an outside system posts to a URL. Choose POST, GET or PUT, and optionally set a shared secret so AxiomBlue can verify the signature.
Sending messages
Send Email
Set Recipient Type to Context for a field on the triggering record, Fixed for one address, or AQL to select recipients with a query. Under Email Content, choose Write message and type a subject and body, or Use saved template to pick from your Email Templates with an optional subject override. An inline body can be plain text or rich HTML.
Send SMS
Takes a Recipient Phone — a variable such as {{trigger.data.phone}}, or a number in full international form — and a Message.
Notification (advanced)
Sends an in-app, push or email notification to people inside your business. Fields:
- Recipient Type — Specific User, Role, Context Field or AQL Query
- The field below it changes name with the type: User ID or Email, Role Name, Context Field or Recipient Query. Fill it in — a notification with no recipient reaches nobody.
- Title and Message
- Action URL (Optional) — where selecting the notification takes the reader, for example
/app/crm/leads/{{trigger.entity_id}} - Channels — In-App, Push, Email
- Dedup window — suppresses a repeat of the same notification within the minutes you set
Channels are enforced, and so are personal preferences. A channel you leave unticked is never used. A channel you tick still only reaches a person who has that channel enabled in their own notification preferences. Untick everything and the node sends nothing at all — the editor warns you when you do.
In-App Message
Delivers a message to one person's Messages inbox rather than raising a notification. Takes a recipient employee id and either an inline message or a saved template.
Fire Webhook
Posts to an external URL. Set the URL, the Method, and optionally Headers (JSON) and a Body (JSON).
Actions that change your data
These are grouped in the toolbox by business area. Each carries its own small form — the job it acts on, and any fields it sets.
Jobs
- Start job — moves the job to in-progress, clocking the worker on and creating their assignment if needed
- Complete job — marks the job completed and closes all open time entries
- Cancel job, Pause job, Resume job
- Update job fields — sets one or more fields
- Reschedule job — sets the scheduled start and end
- Add tag to job, Remove tag from job
- Create job from quote — converts an accepted quote into a job
Timesheets
- Clock worker on — opens a time entry, guarding against duplicate and cross-job clock-ins
- Clock worker off — closes the worker's open entries on that job
- Clock worker off current job — closes whatever entry the worker has open right now, wherever it is
- Add time entry — creates an entry with explicit start and end times
Tip: Put Clock worker off current job before Clock worker on in any workflow that moves someone between jobs. A time entry left open on the previous job blocks the new clock-on. The node does nothing when the worker is not clocked in anywhere, so it is safe to leave in the flow.
Assignments
- Assign worker to job
- Set assignment status, or the three shortcuts Working, Traveling and Finished
Invoicing and quotes
- Create invoice from job — a time and materials job bills its actual time and materials; a fixed price job raises a final claim for the balance of the contract
- Add tag to invoice
- Mark quote expired — moves a quote past its expiry date to Expired
Inventory
- Adjust stock level — books a stock movement rather than overwriting the quantity, so the ledger stays auditable
- Add tag to stock item, Remove tag from stock item
Customers, leads and projects
- Add note to customer, Add tag to customer
- Update lead fields — owner, status, priority, estimated value
- Create task — title, description, priority, due date and assignee
- Update project fields
Notifying people by role
- Notify worker — the worker the flow is acting on
- Notify business owners
- Notify job workers — everyone assigned to the job
- Notify (custom recipients) — the users returned by a query
These four carry the same Channels and dedup settings as the Notification node, and save you working out who to address.
Conditions
A condition tests something and splits the flow. Each has yes and no outputs, and most can be negated.
- Jobs — Job is started, Job status is, Job field is…
- Assignments — Worker is assigned to job, Assignment status is
- Timesheets — Worker is clocked on
- Invoicing — Invoice status is, Quote status is
- Customers — Customer field is…
- Employees — Employee is active, Employee has skill
- Inventory — Item is below reorder point
- Scheduling — It is the weekend, for escalating out-of-hours work
Finding records
Lookup nodes sit in the toolbox under Find & Look Up. A scheduled workflow needs one, because a schedule arrives with no record attached. Some of them fan out, running everything downstream once per row they find.
- Jobs — Find jobs by date, Find jobs by status, Get job details, Get job's customer, For each assigned worker, Find recurring services due, Find recurring series due, Find workers on overrunning jobs
- Timesheets — Find forgotten clock-ons
- Assignments — Find a worker's jobs in a date range, used to spot work clashing with approved leave
- Employees — Find expiring tickets & certifications, Find active employees, Find administrators, Get employee details
- Inventory — Find items below reorder point, Get stock item
- Invoicing — Find quotes by expiry
- Bills and purchasing — Find bills due soon, For each purchase order line
- Projects — Get project details
Find bills due soon looks slightly backwards in time as well as forwards by default, so bills that already slipped past their due date still get chased.
Logic and flow
Branch
Splits into yes and no. Set Condition Mode to Simple Rules and build field, operator and value rows, or to AQL Expression and write a query. The simple operators are =, !=, >, <, ≥, ≤, contains, is empty and has value.
Filter
Same configuration as Branch, different intent: rows that match pass through and the rest are dropped, instead of taking a second path.
Switch
Routes by the value of one field. Set Field to Switch On to a variable, then add a Case per value you want to catch, each with a label for its output. Default Port Label names the output everything else takes.
Delay
Choose Fixed with a value and a unit of minutes, hours, days or weeks, or Until Time with a time of day.
Raw nodes
Three nodes in the Advanced section bypass the guided forms. Reach for them when nothing else fits.
- AQL Query (raw) — runs a query and makes its rows available downstream
- Modify Entity (raw) — creates or updates a record directly
- Transform — maps values into a shape later steps can use
Variables
Text fields accept variables in double braces, filled in when the step runs:
{{trigger.data.field}}— the record that started the flow. Which fields exist depends on the event: a job event offersjob_id,customer_nameandscheduled_start, while a geofence event offersemployee_name,latitudeandduration_on_site_minutes.{{business.name}},{{business.abn}},{{business.email}},{{business.phone}}— your business details. ABN is your Australian Business Number.{{today}},{{now}}{{user.id}},{{user.email}}{{nodes.id.rows[0].column}}and{{nodes.id.count}}— results from an earlier query node
Rather than memorising these, select a node and read the value picker, which lists only what is actually available at that point in the flow.
Tip: The data preview at the bottom of the editor shows the real rows reaching each node. Check a variable resolves there before you activate anything that emails a customer.