When a system template doesn't fit your workflow — you want a follow-up 3 days after every install, an internal Slack ping when a $5k+ estimate goes out, a tag-based email drip — build a custom automation.

Create one

  1. Automations.
  2. Click + New automation in the right rail.
  3. The builder canvas opens with an empty Trigger node in the middle and a + below it to add your first step.

Pick a trigger

Trigger picker on the builder canvas

Every automation needs exactly one trigger. Click the trigger node and pick from:

  • Customer — created, updated, tag assigned
  • Job — scheduled, status changed, completed, tag assigned
  • Appointment — scheduled, completed
  • Estimate — sent, approved
  • Invoice — issued, paid
  • Payment — received
  • Membership — created, renewed
  • Inbound webhook — anything outside your Run a Call

Full details in Automation triggers catalog.

Some triggers accept a filter in the trigger config itself. Example: Tag assigned to customer lets you scope to a specific tag ("VIP") so the automation only fires for that tag. Leave the tag empty to fire on any tag.

Add steps

Action picker on the builder canvas

Below the trigger, click + to add a step. Steps fall into four groups:

  • Communication — Send SMS, Send email
  • Records — Read — Get customer, Get job, Get estimate
  • Records — Write — Create / Update customer, job, invoice, membership; add / remove tag; add note; assign a tech
  • Integrations — Send / fetch via webhook
  • Logic — Filter (skip if a condition isn't met), Paths (branch), Delay (wait)

Full catalog in Automation actions catalog.

Each step accepts variables from earlier steps. Type {{ to see what's available at that point in the flow — see Variables and step outputs.

Try it out

There's no whole-flow "test with sample data" button. To try an automation end-to-end:

  1. Publish it (below).
  2. Trigger it once by doing the real action — schedule a job on a test customer you own, send an estimate to yourself, POST to your inbound-webhook URL from a tool like Postman or curl, and so on.
  3. Open the run in Automations → Runs to see every step, its input, its output, and any errors. See Viewing automation runs.

Because a published automation acts for real (real SMS, real emails, real records), trigger it against a test customer you own the first time — not a live customer.

Publish

Draft / Published toggle at the top of the builder

Automations are Draft by default. Draft automations don't fire on real events — even though they're saved and visible.

  • Flip Status → Published (top of the builder).
  • The automation starts responding to the trigger event on the next occurrence.

Un-publish anytime by flipping back to Draft.

Rename, move, delete

  • Rename: click the title at the top of the canvas.
  • Move to folder: on /automations, drag the automation card from its current folder into another folder in the sidebar.
  • Delete: from the automation menu (top-right of the canvas), Delete. Soft-delete — run history stays for 90 days.

Naming steps

Every step has an auto-generated ID (step_1, step_2). Rename each step to something readable — customer_email, pay_link_sms — because downstream {{steps.STEP_ID.output.field}} references use whatever you name it. Renaming happens in the step's config panel.

Save behaviour

The canvas autosaves every change. There's no manual Save button. The Status toggle (Draft / Published) is what controls firing, not save state.