Advanced Automations Playbook
Go beyond a single text message. Personalize with variables, branch with Only if steps, hold people with wait and send-rate steps, and connect Joby to other software.
You'll need Owner or Admin access for this.
Video walkthrough coming soon
Want this one filmed next? Request it
Read the basics first
This is the advanced guide. Start with Visual Workflows so you already know how to add a trigger and one step. The feature used to be called "Visual Workflows" — in the app today it is called Automations.
What it is
Automations is Joby's build-it-yourself follow-up system. You pick one thing that happens in your business (the trigger), then you add the steps that should run after it — texts, emails, tasks, status changes, alerts to your team, and more.
You find it at Settings›Pipeline›Automations. The page header says "Automations" and shows how many you have and how many are active.
Every automation is built from four kinds of card, and the builder labels them in plain English:
When
The one event that starts everything. Every automation has exactly one.
Do
Send a text, send an email, create a task, change a status, tag someone, alert your team.
Only if
A fork in the road. It has a Yes exit and a No exit, and you can wire different steps to each.
Wait
Hold the customer here — for a set time, until the job's own start time, or until they text back.
If your company renamed "Lead" to "Job" (or "Office Agent" to something else) in your settings, the cards use your words. So a card this guide calls "Wait Until Lead Time" may read "Wait Until Job Time" on your screen.
When to use it
Reach for the advanced steps when a plain "text them once" automation is not enough:
- Different customers need different messages. Use an Only if… step to split VIP jobs from everything else.
- You only want to reply during opening hours. Use Only during these hours and Only on these days.
- You want a reminder tied to the job itself. Use Wait Until Lead Time so the reminder moves when the job gets rescheduled.
- You want to react to a reply. Use Wait for a Text Back, which has one exit for "they replied" and another for "they never did".
- You are messaging hundreds of people at once. Use Slow Down a Big Send so you do not blast everyone in one minute.
- Another system needs to know. Use Call a Webhook to push the details out, or the Webhook Received trigger to let another system start a Joby automation.
💡 Tip: Before you build from scratch, click New Automationand look through the ready-made ones. Several of them (missed-call text back, after-hours auto-reply, follow-up sequences) already use the advanced steps described here, so you can open one and see how it is wired.
Before you start
- A Pro plan. Automations is a Pro feature. On a Starter account the page shows an upgrade prompt instead of the builder.
- The Visual Flows permission. Your role needs it, otherwise the page is hidden. An admin turns it on under Settings›People›Team Roles, in the Admin & Settings group.
- A phone number that can send texts if any step sends a text — you pick it in the step's From Number box.
- A shared sending address if any step sends an email. The step's From Email list is filled from Settings›Email Accounts; if nothing is set up there, the list will be empty.
- Your lead statuses and service types already named the way you want them. Filters store the name you picked, so renaming a status later can quietly stop an automation from matching.
- A test lead with a real phone number you own, so you can trigger the automation without messaging a customer.
Step-by-step: build a branching automation
This example texts every new lead, but sends VIP jobs a different message and alerts the team. It uses a trigger, an Only if… fork, and a wait.
- Go to Settings›Pipeline›Automations.
- Click New Automation. On the "Add new automation" page, click Create your own automation.
- Type a name in the box at the top left. An orange dot appears next to the name whenever you have unsaved changes.
- The left panel is headed When this happens and shows only triggers. Under Leads & customers, click Lead Created. (You can also type in the search box — try "missed call".)
- The left panel now switches to Add a step and shows only steps. Open the Only if group and click Only if….
- Click the new step on the canvas. In the panel on the right, set Operatorto Field Equals, pick your Field, and choose the Value from the list. For statuses, service types and field workers the Value box gives you your real records to pick from rather than free text.
- Under Message the customer, add two Send a Text steps — one for each branch.
- Drag from the green Yes dot on the bottom-left of the Only if step to the first text, and from the red No dot on the bottom-right to the second text.
- Fill in each text: choose a From Number, choose who it goes To, and write the Message Template. Use Insert Variable to drop in the customer's name (see the next section).
- Optional: under Tell my team, add Notify My Team after the VIP text so an office agent gets a bell alert.
- Click Tidy up if the canvas has become messy — it tidies the steps into a clean tree.
- Click Checklist on the toolbar and clear every red item. Warnings in orange are worth reading too.
- Click Save (or press ⌘S / Ctrl+S).
- Only when the checklist is clean, switch Active on and save again.
Handy things in the builder
- The bar under the toolbar tells you the trigger, how many steps and links you have, how many times it has run, and either Ready to test or N items to review.
- Select a step and press Delete or Backspace to remove it. ⌘C / ⌘V (Ctrl+C / Ctrl+V) copy and paste a selection.
- Leaving with unsaved changes prompts you first — nothing is thrown away silently.
- The Advanced group in the left panel starts collapsed. Click the heading to open it.
How to check it worked
- In the builder, click Checklist. Red rows must be fixed; orange ones are warnings. It flags an automation with no name, no trigger, no steps, missing trigger details, steps that are not connected, incomplete step details, and wait steps with nothing after them.
- Trigger it for real with your test lead — for example, create a lead if your trigger is Lead Created.
- Click Runs on the builder toolbar. The Waiting tab shows who is currently held in a wait or send-rate step; the History tab shows what has already run, with the exact path it took through your canvas. Use Filter by node to narrow it to one step.
- Or go back to Settings›Pipeline›Automations. Each row shows Workflow progress, how many are In workflow, how many are Done, and the Last activity time. The history icon on the right opens the same run list.
- For a company-wide view, use the Activity Log tab at the top of the Automations page. Filter by automation, filter results to Success or Failed, or search for a specific lead number.
What the numbers mean
- Entered workflows — everyone the automation has ever picked up.
- Currently in workflow — held in a wait, send-rate or reply step right now.
- Done all steps — reached the end of their branch.
- Needs review — the last run or a queued step failed. Open it and read the error.
Common mistakes
"My automation is Active but has never run"
The Automations list adds an orange Never run badge to anything that has been active for over a month with zero runs. Almost always the trigger has a filter naming a lead status or service type that has since been renamed. Open it, and the checklist will name the missing value directly.
Looking for step cards before you have a trigger
The left panel shows either triggers or steps, never both. Until you add a When card it is headed When this happens and only shows triggers. Add the trigger and the Do, Only if and Wait groups appear.
Typing variables by hand
{{lead.first_name}} and {{agent.name}} are not real variables. Use the Insert Variable button so the capital letter and the exact field name are always right.
Leaving a branch or a wait dangling
A wait step with nothing wired after it silently ends that branch — the customer just stops hearing from you. The checklist flags this as "A wait step has nothing after it". The same applies to the timeout exit on Wait for a Text Back.
Turning it on before saving
Active and Save are separate. Flipping the switch marks the automation as changed — you still have to press Save.
Testing on a real customer
Once it is Active it messages real people immediately. Use a test lead with your own phone number, watch it in Runs, then switch it on for everyone.
Trying to edit a built-in automation
Automations with a Default badge are Joby's built-ins. You can turn them on or off, but the builder opens in view-only mode. Click the duplicate icon on the list to get an editable copy of your own.
Deleting instead of pausing
Deleting an automation also deletes its run history and cannot be undone. If you only want it to stop, switch it off — the row stays, and Hide paused keeps your list tidy.
Before you switch anything on
- Checklist is clear of red items.
- Every branch and every wait leads somewhere, or ends on purpose.
- Messages read correctly with a real name substituted in.
- You have run it once on a test lead and seen it in Runs.
- Saved — then Active — then saved again.
More detail (4)
Personalizing with variables
Anywhere you type a message — a text, an email, a note, a task description — there is an Insert Variable button underneath the box. Click it, search or expand a category, and click the one you want. Joby drops the correct code into your message and swaps in the real value when the automation runs.
A few smaller boxes accept variables without a button of their own (a task title, for example). Copy the code out of the picker and paste it in.
Commonly used variables
{{Lead.first_name}}and{{Lead.last_name}}{{Lead.phone}},{{Lead.email}},{{Lead.full_address}}{{Lead.lead_datetime}}— the job's start time{{Company.name}}and{{Company.main_phone}}{{Agent.display_name}}— the office agent on the record{{System.today}}
The category always starts with a capital letter, and the two parts are separated by a dot:{{Lead.first_name}}, not {{lead.first_name}}. Typing them by hand is where mistakes creep in — use the button.
Which variables you see
The list is filtered to match your trigger, so you are not offered estimate details on a task automation. Depending on the automation you may see categories for Lead, Client, Tag, Call, SMS, Email, Agent, Company, System, Field Worker, Estimate, Invoice, Appointment, Task, AI, Webhook, Report, Document and Organization.
Your own custom fields
Custom fields you created appear at the bottom of the list under their own headings — Lead Custom Fields, Client Custom Fields and Appointment Form Fields. They insert as{{Lead.custom_...}}, {{Client.custom_...}} and{{Appointment.custom_...}}.
Spoken messages on phone menus
Call flows use the same button. In Settings›Channels›Visual Call Flows, open a flow, click a Play Message step, and you get the same Insert Variable button plus a Voice picker for the voice that reads it out.
Branching with Only if steps
The Only if group holds three everyday forks, and the Advanced group holds two more. Every one of them has a green Yes exit and a red No exit at the bottom of the card.
- Only if… — compare a field to a value. The Operator list gives you Field Equals, Field Not Equals, Field Contains, Field Greater Than, Field Less Than, Field Is Empty and Field Is Not Empty. Equals and Not Equals let you pick several values at once.
- Only during these hours — set a Start Time and End Time. Perfect for after-hours auto-replies.
- Only on these days — tick the days under Active Days. Tick nothing and every day matches.
- Open Lead Exists? (Advanced) — checks a phone number against your open leads, including second phone numbers and the linked client's numbers. Use it on call and text triggers so a returning customer does not create a duplicate.
- Masked-Call Session (Advanced) — checks whether an incoming text belongs to an active masked-number conversation, so you can forward it to the right person.
Once configured, the card on the canvas shows the comparison in shorthand — for example status = "VIP" — so you can read the whole automation at a glance.
⚠️ Note: A branch that has nothing wired after it simply stops. If you only care about the Yes path, that is fine — just make sure it is deliberate.
Wait steps and send rate
Wait a Fixed Amount of Time
Pause for a number of minutes, hours or days before the next step.
Wait Until Lead Time
Hold until a set time before or after the job's own start or end time — and move with it if the job is rescheduled.
Wait for a Text Back
Hold until the customer replies, or give up after a timeout. Two separate exits.
Slow Down a Big Send
Everyone who reaches this step shares one release budget, so a big list goes out gradually.
Wait Until Lead Time
Set the Reference Time (the job's start time, end time, created time or closed time), a Direction of before or after, and an Offset plus Unit. A plain-English sentence at the top of the panel — for example "24 hours before Lead start time" — confirms what you built.
Two dropdowns decide what happens when the maths does not work out:
- If that time has already passed — Carry on straight away or Stop here. Example: "2 hours before the job" on a job starting in 30 minutes.
- If no time is set on the lead yet — Stop here (the default) or Carry on straight away.
Wait for a Text Back
Set a Timeout duration and Timeout unit. Under Match mode, choose Any reply, or Only matching keywords and list the words (for example yes, y, sure, ok). Anything that does not match is ignored and the wait carries on. The bottom-left exit fires when a reply arrives; the bottom-right exit fires on timeout — wire both.
Slow Down a Big Send
Choose a Mode — Drip, spread evenly or Batch, release together — then a Release budget and how often (Every minute, hour or day). Turn on Only release during business hours to add a Start time, End time and Days; anyone held overnight continues in the next allowed window.
Each wait and send-rate step also lists who is currently held there, right in the same panel.
Connecting other software
Two cards in the Advanced group let Joby talk to other tools. Both are for people comfortable with the other system's setup screens — if that is not you, ask whoever set that tool up.
Let another system start a Joby automation
Add the Webhook Received trigger (left panel → Advanced). Then:
- Save the automation once — the address is only created after the first save.
- Click the grey Webhook URL box to copy it, and paste it into the other system.
- Optionally set a Secret Key. If you do, the other system must send that same value back, which stops strangers triggering your automation.
- Send one test from the other system, then press Refresh under Last Received Webhook.
- Joby lists every field it found under Available Variables (click to copy). Click one to copy it, then paste it into a message or a field.
Joby AI field mapping
If you add a Create a Lead step after a Webhook Received trigger, a Joby AI field mapping card appears with a Fill with AIbutton. It reads the last test you sent and fills in first name, phone, address, service type and the rest for you. Check every field afterwards and fix anything it got wrong.
Send information out to another system
Add Call a Webhook (left panel → Advanced, under Do). Paste the address the other tool gave you into URL, pick a Method (POST, GET or PUT — POST is the usual answer), and fill the Body (JSON) box with the details you want to send. The Insert Variable button works here too, so you can send the customer's name and phone number straight through.
⚠️ Note: These two cards live in Automations only. The Visual Call Flows builder has no equivalent — its steps are IVR Menu, Wait for Office Agent, Play Message, Voicemail, Time Split, Forward Call, Callback Lookup, Joby Agent, Send SMS, End Call and Block Number. If you want a phone call to reach another system, have the call flow create or update the lead, and let an automation do the outbound part.
Let AI write part of the message
AI Process (Advanced → Do) runs text through AI mid-automation. Choose an Input Source, write your instructions in Prompt using {{input}} where the text should go, and pick a Model(GPT-4o Mini for speed and cost, GPT-4o when you need better writing). The answer becomes {{AI.response}}, which you can drop into any later step. Rename it in Output Variable Name if you use more than one.
Turn a message into filled-in fields
Set What should the AI return? to Separate fields when the next step needs the name, phone and email in different boxes — an inbound lead-gen text becoming a real lead, for example. Add one row per value you want, or press Use lead fields to get the standard set in one click. Each row becomes its own variable, so {{AI.first_name}} goes in First name and {{AI.phone}} goes in Phone.
The AI is told never to guess: when the text does not say something, that field comes back empty rather than invented. Press Test to paste a sample message and see exactly which fields come back before you turn the automation on.
AI Phone Call (Do → Message the customer) has Joby's AI voice assistant ring the customer for you. You choose which outbound assistant to use, and you can add your own outcomes so the call can branch on what the customer said.