Browse the docs

Agent setup guide

Vehicle Ready Pickup Text

Texts opted-in customers that their vehicle is ready — total, pay link, pickup hours — and emails everyone else.

Available About 15 min to set up

What it does

Texts opted-in customers that their vehicle is ready — total, pay link, pickup hours — and emails everyone else.

  • Starts from each new row in your ready-for-pickup sheet (customer, mobile, SMS opt-in, total, pay link, pickup hours).
  • AI writes a short pickup text — ready, total, hours, pay link — always ending with “Reply STOP to opt out.”
  • Texts only customers marked opted in, from your Twilio number; everyone else gets the message by email, and rows with neither are marked “call the customer”.
  • Logs how the customer was told, with the time, in the row.
  • Optional approval switch (off by default); rows missing a total or vehicle always wait for a person.

What it needs

  • A paid plan (agents run live on paid plans).
  • An AI provider key (Settings → AI Providers).
  • Google Sheets and Twilio, connected in Settings → Integrations.
  • A Twilio number with A2P 10DLC registration for US texting — registration and consent records are your job.
  • A ready-for-pickup sheet with an SMS opt-in column.

What it doesn't do

  • It texts only rows marked opted in and never infers consent from a phone number.
  • It's one-way: replies land in your Twilio number (pair it with the SMS Inbox Assistant to answer them).
  • It doesn't take payments or create the pay link — it sends the link from your row.

Availability and plans

Available

Its workflow is built and tested, and every app it needs is live. You can get it and set it up now.

Included free on the Enterprise plan; on other paid plans it's a one-time purchase per workspace (the price is on the Agents page). The Agents page in the app always shows its current status.

Before you start

  • A paid plan: agents run live, and the Free plan only runs Dry Runs.
  • An AI provider key (OpenAI, Anthropic, Google and more) in Settings → AI Providers. AI usage is billed by your provider.
  • These apps, connected in Settings → Integrations: Google Sheets and Twilio.
  • The app it watches, connected in Settings → Integrations (the agent starts from an app event).
  • About 15 minutes.

Set it up step by step

