Agent setup guide
Pet Care Due-Date Reminders
Weekly: turns your practice software's reminders export into friendly emails in your own wording — sent after one front-desk approval.
What it does
Weekly: turns your practice software's reminders export into friendly emails in your own wording — sent after one front-desk approval.
- Every Monday, reads the reminders export from your practice software in Google Sheets (up to 100 due reminders per run).
- Dates are worked out in code, never by the AI: days until or since each date, the window and business days are computed in your workflow's time zone, and records outside the window are skipped before the AI sees them.
- For each reminder due in the next 30 days or up to 30 days overdue (or your window), not yet sent and with an email, AI drafts a friendly reminder with your own wording for that item, the pet's name, the due date and your booking link.
- Items with no wording of yours are held, never written by the AI.
- The whole batch waits in Reviews; the front desk edits or holds any reminder and approves once.
- Each approved reminder is checked in code (one valid email, still marked to send, no placeholders) and by an AI wording check that stops only medical advice and health claims, then emailed with replies to your front desk, and its row is marked “sent” with the date.
What it needs
- A paid plan (agents run live on paid plans).
- An AI provider key (Settings → AI Providers).
- Google Sheets (with edit access to the sheet), connected in Settings → Integrations.
- A weekly export of your practice software's reminders into the sheet, and your approved wording per reminder item.
What it doesn't do
- It drafts and organises for a person to approve; it makes no legal, credit, medical/veterinary, permit, eligibility or coverage decision. Front-desk admin only: no medical advice or interpretation, and item names and wording are yours.
- It doesn't book appointments (owners use your booking link or call).
- Practice software (ezyVet, Cornerstone) isn't a connector, so it needs an export to the sheet.
- Nothing is sent before the front desk approves the batch. Rows whose due date it can't read are skipped (listed in the date check's not_due in the run history).
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.
- Nothing to send: the agent runs on a schedule.
- About 20 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 reminders sheet (Settings → Integrations → Google Sheets).
3. Paste your wording per item
Open “Draft the reminder (or skip)” and replace the placeholder with your booking details and your approved wording for each item. The reminder window (30 days ahead, 30 days overdue) is set in “Check the due dates”.
| Setting | What to enter | In step |
|---|---|---|
| Your practice details and wording per item | Replace the placeholder with your practice name, booking link and phone, and for every reminder item your own approved wording, plus your sign-off. The reminder window is set in “Check the due dates”. It starts as “[PASTE YOUR PRACTICE NAME, YOUR BOOKING LINK AND PHONE, AND FOR EACH REMINDER ITEM YOUR OWN APPROVED WORDING (E.G. RABIES VACCINE: “…”), PLUS YOUR SIGN-OFF HERE]” until you replace it. | “Draft the reminder (or skip)” |
4. Pick your reminders sheet
Open “Read your reminders sheet” and “Mark the row sent”, pick the same account, spreadsheet and tab in both, then enter the status column letter.
| Setting | What to enter | In step |
|---|---|---|
| Google account (read reminders) | The Google account that can open your reminders sheet. Pick your connected Google Sheets account. | “Read your reminders sheet” |
| Reminders spreadsheet | Paste the link of the spreadsheet your reminders export goes into. | “Read your reminders sheet” |
| Reminders tab | The tab with one row per pet and reminder item, e.g. Reminders. | “Read your reminders sheet” |
| Google account (mark rows) | The same Google account, used to mark each sent row. Pick your connected Google Sheets account. | “Mark the row sent” |
| Reminders (same one) spreadsheet | Paste the same spreadsheet link again, so sent rows are marked in place. | “Mark the row sent” |
| Reminders (same one) tab | The same tab name as above. | “Mark the row sent” |
| Status column letter | The letter of your empty “Status” column; the date goes in the column to its right, e.g. G. | “Mark the row sent” |
5. Add your front desk inbox
Open “Email the owner” and enter the address owners' replies should go to.
| Setting | What to enter | In step |
|---|---|---|
| Your front desk inbox (Reply-to) | Owners' replies come back to this address. | “Email the owner” |
6. Test it with Dry Run
Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.
7. Switch the trigger on
Open the trigger, set your time zone (due days are counted in it) and switch the schedule on. It runs every Monday at 8:00 — update the export before then.
How it works
The agent is a normal workflow with 15 steps (2 AI steps, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.
- Every Monday at 8:00 — Runs on a schedule (cron 0 8 * * 1, UTC — change it in the trigger's settings). Runs once a week. Set your time zone on the trigger: “today” and the reminder window are counted in that zone.
- Read your reminders sheet — Google Sheets: Read rows. Reads the reminders export from your practice software in Google Sheets: one row per pet and reminder item, with owner, email, due date and the agent's status column.
- Check the due dates — Step. In code, not AI: works out the days to each reminder's due date in your time zone and keeps only items due in the next 30 days or up to 30 days overdue. Change the window here (within.min = days overdue as a negative number, within.max = days ahead).
- Each reminder due — Repeats the steps below for each item (up to 100 per run). Repeats the draft step for every reminder the date check kept (up to 100 per run).
- [For each item — “Each reminder due”] Draft the reminder (or skip) — AI step (runs on your AI provider key). AI checks the row isn't sent yet and has an email, then writes a friendly reminder using your own wording for that item and your booking link. The due window was already checked in code.
- Approve this week's reminders — A person approves or rejects it in Reviews (the run waits). The whole batch waits in Reviews. The front desk checks each reminder, edits wording, sets send to false on any that shouldn't go and approves; nothing is sent before that.
- Batch not sent — Kept in the run history. Branch: Rejected. The front desk rejected this week's batch; nothing was sent or marked.
- Each approved reminder — Repeats the steps below for each item (up to 100 per run). Branch: Approved. Repeats the wording check, the code checks, the send and the row update for every reminder in the approved batch.
- [For each item — “Each approved reminder”] Final check on the wording — AI step (runs on your AI provider key). AI reads each approved reminder for medical advice or health claims slipped in during editing — naming the item, the pet and the due date and inviting the owner to book are fine. It must quote the exact sentence it objects to.
- [For each item — “Each approved reminder”] Check before sending — Step. In code: drafted to send, still marked to send, exactly one valid email, a row number, and a subject and body with no placeholders left — plus the wording check's verdict. Anything that fails is held, with the reason.
- [For each item — “Each approved reminder”] Send it? — Decision: picks the branch to follow. Reminders that pass every check are emailed and their row marked “sent”; the rest are held for the front desk, with the reason.
- [For each item — “Each approved reminder”] Email the owner — Sends an email from your workspace's sender. Branch: Passes. Sends the approved reminder from your workspace's sender, with replies going to your front desk.
- [For each item — “Each approved reminder”] Mark the row sent — Google Sheets: Update a row. Writes “sent” and today's date into the reminder's row, so it isn't sent twice.
- [For each item — “Each approved reminder”] Not sent — Kept in the run history. Branch: Held. Skipped, on hold, set to not send or stopped by a check; the reason (send_check.reason) is in the run history.
- Batch done — Kept in the run history. The run history keeps every reminder sent and any held or failed, with the reasons.
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.
- 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.
- For-each loops repeat only the first 3 items.
Go live
- Open the trigger, set your time zone (due days are counted in it) and switch the schedule on. It runs every Monday at 8:00 — update the export before then.
- Scheduled runs start only once the schedule is activated, and can't repeat faster than your plan's minimum interval.
- 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
Does it connect to ezyVet or Cornerstone?
No: practice software isn't a connector. Export your reminders list to the Google Sheet each week (or paste it in); the agent reads it on Monday morning.
Who writes the health wording?
You do. Each reminder item (e.g. rabies vaccine, dental check, heartworm test) uses the wording you paste in; items without wording are held, never written by the AI.
What should the sheet have?
One row per pet and item: Pet, Owner, Email, Reminder item, Due date, plus two empty columns at the end for the agent (Status, Sent on). Dates like 2026-11-02, 11/02/2026 or November 2, 2026 all work. Up to 100 due reminders are drafted per run, so keep sent rows in another tab or replace the export each week.
How is the reminder window worked out?
In code, not by the AI: the agent counts the days from today (in your trigger's time zone) to each due date and keeps items due in the next 30 days or up to 30 days overdue. To change it, open “Check the due dates” and edit within.min / within.max.
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.
- It didn't run at the expected time: the schedule must be activated, and its time is in the trigger's timezone.
- 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 .