AI voice agents for tax-season appointment scheduling book clients into the preparers' live calendars by appointment type, read each booking back and write it once to the firm's system. They verify the client before reading or moving an existing appointment. Any question about the caller's own return, including whether to file an extension, goes to a preparer.
Key Takeaways
- Offer only the slots the firm's calendar returns, by appointment type.
- A workflow_run_id on the booking tool stops a repeated request double-booking.
- Extension and refund questions go to a preparer, in a fixed hand-off line.
This post is part of our guide to AI voice agents for tax and accounting firms. The guide's section "Before the work: booking and engagement letters" sums up this call: it books from the preparers' live calendars and writes the booking to the firm's system. Here is that call in full, run in Dograh, an open-source, self-hostable voice agent platform.
Why booking calls pile up before the deadline
Preparer time runs out in the last weeks of the season, so every open slot matters. The IRS's weekly figures show tax professionals had e-filed 52.8 million returns by the first week of April and 72.8 million two weeks later. That is about 20 million returns in two weeks.
Clients call to book or move appointments in those same weeks. An agent that answers every booking call offers the soonest real slot and fills cancelled ones.
Book by appointment type from the live calendar
The agent books from the firm's own calendar, so it never offers a time the firm cannot keep. Dograh has no built-in calendar integration. An HTTP API tool asks the firm's scheduler for open slots, and the agent offers only what comes back.
Each kind of appointment needs different time and people. A new-client meeting needs a preparer and the longest slot, while a document drop-off needs only the front desk. A returning-client review and a return signing sit in between. Tell the agent in the prompt to ask which one the caller needs first, send that type with the slot request, and offer two times at once.
The HTTP API tool's Custom Message (text or a recorded clip) plays once, just before the tool runs. The tool waits 5 seconds by default and does not retry, so tell the agent in the prompt to offer a callback if it returns an error.
Before writing, the agent reads back the day, the time, the appointment type and the office. Then a second HTTP API tool writes it once. Give that tool a Preset Parameter named workflow_run_id with the value {{initial_context.workflow_run_id}}. If the caller repeats themselves or the tool is called twice, the firm's system sees the same ID and books once.

A slot can also go between the offer and the write. If the write fails, the agent reads the calendar again and offers the next time. Our post on booking meetings mid-call with Calendly shows the same read-then-write pattern against a scheduling API, and legal appointment scheduling adds a conflict check before the consult.
A new client also needs to know what to bring. After the booking, an HTTP API tool asks the firm's own system to send its checklist and portal link by text or email, since Dograh sends no texts itself. Documents never come through the call, and document-collection reminders in accounting covers the chase that follows.
Open Source Alternative to Vapi / Retell
Self-hosted voice agent platform — no per-minute fees
dograh-hq/dograh
Star on GitHub
Moving an existing appointment: verify first
An existing appointment is client information, so the call runs greet, verify, then disclose. A phone number finds the record but does not prove who is holding the phone, and a spouse or bookkeeper often answers.
The regulations under IRC 7216 count more than the return itself. 26 CFR 301.7216-1 says tax return information includes "a taxpayer's name, address, or identifying number, which is furnished in any form or manner for, or in connection with, the preparation of a tax return". An appointment booked for a return generally carries some of it. Confirm your own position with counsel.
So before the agent reads back or moves an appointment, it confirms identity with a check the firm approves, such as date of birth. Recordings and transcripts keep whatever is said, so the call never asks for a full account, card or Social Security number; use a short check such as the last four digits, and send payment links by text or email from your own system. If the check fails, the agent offers a callback from the office and says nothing about the appointment.
Pre-Call Data Fetch can load the client's appointments as the call connects. Write the prompt so the agent uses none of it until the check passes. When a client moves an appointment, write the new slot first and release the old one second, so a failed write never leaves them with nothing.
Extension questions go to a preparer
Near the deadline, booking calls turn into tax questions. The rule for every call is that the agent never gives tax advice, and any question about the caller's own return goes to a preparer. "Should I file an extension instead?" and "Will I still get my refund?" both get the same answer, that a preparer will call back.
Tell the agent that in the prompt, but a prompt alone cannot guarantee the words. Models avoid a banned phrase and still say its meaning, such as "an extension is usually fine". So the hand-off line lives in a pathway's Transition Speech, the fixed text or recorded clip Dograh plays when the call moves along a pathway. The pathway leads to a callback request written through an HTTP API tool.
Extensions carry money, which is why a preparer decides. The IRS page on when to file says: "An extension of time to file is not an extension of time to pay." The agent can still book the client a slot, and the callback request notes that the client asked about an extension.
To hand the call over instead, 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. General questions, such as office hours, belong to AI voice agents for tax-season call overflow.
Reminder calls before the appointment
A reminder the day before frees slots while another client can still take them. Export tomorrow's appointments from the scheduler and upload them as a CSV to Campaigns, or start each call from the scheduler with the API Trigger.
Consent generally comes first. In its February 2024 declaratory ruling, the FCC said calls using AI-generated voices "require the prior express consent of the called party to initiate such calls absent an emergency purpose or exemption." Record that consent in the firm's system, and confirm your position with counsel.
Calling hours are set by weekday in one time zone per campaign (UTC by default), so split clients by time zone. Retries run from 0 to 10, 2 by default, with a delay from 30 seconds to an hour. Campaigns have no per-contact call cap, so the firm's own list decides how often anyone is called. For lists that change daily, start calls from your own system with the API Trigger, so your system decides who is called.
A fixed greeting per contact, as text or a recorded clip, can come from the campaign file, and contacts without one hear the agent's normal greeting. It plays before verification, so it carries the firm's name and the client's name only. Voicemail handling is off by default. Turn it on in Settings, and if you choose Leave a message, the message gives the firm's name and a callback number, never the appointment. A cancellation on the call frees the slot through an HTTP API tool at once.
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.
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
- Appointment type
- The kind of visit a caller needs, such as a new-client meeting, a returning-client review, a document drop-off or a return signing. The agent sends it with the slot request, so the calendar returns only times with the right length and the right person.
- workflow_run_id
- Dograh's ID for one call, added to the booking tool as a Preset Parameter. The firm's scheduler uses it, with the slot, to ignore a repeated booking request from the same call.
- Transition Speech
- Fixed text or a recorded clip that Dograh plays when a call moves along a pathway. A tax firm puts its no-advice hand-off line there, because a generated reply cannot guarantee wording.
- Tax return information
- Under the IRC 7216 regulations, information given to a preparer for a return, down to the client's name, address or identifying number. An appointment booked for a return generally carries some, so the agent verifies before reading it back.

