Dograh

AI Voice Agents for Vet Appointment Booking & Vaccination Reminders

AI Voice Agents for Vet Appointment Booking & Vaccination Reminders
Use CaseOctober 24, 2026·8 min read

AI Voice Agents for Vet Appointment Booking & Vaccination Reminders

Vemu Sandeep
Vemu Sandeep·GTM Engineer, Dograh AI

GTM engineer at Dograh working across voice AI and enterprise AI. IIT (BHU) and IIM Visakhapatnam alumnus.

AI voice agents for vet appointment booking and vaccination reminders answer owners who call to book and call owners whose pets are due for vaccines. After checking the owner, they read open slots and due items from the practice management system, book only what it returns and write each booking back. Reminder calls need the owner's consent.

Key Takeaways

  • Offer only slots the practice system returns, and book every pet in one call.
  • Name no pet or vaccine until the owner passes an approved check.
  • Call owners who ignored the clinic's own text, with consent on file.

This post is part of our guide to AI voice agents for veterinary clinics. The guide's section "Booking visits and vaccination reminders" sums up both calls in one line: "The booking call books visits only from slots the practice system returns, and the reminder call books the due vaccine in the same call." Here are both calls in full, run in Dograh, an open-source, self-hostable voice agent platform.

Why booking and reminder calls suit an agent

Booking and reminder calls have an answer in the clinic's own records, which is the kind of call an agent should take. The American Pet Products Association reports that 95 million US households own a pet, from its 2025 National Pet Owners Survey. Many of those owners still book by phone. A booking call needs an open slot and a reminder call needs a due date, and both live in the practice management system (PMS).

Most reminders do not need a call. The PMS already sends its own text or email, and Dograh has no SMS tool, so the text stays with the PMS. The call is the second step, for owners who did not respond. Grooming and boarding run from a different calendar with different rules, covered in our post on pet grooming and boarding bookings.

The vet appointment booking call, pet by pet

The booking call offers only times the practice system returns, so it never invents a slot. The call opens with Greeting Text, fixed words Dograh speaks exactly as written when the call connects, naming the clinic. If you want to tell owners they're speaking with an automated assistant, or your location requires it by law, write that in the Greeting Text too.

Next the agent finds the client. A phone number can find a record, but it does not prove who is calling. So before it names any pet, the agent asks for an approved check, such as the postcode on file or the last digits of the account number. Then it asks what each pet needs.

An HTTP API tool asks the PMS for open slots, one appointment type at a time, and the agent offers only what comes back. ezyVet's booking guide shows the usual order: check availability for the appointment type, resource and time range, then create the booking. In ezyVet the booking also creates the linked consult and applies the appointment type's billing triggers, so the type matters. Tell the agent in the prompt which reasons map to which types, and to pass any reason it cannot map to staff.

The agent books one pet at a time and reads each booking back: the pet, the day, the time and the vet. A second HTTP API tool writes each booking. Add a Preset Parameter named workflow_run_id with the value {{initial_context.workflow_run_id}}, so the PMS can ignore a repeat of the same booking.

An owner with a dog and a cat calls; the agent asks the practice system for open slots for each pet's visit type, offers only the open ones, then books the dog and then the cat, each confirmed.
A time the agent makes up can clash with a booked slot or the wrong vet, and the owner turns up to no appointment. If the booking tool doesn't return success, the agent says the clinic will call to confirm instead of naming a time.

HTTP API tools wait 5 seconds by default and do not retry. Tell the agent in the prompt never to confirm a time unless the booking tool returned success, and otherwise to say the clinic will call to confirm. A call about a pet that is unwell right now goes somewhere else. It takes an emergency pathway whose Transition Speech plays the clinic's fixed line, "If your pet is having an emergency, please call your nearest emergency vet now", and the path set out in AI voice agents for after-hours vet triage calls.

Who gets a reminder call, and when

The reminder list comes from your PMS, and the call goes only to owners who did not answer the clinic's own text or email. Export the pets due within your window, with consent to calls on file and opt-outs removed. Upload the list as a CSV to Campaigns. Each extra column, such as the clinic's name, becomes a variable the agent can use. Or start each call from your own system with the API Trigger.

