AI voice agents for home-services appointment booking answer the customer's call, check the service area and job type, read live arrival windows from the field-service software and offer only those. They read the details back, write the job, and call it booked only once the software returns a job number. Emergencies get a fixed safety line, then a person.
Key Takeaways
- Offer only arrival windows the field-service software returned during the call.
- Call it booked only when the software returns a job number.
- Start with a short list of job types the agent may book.
This post is part of our guide to AI voice agents for solar and home services. The guide's "Booking the job and handling changes" section sums up this call in one line: it offers only the slots the field-service software returns, and confirms only when the software returns a job number. Here is that call in full, built on Dograh, an open-source, self-hostable voice agent platform.
What the booking call has to get right
The booking is the call most worth automating first, because it ends in revenue and it starts with the customer. Even a well-run agent will not finish every booking alone: some callers still need a person, so the handover matters as much as the booking.
Speed is the other half. In Jobber's 2026 Home Service Trends Report, a December 2025 survey of 1,050 US home service business owners, owners say over 70% of customers expect a same-day response. A customer with no heat at 7 p.m. books whoever answers.
How the call runs, from address to arrival window
The call follows the job record from the first word. It opens with Greeting Text, the fixed line Dograh plays word for word, naming the business. Pre-Call Data Fetch, set to Inbound calls only, looks up the caller's number in the field-service management (FSM) software as the call connects. If the company runs one number per trade or branch, each number can point at the same agent, and the number dialled reaches the lookup as to_number.
A phone number finds a record but does not prove who is calling. Write the prompt so the agent uses none of that record (nothing from it is spoken) until the caller is verified: before it mentions a past job, it asks the caller to state the service address on the account and compares it with the record. A new caller has nothing to verify; the agent takes their name and address.
Then the agent works through the booking. An HTTP API tool checks whether the ZIP code is in the service area. The agent takes the job type from your allowed list, asks what is happening and how urgent it is, and records the answers as the customer stated them. A second tool reads open arrival windows, with a short line set in the tool's Messages, such as "Let me check the schedule", so the customer is not left in silence. The agent offers two or three windows and nothing else.
Before writing, the agent reads back the job type, the date, the arrival window and the address. It collects access details such as a gate code, a dog in the yard, who will be home and where to park. Then a third tool writes the job. The booking counts only when the FSM returns a job number, and the agent reads that number to the customer.

Two settings protect the write. Add a Preset Parameter named workflow_run_id with the value {{initial_context.workflow_run_id}}, so the FSM, or a small service in front of it, can ignore a duplicate if the same request arrives twice. HTTP API tools also do not retry on their own: after a 5-second default timeout the agent gets an error, so tell it in the prompt to say the office will confirm and write a callback request instead of guessing. Our post on booking meetings mid-call shows the same read-then-write pattern for a calendar slot.
Open Source Alternative to Vapi / Retell
Self-hosted voice agent platform — no per-minute fees
dograh-hq/dograh
Star on GitHub
Start with a short job list, and never price the repair
The agent books routine jobs well when the list it may book is short. Capacity is the real limit: an agent can only book the slots your schedule has open, which is why it reads live windows instead of promising a time.
Start with a short list, such as tune-ups and drain clearing, and send anything else to a person. The agent never diagnoses a fault or prices a repair. Homeowners do want the money talk up front: in a Housecall Pro survey of more than 1,000 US homeowners, reported by Contractor Magazine in December 2025, 97% said they expect transparent pricing before they commit. The agent can read a fixed trip or diagnostic fee from your price list through an HTTP API tool, and the repair price waits for the technician.
Car service has the same rule; AI Voice Agents for Service Appointment Booking in Automotive makes it for bays. At home the difference is the address, the arrival window and the access details.
Emergencies and handovers
A booking call can turn into an emergency in one sentence. A caller who reports a gas smell, a carbon monoxide alarm, active flooding or a sparking panel hears a safety instruction your business approved, never one the language model wrote. Put it in fixed text, a pathway's Transition Speech or the Transfer Call tool's Pre-Transfer Message, set before the transfer, so the caller hears it even if nobody answers.
Transfer Call then reaches the on-call technician. Its number can come from a Dynamic HTTP Resolver, where your rota system returns whoever is on call. Transfer Call works on Twilio only and passes no summary, so the agent writes the details to the FSM first. If nobody answers within the 30-second default, the caller stays with the agent; tell it in the prompt to offer a callback and write the request through an HTTP API tool.
Jobs outside the allowed list, angry callers, disputes and refund requests go to a person the same way. A tenant reporting a repair to a property manager is a different call, covered in AI voice agents for maintenance-request intake. For nights and weekends, AI voice agents for after-hours coverage covers the overflow.
Join the Dograh Community
Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.
Where to start
Start with inbound booking on two or three routine job types, during the hours your office is busiest. Dograh has no SMS tool, so the confirmation text comes from your FSM or messaging provider, triggered by the write or by an HTTP API tool during the call. When a customer calls back to move the visit, the next call is in AI voice agents for reschedule and cancellation handling in home services.
Test on a real phone line before customers hear it, then run the QA node on a random sample of live calls and read the transcripts for windows the FSM never returned. 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.
Glossary
- Field-service management (FSM) software
- The system a home-services company runs on, such as ServiceTitan, Jobber or Housecall Pro, holding customers, jobs, technician schedules and service agreements. The booking agent reads open arrival windows from it during the call and writes the job back to it.
- Arrival window
- The span of time in which the technician will arrive, such as 8 to 11 a.m., instead of a fixed appointment time. The agent offers only windows the FSM returned and reads the chosen one back before writing the job.
- Diagnostic fee
- A fixed charge for sending a technician to find the fault, also called a trip fee. The agent can read it from the price list before booking, but it never prices the repair itself.
- Preset Parameter
- A value Dograh adds to every request an HTTP API tool sends. Setting workflow_run_id as one lets the FSM recognise a repeated booking request from the same call and ignore the duplicate.

