AI voice agents for waitlist and cancellation-fill calls in behavioral health call the next client your scheduling system names when a session opens, verify them, and book from live slots. On voicemail, or with anyone but the client, they give only a first name, the practice's neutral name and a callback number, and nothing about therapy.
Key Takeaways
- Your scheduling system picks who is next, and the agent never judges urgency.
- Voicemails carry a first name, a neutral practice name and a callback number.
- One call per opening and an endpoint that rejects taken slots prevent double-booking.
This post is part of our guide to AI voice agents for mental and behavioral health. Below, we cover who gets called when a session opens and what a voicemail may say. Then we set up the fill call in Dograh, the open-source AI voice agent platform we build.
Why a freed session needs a call today
A cancelled session is an hour someone on your waitlist has been waiting weeks for, so it is worth filling the same day. In a secret shopper study of mental health networks published in JAMA Health Forum in October 2026, the mean wait for an appointment with a psychiatrist or psychologist was 20.5 days. Capacity limits stopped scheduling on 21.6% of the calls the researchers could evaluate.
The same study shows how calls usually end. 61.3% of its calls could not be evaluated, most often because the caller reached only an answering machine or an automated system. For a fill call, that means voicemail is a normal outcome, so the message is a design decision you make before the first call.
Many freed slots come from reminder calls, where a client says they cannot make it and the session is released. Our post on healthcare no-show reduction covers that side. This post starts at the moment the slot is free.
Your system picks who is next
Your scheduling system decides the order, using rules your practice sets, and the agent follows it. Typical rules are time on the list, a match with the clinician whose slot opened, whether the practice accepts the client's insurance, and whether the client wants telehealth or in person. The agent never decides who is more urgent. That is a clinical judgment, and it stays with your team.
One call per opening works best. The API Trigger lets your scheduling system start a call to the first client on the list, with the slot details in the request. When the call ends, a Webhook node sends the result back. If the client declined or did not answer, your system starts the next call. Only one client hears about a slot at a time, so two people are never offered the same hour.

A campaign is the other route. Set Max Concurrent Calls to 1 so calls go out one at a time, and pause the campaign through the API once the slot is booked. Set retries to 0, because a retry an hour later may offer a slot that is gone. Campaigns have no per-person call cap, and a campaign's calling hours run in one time zone, so your list decides how often each client hears from you.
Verify, then book the slot once
The call names nothing until the client passes a check, and then it books the slot exactly once. The Greeting Text says the client's first name and the practice's neutral name, for example "Hi {{first_name | there}}, this is Riverside Health." The fallback matters, because a missing name would otherwise be spoken as empty text.
Asking for someone by name only finds them. Before the slot is described, the agent runs the practice's approved check, such as date of birth together with the ZIP code on file. If someone other than the client answers, the agent asks for the client by first name, leaves only the callback number, and ends the call. It says nothing about sessions or about what the practice does.
Once the client passes, the agent offers the open slot and books it through an HTTP API tool that calls your scheduling system. Add a Preset Parameter named workflow_run_id with the value {{initial_context.workflow_run_id}}, so your system can ignore a repeated request for the same call. HTTP API tools do not retry on their own, and they wait 5 seconds by default before reporting an error to the agent.
If another client took the slot a moment earlier, the booking endpoint rejects it. The agent then offers the next live slot your system returns, or tells the client they keep their place on the list.
Open Source Alternative to Vapi / Retell
Self-hosted voice agent platform — no per-minute fees
dograh-hq/dograh
Star on GitHub
What a voicemail may say
A voicemail can be heard by anyone near the phone, so it says a first name, the practice's neutral name and a callback number. Voicemail handling is off by default in Dograh. Turn on "Enable voicemail and screening handling", then set "When voicemail is detected" to "Leave a message". Use this message as text or a recording:
"Hi {{first_name | there}}, this is [neutral practice name]. Please call us back at [number]. Thank you."
Variables fill in on a text message, so the fallback works here too. The neutral name is one the client agreed to when they joined the list, which matters when the legal name says counseling or recovery. Voicemail detection runs only on agents that chain speech-to-text, a language model and text-to-speech, not on speech-to-speech agents.
Some clients will ask for no messages at all. The Health Insurance Portability and Accountability Act (HIPAA) lets clients ask for confidential communications, such as calls to another number only, and providers must accommodate reasonable requests. Store that choice on the waitlist record. The voicemail action is set per agent, so run those clients on a separate agent set to "Disconnect the call".
Substance use programs have a further reason for care. Under the Confidentiality of Substance Use Disorder Patient Records rules (42 CFR Part 2), someone who has applied for treatment counts as a patient. A voicemail or a word to a housemate that names the program generally counts as a disclosure.
Join the Dograh Community
Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.
Consent, crisis words and the call data
A fill call is about care the client asked for, so the consent question is simple as long as the call stays on the slot. Under the Telephone Consumer Protection Act (TCPA) rules, an AI voice counts as an artificial voice. A call about something the person already has, such as their place on your list, is generally informational and needs prior express consent, which clients usually give with their number when they join. Any offer of a new service makes it telemarketing, which needs prior express written consent, so keep offers off fill calls and confirm your setup with counsel.
Sometimes a client says something on a fill call that sounds like crisis. The agent stops the booking and takes the crisis pathway, with fixed words and a transfer to a person, as set out in AI voice agents for after-hours calls and crisis routing in behavioral health.
Fill calls carry names and appointment times, so many practices keep them on their own servers. Dograh is self-hostable, and self-hosted, no business associate agreement with Dograh is needed. 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.
Before the first live fill, call a staff phone with voicemail turned on and listen to the message as a housemate would. If anything in it hints at therapy, change it before a client's phone plays it.
Glossary
- Confidential communications
- A client's right under HIPAA to ask a provider to contact them another way, such as at a different number or with no messages. The waitlist record stores the choice, and the call list follows it.
- Neutral practice name
- A name the client agreed to hear on calls and voicemails, used when the practice's legal name says counseling or recovery. It keeps a voicemail from revealing care.
- workflow_run_id
- The ID of one Dograh call, sent with the booking request as a Preset Parameter. Your scheduling system uses it to ignore a repeated booking from the same call.