Campaigns set calling hours by weekday, in one time zone per campaign, so a group with clinics in two time zones runs two campaigns. Retries run from 0 to 10, 2 by default, with a delay between 30 seconds and an hour. Our post on dental recall and recare outreach uses the same limits for overdue patients.

To stop calling someone mid-campaign, pause the campaign and start a new one from a corrected list. For lists that change daily, start calls from your own system with the API Trigger, so your system decides who is called. Pre-Call Data Fetch can re-read the pet's status once the owner answers, so the agent can change what it says, but it never skips the call.

Voicemail handling is off by default. Turn it on under Voicemail & Screening in the agent's Settings; "Disconnect the call" is then preselected, so choose "Leave a message" instead. Keep any message to the clinic's name and a number to call back, and never name the pet or the vaccine.

Dograh

Open Source Alternative to Vapi / Retell

Self-hosted voice agent platform — no per-minute fees

dograh-hq/dograh

Star on GitHub

The reminder call: verify, name the due item, book

The reminder call checks the owner before it says anything about a pet, then books the due item in the same call. A fixed greeting per contact, as text or a recorded clip, can come from the campaign file; contacts without one hear the agent's normal greeting. That greeting plays before the owner is checked, so it carries the clinic's name and the owner's first name, with a fallback such as {{first_name | there}}, and nothing about the pet.

The agent asks for the owner on the account, then for the approved check. If the check fails, or someone else answered, it leaves the clinic's number and says nothing more. Only after the check does the agent read what each pet is due for, such as a rabies booster for one dog and an annual exam for the other, exactly as the PMS names it. Then it offers open slots and books them the same way as an inbound call.

The agent never advises on the vaccine itself. An owner who asks whether an older or unwell pet should have it gets a callback request written to the PMS for the vet or a technician. An owner who says the pet was vaccinated elsewhere has that recorded as stated, and staff update the record.

Reminder calls generally need the owner's consent before the first call, and a vet clinic generally cannot lean on the health-care exception. This section is general information, not legal advice.

The FCC's calling rule bars calls to a mobile number made "using an automatic telephone dialing system or an artificial or prerecorded voice" without "the prior express consent of the called party". Its exception for "a call that delivers a 'health care' message made by, or on behalf of, a 'covered entity'" refers to entities covered by HIPAA, which is written around people. A vet clinic is generally not one.

In its February 2024 declaratory ruling, the Federal Communications Commission (FCC) said AI-generated voices count as artificial voices. So capture consent to reminder calls at registration, in writing. Confirm your position with counsel.

Dograh keeps no do-not-call list. When a caller opts out, an HTTP API tool writes it to your own list, and you remove those numbers before the next campaign upload. The do_not_call call tag records the request but never blocks a later call.

Some owners need a person, for example about cost. Transfer Call works on Twilio, Telnyx and Asterisk ARI. It passes no summary by default; on Twilio it can play a short spoken introduction to both people. Write the details to your system with an HTTP API tool before the transfer. If nobody answers, the caller stays with the agent; tell it in the prompt to offer a callback. The callback request goes to the PMS the same way.

Self-hosted Dograh has no per-minute platform fee (servers, model keys and phone minutes still cost); Dograh Cloud has a 1¢-a-minute platform fee.

Join the Dograh Community

Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.

Glossary

Live slot
An open appointment time the practice system returns at the moment of the call. The agent offers only these, so it never promises a time the schedule does not have.
Appointment type
The practice system's label for a kind of visit, such as a vaccine visit or a sick-pet exam. It sets which slots are open and, in ezyVet, the consult and billing a booking creates.
Prior express consent
The called person's agreement, given before the call, that the TCPA rule requires for calls to a mobile number using an artificial voice. A vet clinic generally captures it at registration.
Calling hours
The weekday time windows a Dograh campaign may dial in. They use one time zone per campaign, so a group with clinics in several time zones runs separate campaigns.

Frequently Asked Questions

Get started with Dograh

Build, deploy, and scale AI agents with Dograh. Join the community of developers building the future.