Automations (flows)

Automations run when something happens: WHEN a trigger fires (a client is added, a booking or request comes in, an invoice is created/paid/overdue, an expense is recorded, a payment arrives) IF your conditions match THEN the actions run — email, notify the client, notify admins, update a field on the record, or call a webhook. Conditions use operators (is, is not, contains, greater/less than, and “changed” comparisons) and you can combine them with custom logic like 1 AND (2 OR 3). Messages support {{field}} tokens and =formulas such as =if(isblank({{email}}),"—",{{email}}). Editing a live automation saves a new version so you keep a history, and a dry-run lets you test with sample values before enabling.

Example

You build “When an invoice is paid → email the client a thank-you”. You test it with a sample total, see it would send, enable it, and every paid invoice now triggers the note automatically. The run log shows each execution.

FAQ

What can trigger a flow?
Client added, client details changed, booking made or cancelled, request received, invoice created/paid/overdue, expense recorded, and payment received. More can be added by other code.

How do tokens work?
Put {{field}} in a subject or message and it’s replaced from the trigger’s data (plus {{business}}, {{date}} and the client’s {{name}}/{{email}}). A value starting with = is a formula.

What if an action fails?
The run is logged as an error with the reason, and you can be emailed when that happens (set it up on the run-log screen).

Does editing break my automation?
No — saving creates a new version and switches to it; older versions are archived so nothing is lost.