Get the agent first (buy it, or it's already yours when your plan includes it), then in Agents → My agents press “Set up this agent”. That creates the agent's workflow in your workspace (it counts towards your plan's workflow limit) and opens the canvas with a setup checklist above it. Each item links to the exact place to go and ticks itself off when it's done.

1. Connect your AI provider

The AI steps run on your own key (OpenAI, Anthropic, Google and more). Add one in Settings → AI Providers.

2. Connect Google Sheets

Connect the Google account that can open and edit your ready-for-pickup sheet (Settings → Integrations → Google Sheets).

3. Connect Twilio

Connect your Twilio account (Account SID + Auth Token or API key) in Settings → Integrations → Twilio. US texting needs an A2P 10DLC registration in Twilio.

4. Pick your ready-for-pickup sheet

Open the trigger, pick your Google account, paste the spreadsheet link and the tab.

SettingWhat to enterIn step
Google account (ready sheet)The Google account that can open your ready-for-pickup sheet. Pick your connected Google Sheets account.“Job marked ready”
Ready-for-pickup spreadsheetPaste the link of the spreadsheet with your ready-for-pickup (the trigger watches it for new rows).“Job marked ready”
Ready-for-pickup tabThe tab a row is added to when a job is ready, e.g. “Ready”.“Job marked ready”

5. Describe your shop

Open “Write the pickup message” and replace the placeholder with your shop name, country code, what to bring and the review switch.

SettingWhat to enterIn step
Your shop detailsReplace the placeholder with your shop name and address, your default country code, what to bring at pickup, and REVIEW EVERY MESSAGE: no (or yes). It starts as “[PASTE YOUR SHOP NAME, ADDRESS, YOUR DEFAULT COUNTRY CODE FOR PHONE NUMBERS (E.G. +1), WHAT TO BRING AT PICKUP, AND WHETHER EVERY MESSAGE NEEDS APPROVAL (REVIEW EVERY MESSAGE: YES/NO) HERE]” until you replace it.“Write the pickup message”

6. Pick your Twilio number and inbox

Open “Text the customer (Twilio)” and pick your connection and number, then “Email the customer instead” and enter your service desk inbox.

SettingWhat to enterIn step
Twilio connectionThe Twilio account the texts are sent from. Pick your connected Twilio account.“Text the customer (Twilio)”
Twilio number to text fromOne of your SMS-enabled, A2P-registered Twilio numbers (E.164). Replies come back to this number.“Text the customer (Twilio)”
Your service desk inbox (Reply-to)Replies to the email version come back to this address.“Email the customer instead”

7. Pick where it's logged

Open “Log it in the sheet”, pick the same account, spreadsheet and tab as the trigger, and enter the log column letter.

SettingWhat to enterIn step
Google account (log)The same Google account, used to log each message in the row. Pick your connected Google Sheets account.“Log it in the sheet”
Ready-for-pickup (same one) spreadsheetPaste the same spreadsheet link again, so rows are logged in place.“Log it in the sheet”
Ready-for-pickup (same one) tabThe same tab name as on the trigger.“Log it in the sheet”
Log column letterThe letter of your empty “Customer told” column; the time goes in the column to its right, e.g. H.“Log it in the sheet”

8. Test it with Dry Run

Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.

9. Switch the trigger on

Open the trigger and click “Activate app trigger”. New rows are picked up on your plan's schedule interval.

How it works

The agent is a normal workflow with 10 steps (1 AI step, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.

  • Job marked ready — Starts on “New row” in Google Sheets (an app event). Starts a run for each row added to your “ready for pickup” sheet (customer, mobile, SMS opt-in, total, pay link, pickup hours), checked on your plan's schedule interval.
  • Write the pickup message — AI step (runs on your AI provider key). AI checks the SMS opt-in, formats the mobile number and writes a short text (ready, total, hours, pay link, “Reply STOP to opt out”) — or an email when the customer hasn't opted in to texts.
  • Approve first? — Decision: picks the branch to follow. Switched off by default: messages go out straight away. Switch it on in your shop details to approve every message; rows missing a total or vehicle always wait.
  • Check the message — A person approves or rejects it in Reviews (the run waits). Branch: Review first. A person checks the message, the opt-in and the number, edits if needed and approves.
  • Not sent — Kept in the run history. Branch: Rejected. Rejected: nothing was sent and the row wasn't marked.
  • Text, email or neither? — Decision: picks the branch to follow. Branch: Approved / Send without review. Texts go only to customers marked opted in; the rest get an email, or the row is marked “call the customer”.
  • Text the customer (Twilio) — Twilio: Send an SMS. Branch: Text (opted in). Sends the pickup text from your Twilio number, ending with “Reply STOP to opt out.”
  • Email the customer instead — Sends an email from your workspace's sender. Branch: Email. Customers who haven't opted in to texts get the same message by email, with replies going to your service desk.
  • Log it in the sheet — Google Sheets: Update a row. Branch: No contact. Writes how the customer was told (text, email or “call the customer”) and the time into the row.
  • Logged — Kept in the run history. The row shows how the customer was told.

Test it with Dry Run

Press Dry Run in the canvas. The agent runs on the sample data stored on its trigger (the “Sample data for Dry Run” box), so you can check every step's output before anything is live. The sample has the same shape as a real event from the app.

Sample data fields

row._row, row.Customer, row.Mobile, row.SMS opt-in, row.Email, row.Vehicle, row.Total, row.Pay link, row.Pickup hours, row_number, sample_note.

  • Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
  • Approval steps use the Dry Run decision you pick in the step's settings (approved, rejected or timeout), so you can try each branch.

Go live

  • Open the trigger and click “Activate app trigger”. New rows are picked up on your plan's schedule interval.
  • Activating the app trigger needs the trigger's connected account. The first check only remembers what's already there, so older items don't start runs; the same item never starts two runs.
  • The setup checklist adds a “paid plan” item before activation: live runs need a paid plan (the Free plan only runs Dry Runs).
  • When every checklist item is done and the trigger is on, the checklist says “Live — this agent is running”. Follow its runs in the workflow's History tab and in Analytics → Agents.

Questions

Who gets a text?

Only rows whose SMS opt-in column explicitly says yes. Everyone else gets an email, and the message always ends with “Reply STOP to opt out.” Keeping consent records is your job.

Can customers text back?

Replies land in your Twilio number. Pair this agent with the SMS Inbox Assistant to answer them.

Do I need A2P 10DLC registration?

Yes, for texting US customers from a 10-digit number. Registration is done in your Twilio account.

Troubleshooting

  • “No AI provider connected” or a rejected key: connect or fix the key in Settings → AI Providers, then press Test there.
  • A checklist item stays unticked: the setting is still empty or still contains its placeholder text. Open the step from the checklist and fill it in.
  • An app step fails with “Needs reconnect”: the account's access was revoked or expired. Reconnect it in Settings → Integrations.
  • No runs start: activate the app trigger with a connected account. Only items created after activation start runs.
  • A run shows as paused: it's waiting for someone in Reviews to approve or reject it.
  • A step failed: open the run in History and check that step in the Trace tab for the error and what it received.

Generated from the agent's own workflow, so it always matches what the agent does. Last updated .