A seven-surgery dental practice in Bristol tracked their missed call rate for six weeks. Of 412 calls received after 5:30pm and before 8:30am, 178 went to voicemail. Ninety-two of those callers rang back the following morning. The other 86 booked elsewhere. At an average private new-patient value of £340, that was £29,240 in lost bookings over six weeks — from voicemail alone, before counting NHS recall non-attendance or failed hygiene rebookings.
We built their after-hours booking agent in eighteen days. Stack: Twilio for telephony, Deepgram for speech-to-text, ElevenLabs for voice synthesis, GPT-4o for call logic, and a direct REST write into SOE Dental's Exact system. After-hours booking conversion went from 0% (voicemail, no callback) to 41% of after-hours calls ending in a confirmed appointment slot. Here is the architecture, the compliance constraints, and where it nearly broke.
Call volume anatomy at a UK dental practice: where the 280 weekly calls come from and which ones a voice agent handles
At a mid-size six-to-eight-surgery practice, 280 weekly calls break down roughly as: appointment booking for new patients (35 calls), appointment changes for existing patients (90 calls), recall enquiries from patients who received a letter (45 calls), clinical queries about pain or broken fillings (40 calls), prescription and referral admin (20 calls), insurance and billing questions (25 calls), and miscellaneous or misdirected calls (25 calls).
A voice agent handles four of these categories confidently: new appointment booking, appointment changes, recall scheduling, and billing queries with a pre-approved answer script. Clinical queries must route to clinical staff — the agent cannot diagnose or advise. Prescription queries are automatable if the call is about status or timing, not if a clinical decision is involved.
The 40% after-hours figure is not unusual. Our appointment booking guide covers the timing data across practice types, but the pattern is consistent: calls from working adults cluster around 7–9am and 5–8pm, both outside standard reception hours at most practices.
NHS vs private appointment routing: the branching logic that separates SOF code booking from private diary allocation
The first branch in any dental voice agent is NHS or private. Get it wrong and you book NHS patients into private diary columns, or private patients into NHS-restricted slots, which breaks UDA contract compliance.
The routing sequence:
- Ask for patient date of birth and surname
- Look up in PMS by those two fields
- If patient record has an NHS number → NHS routing branch, NHS diary column
- If no NHS number or patient states private → private routing branch
- If new patient → ask: "Are you looking to register as NHS or private?"
NHS patients go to NHS-designated diary columns in Exact or SOE — columns with SOF codes attached. Private patients route to the principal's private diary. At practices with mixed supply, the agent also needs current NHS vacancy status. Most practices have a waiting list for NHS registrations, so the correct response is: add them to the waitlist and offer a private assessment slot if they want to be seen sooner.
Never assign UDA values inside the voice agent. UDA allocation is a clinical decision made at treatment planning stage.
After-hours booking script design: converting a voicemail-or-hang-up into a confirmed appointment slot
The after-hours flow has one objective: get a confirmed slot before the call ends. Do not prompt for full medical history — that comes from the paper form at the appointment. Do not ask for payment details. Ask only what the PMS needs to create a record.
Minimum required fields for most PMS booking endpoints: patient first and last name, date of birth, contact number, appointment type (new patient exam, emergency, hygiene), and preferred date and time range.
Here is the Retell call flow config node for the confirmation step, which we use across dental builds:
{
"node_id": "confirm_booking",
"type": "llm_response",
"prompt": "You are the after-hours booking assistant for {practice_name}. You have collected: patient name {patient_name}, DOB {patient_dob}, phone {patient_phone}, appointment type {appt_type}. The next available slot is {next_available_slot}. Confirm this with the patient. If they accept, set booking_confirmed=true. If they want a different time, offer {alt_slot_1} or {alt_slot_2}. Do not make clinical assessments. If the patient mentions pain, swelling, or difficulty breathing, say: 'For a dental emergency, please call 111 now. I will make sure the practice calls you first thing in the morning — can I confirm your number?' Set emergency_flagged=true.",
"variables": {
"booking_confirmed": false,
"emergency_flagged": false,
"selected_slot": null
},
"on_complete": "write_to_pms"
}
The emergency escalation clause is not optional. CQC expects any patient-facing digital system to have a documented clinical safety pathway — see the voice agent call recording and consent guide for how we handle the logging and consent layer around these escalations.
Practice management software integration: connecting to Exact, SOE Dental, and Carestream as booking backends
Three PMS systems cover the majority of UK dental practices. Here is how they compare for voice agent integration:
| System | API type | Write access | Real-time availability | Onboarding time |
|---|---|---|---|---|
| SOE Dental / Exact | REST (Developer Programme) | Yes | Diary polling ~60s | 2–4 weeks |
| Carestream CS R4+ | Partner API (application) | Yes with credentials | Webhook subscription | 3–5 weeks |
| Dentally | REST, API-first | Yes | Event-driven | 2–5 days |
| Practice Web | Web form injection only | Indirect | No | N/A |
For Exact — the most common system in UK multi-surgery practices — authentication uses OAuth 2.0 client credentials. The appointment creation call looks like this:
POST /api/v1/appointments
Authorization: Bearer {access_token}
Content-Type: application/json
{
"diary_id": "SRG_02",
"patient_id": "P-00471",
"appointment_type_code": "NPE",
"start_datetime": "2026-10-15T09:30:00",
"duration_minutes": 45,
"booked_by": "voice_agent_afterhours",
"notes": "Booked via after-hours agent. Patient confirmed slot by phone 2026-10-02 21:14."
}
Set booked_by to something identifiable. Reception staff need to see at a glance which bookings came from the agent versus the website form versus the phone. Dentally's API is the cleanest of the three — it was designed for integrations from the start, and availability checks are event-driven rather than polled. For our comparison of telephony platforms that sit upstream of the PMS write, see the Twilio vs Retell vs VAPI breakdown.
ICO registration and NHS IG Toolkit requirements: what patient data a voice agent can collect and where it must be stored
Patient name, date of birth, NHS number, and appointment type are special category data under UK GDPR Article 9 (health data). Processing them through a voice agent has four practical consequences.
ICO registration update: Add AI voice processing as a new processing activity in your existing ICO registration. Takes ten minutes, no extra fee.
DPIA: A Data Protection Impact Assessment is required before go-live for new special category processing. Document what data is collected, where it is stored, retention period, who has access, and risk mitigations.
NHS DSP Toolkit: Practices with NHS contracts must maintain their Data Security and Protection Toolkit submission. Adding a voice platform provider is a new third-party vendor relationship that requires assessment against the toolkit's supplier assurance standard.
Data residency: Call recordings and transcripts must stay in the UK or EEA. Twilio UK and EU data regions are compliant. When configuring Retell or a custom broker, specify UK data residency explicitly — the default endpoint may be US-hosted.
The ICO's guidance on AI and data protection covers lawful basis choices in section 4. For dental booking, the lawful basis is typically contract performance for existing patients, and legitimate interest for new patient outreach — but document your balancing test.
6-month recall campaign design: the outbound voice programme that fills the forward appointment book 90 days out
NHS recall is contractually required. Private recall is revenue protection. Both use the same outbound infrastructure; the script branches by patient type.
Three-wave recall structure:
- Wave 1 (90 days out): Outbound call offering a specific appointment slot. Voicemail drop if no answer — we use a 28-second pre-recorded message that includes the practice name, the patient's first name, and a direct callback number.
- Wave 2 (75 days out): SMS follow-up with a booking link, for wave-1 non-responders only.
- Wave 3 (60 days out): Second call attempt. Letter sent if still no contact.
At a six-surgery practice running recall on 800 patients due in the next quarter, this is roughly 2,400 contact attempts across three waves. A receptionist at four minutes per call would need 160 hours. The voice agent runs overnight.
Outbound recall booking rate from voice: 34–42% in the practices we have run, compared with 18–22% for SMS-only recall. The variable that matters most is whether the agent can offer a confirmed slot on the call versus routing to a general "call us back" prompt. For the broader mechanics of cutting no-shows with appointment reminders, the same confirmation-on-call principle applies across practice types.
For the inbound side of the same patient journey — handling the return calls that recall campaigns generate — see our inbound customer service voice agent guide.
Objection handling for dental voice agents: price queries, appointment anxiety, and the 'I'll call back tomorrow' response
Three objections account for most failed recall bookings.
"How much will it cost?" The agent cannot quote treatment costs before clinical assessment. Correct script: "The check-up appointment is [£X / covered by your NHS contract]. Any treatment costs will be discussed at the appointment after your dentist has assessed what you need." Do not dodge the question — that reads as evasive and callers hang up.
"I'm nervous about the dentist." Flag this in the appointment notes and respond: "Our team works with lots of nervous patients — would you like me to note that for the dentist so they can take extra time with you?" This converts at nearly double the rate of ignoring the concern, and the note costs nothing to add.
"I'll call back tomorrow." This is the most expensive objection. Callback rates from recall calls drop below 10% once the moment has passed. The agent's response: "I can book you a provisional slot right now — it takes 30 seconds and you can always reschedule if the time does not work. Want me to hold one for you?" A confirmed provisional booking beats a stated callback intent by a significant margin.
What changed in 2025–2026: CQC digital service requirements and NHS dental contract reforms affecting recall compliance
CQC Digital Safety Framework (2025): The CQC's updated guidance on AI in general practice and dental settings now explicitly covers automated patient-facing communication systems. From April 2025, CQC inspectors can request evidence that any such system has a documented clinical safety case, a named clinical safety officer, and a tested escalation pathway for clinical concerns. "It says call 111" is not a sufficient answer without a logged test of that pathway and a signature from your clinical safety officer.
NHS dental contract reform pilots (2026): The DDRB 55th Report and the ongoing NHS England contract reform pilots have introduced greater UDA target flexibility. More practices are now accepting NHS registrations they previously could not take. If your practice recently opened NHS new-patient slots, audit your voice agent's routing logic — the NHS/private branch for new patients may need updating from "we have a waiting list" to "we have availability."
Good / Bad / Ugly: three dental booking agent designs and their after-hours conversion rates from missed-call to booked slot
| Design | After-hours conversion | What it did well | What failed |
|---|---|---|---|
| Good — Dental-specific persona, natural name/DOB collection, real-time Exact write, emergency escalation documented and tested | 38–44% of after-hours calls → confirmed booking | Natural conversation flow, SMS confirmation sent post-call, nervous-patient flag written to appointment notes | Exact Developer Programme credentialing took three weeks; agent went live later than planned |
| Bad — Generic press-1/press-2 IVR wrapper, no live diary access, manual callback queue for reception | 9–12% of after-hours calls → booking | Captured caller intent | Callers abandoned at "we will call you back" — most did not answer the callback |
| Ugly — No clinical escalation path, asked for full medical history on first call, obviously synthetic voice | 3% → booking; 2 CQC safeguarding concerns raised | Nothing | Everything. Off-the-shelf chatbot-to-voice wrapper with no clinical review, no emergency path, and a voice that sounded like a 2019 IVR. Two patients reported it to the practice manager. |
The gap between Good and Bad is almost entirely explained by two factors: real-time diary access (can the agent offer a confirmed slot on the call?) and persona quality (does the caller trust they are talking to something competent?). The Ugly case is a genuine example, not a hypothetical — a practice that bought a general-purpose bot without any dental or clinical adaptation.
For a detailed teardown of the STT accuracy trade-offs and the PMS write layer in a live dental deployment, see our voice AI and document analysis case study.