Scheduling
Your appointment agent — calendar, roster, patients, texts and phone calls.
Purpose-built voice agents for front-office processes. The agent understands the caller, but every slot, booking and confirmation comes from the calendar — it can't invent availability.
Office hours
Format: 08:30-12:00, 13:00-17:00. Leave a day empty when closed. Used to answer “what are your hours?”.
Each provider's weekly schedule is when they can be booked. Block days off or partial days below.
📥 Upload roster & appointments from Excel
Download the template — it comes prefilled with this clinic's providers, weekly hours, dated roster, blocked time and upcoming visits. Edit it in Excel (add physicians, change hours, add already-scheduled appointments), then upload. You get a preview first; after Apply the staff calendar, the clinic website and the patient app update within seconds.
✨ Sample bookings
Fill a share of each doctor's open time with realistic sample visits so the calendar, website and app look like a busy clinic. Sample patients are fake, are never texted or sent to the EHR, never touch real bookings, and can be removed in one click.
Each cell is that provider's bookable hours on that date — e.g. 08:30-12:00, 13:00-17:00, or off. A filled cell overrides the weekly schedule for that date; an empty cell (grey hint) falls back to the weekly schedule. Click Save changes when done.
What callers can book, and how long each takes. Synonyms help the agent map “I have a fever” → Sick visit.
| Name | Minutes | Days (blank = any) | Synonyms (comma-separated) | Prep instructions (said after booking, in the text) | Video | Urgent | Active |
|---|
Extra details the agent collects — only when missing (answers volunteered earlier, or saved on the patient's profile, are not asked again). Saved on the appointment; tick Save to patient to remember it for next time. An insurance field also filters doctors by the insurance they accept.
| Label | Question the agent asks | Kind | Choices (comma) | Only for types (blank = all) | Who | When | Save to patient | Say back | Active |
|---|
Variables you can use in any line
Greeting, closing, opener, after-booking note, prep instructions, intake questions and SMS texts can include these. Empty ones disappear cleanly (e.g. no name known → "Hi, …").
Outbound call purposes
When you call a patient, pick why on the Test call tab — the opener says it and the visit type is pre-set. Edit the line said for each purpose here (blank = default shown).
Everything a person needs to act on — callbacks, transferred calls (with the AI's summary), emergency words, insurance problems, texts that didn't deliver, forms to review, do-not-call requests, EHR sync failures. Most urgent first. Open the call to hear it / read the transcript.
Every call is graded automatically — misunderstood turns, repeats, getting stuck, ignoring "wait", unused links, no outcome, slow replies. Open a call to see the flagged turns, hear it, ask the AI what went wrong, and turn it into a regression test with one click (Test call → Test cases).
| When | Caller | Score | Flags | Outcome | Review |
|---|
What the agent is doing for the practice: calls handled without staff, bookings, after-hours bookings, where callers drop off, no-shows and recall results. Test calls are excluded.
The agent calls patients who are due and books them: overdue physicals, chronic-care follow-ups, lab follow-ups, missed appointments. Office hours only, daily limits, retries spaced out; anyone who says "don't call me" is never called again. Mark visits No-show on the Calendar to feed the missed-appointment campaign.
| On | Campaign | Due after | Per day | Attempts | Gap (days) | Results |
|---|
Calls placed
| Last try | Patient | Campaign · reason | Attempts | Status |
|---|
Clinic website
What patients see on this clinic's site (e.g. palmeri.queuen.ai) besides the live schedule. Leave a field empty to hide that section. Doctors, hours, visit types and openings come from the rest of the setup automatically. Click Save changes — the site updates within a minute. Open the site ↗
Services
Each card's "See open times" opens the calendar on the visit type you pick.
| Icon | Service | Description | Visit type |
|---|
How the agent behaves
Insurance eligibility (real-time, on the call)
The agent asks the insurer + member ID (read back), checks while the call continues, and says coverage + copay exactly as the payer returned them. Returning patients with coverage on file are re-checked silently. Problems go to the Inbox.
EHR / practice-management calendar sync (FHIR R4)
Every booking / cancellation (agent, link page, staff) is pushed to the EHR with retries; the EHR's own appointments are pulled every 5 minutes and block those times here, so nothing double-books. Save the scenario after changing these.
When a caller says "call me back in 10 minutes" or "call me tomorrow at 9 AM EST" on any call (inbound or outbound), the agent confirms the time (time zones converted), says goodbye, and calls them back automatically — picking up where they left off. Unanswered callbacks are retried once after 10 minutes.
The AI phones the patient before each visit: "I'm calling with a quick reminder about your upcoming appointment" → confirms their date of birth → reads the visit back (doctor, day, time) → "Will you be able to make it?" Yes marks the visit confirmed; no → it reschedules or cancels on the spot. Unanswered calls are retried once. Reminder calls show in the list below. Patients can be switched off one by one (Patients → Edit), and anyone who says "don't call me" is never called again.
| Call back at | Patient / number | Reason the AI will give | Status | Requested |
|---|
Lets patients press Call AI agent on this clinic's site (e.g. palmeri.queuen.ai) and talk to the clinic's own AI agent live in their browser — phone, tablet or computer, no dialing. It's the same agent as the clinic's phone number (Settings → ElevenLabs Agent), so it verifies, books and texts exactly the same way. Every web call lands in Calls with its transcript and summary. When it's off — or today's minutes are used up — the button simply dials the phone number. Save after changing.
👤 AI avatar (Eric)
Patients see Eric, the clinic's AI avatar, while they talk. The name and face follow the agent's ElevenLabs voice (Settings → ElevenLabs Agent): a male voice shows the male avatar, a female voice the female one. On the clinic site patients can switch to the other avatar for their call, which then uses a random voice of that gender. The lips follow the agent's voice and the avatar listens when they speak. He's drawn in the patient's own browser: no video service, no cost, nothing extra on this PC. The agent, tools and minutes are exactly the same as a voice call. The patient's camera is never used.
| When | Length | From · face | Patient | Outcome | Summary |
|---|
Voice messages patients leave on the clinic site (e.g. palmeri.aizants.com → Leave a voice message). Each one is transcribed, the details are pulled out, and the AI agent calls the patient back — explaining it's about their message — during office hours (messages left after hours are called when you open). Track every step here.
💬 Appointment texts
Variables: {first_name} {facility} {provider} {type} {slot} {when} {code} {prep} {facility_phone} {location}. Blank = the default shown. Patients who reply STOP are never texted again (START re-subscribes).
✉️ Send a text now
✅ Text permissions
YES / STOP replies update this automatically| Number | Patient | Status | Waiting texts | Updated |
|---|
📜 Message log
| When | Patient / number | Type | Message | Status |
|---|
Where a caller is sent when they want a person. The agent hears the request however it's phrased ("get me someone", "is there a human?", "I want to talk to billing", being fed up with the bot, or pressing a key) — keyword rules first, then the LLM reads the conversation using each line's "When to send here" text and your instructions below. On transfer the agent drops off the call (stops listening/recording) and the caller is bridged to that number. If the line doesn't answer, it tries the front desk (Setup tab), then promises a callback. Change any number here any time — it applies to the next call.
| Team / line | Phone number | When to send here (for the LLM) | Keywords (comma) | On topic alone | Key | Hours | Transfer line spoken | Active |
|---|
Keypad: 0 always reaches the front desk; a line's key reaches that line. Mention it in your greeting if you like ("…or press 0 at any time to reach our staff"). On topic alone: only when asked = the caller must ask for a person; offer = "That's something our billing team can help with — want me to transfer you?"; transfer right away = no question asked. Hours: office hours follow the Setup-tab hours (closed → callback); 24/7 always dials.
The same agent and voice handle both directions, and the wording changes with who placed the call. {facility} and {agent} are filled in. Leave a box empty to use the default shown.
📥 Inbound — patient calls in
📤 Outbound — agent calls the patient
Transfers dial the front-desk transfer number on the Setup tab, only during office hours — otherwise (or if nobody answers) the caller is told someone will call back. After goodbye or a callback promise, the agent hangs up.
🗣️ How the agent talks
The engine always decides the facts. The LLM only re-words a line, and a checker throws its wording away if any date, time, number or doctor changed — then the scripted line is spoken.
🚑 Safety
⏳ Waitlist
🎥 Video visits
Text messages now have their own tab: Text messages.
Identity rule: existing patients are verified by name + date of birth before any appointment is revealed, changed or booked. If no record matches, the caller can book as a new patient (when allowed) — otherwise they're handed to the front desk.
Book an appointment (front desk)
Add patient
| Name | DOB | Phone | Language | Insurance | Source |
|---|
Patients waiting for a time. When a slot opens (a cancellation, or a new opening the 10-minute sweep finds), it's held for the longest-waiting patient it fits and the agent calls them during office hours. Slots that were already open when they joined, or that they turned down, never trigger a call.
| Patient | Phone | Visit | Doctor | Window | Status | Offers |
|---|
Inbound & outbound calls — one agent
This agent (same voice, name, calendar and rules) places outbound calls from the Test call tab and can also answer inbound calls when the box below is on. It greets inbound callers with the inbound greeting and outbound callees with the outbound opener (Script & policies).
When on, any inbound call to a Twilio number that isn't mapped to a specific agent is answered by this scenario (only one scenario can be the default). Outbound calls placed from VLabs are never affected.
To route one specific number here instead, open Admin › Telephony and set that number's inbound agent to .
Calls show up in Results with the recording, transcript and the outcome (booked / cancelled / handed off). Remember to Save changes.
📞 Real phone call (outbound) — the agent calls this number; when they answer it introduces itself and helps them book
What the agent knows
Turn trace
🧪 Test cases — replayed in a sandbox copy of the calendar (never books for real). Run after any script / prompt / policy change.
Every call the agent answered or placed on this number. Click a call for the transcript and recording. (Quality grades are under Scheduling → Quality.)
| When | Direction | Caller / callee | Patient | Outcome | Length | |
|---|---|---|---|---|---|---|
| Loading… | ||||||
Each clinic has its own calendar, patients, users, phone number and website (<name>.queuen.ai). Use the Clinic picker in the sidebar to work inside one.
| Clinic | Website | Phone number | Texts from | Automations | Users | |
|---|---|---|---|---|---|---|
| Loading… | ||||||
Creates the clinic with its own empty calendar. Copying the setup from another clinic brings its doctors, visit types, hours, transfers and text templates — never its patients or appointments.
| Role | Last sign-in |
|---|
In ElevenLabs mode the whole call runs on ElevenLabs: its speech recognition hears the caller, the LLM you pick decides what to say, and the ElevenLabs voice speaks — in real time, and callers can interrupt. Queuen gives the agent tools to look up patients, find open times, book, reschedule, cancel, add to the waitlist, transfer and leave call-backs; everything lands in this clinic's calendar, texts and Calls as usual. The instructions are built from this clinic's setup (doctors, visit types, hours) and refreshed on every Save & sync.
See the full instructions the agent gets
VLabs: Queuen's own agent runs every call (VLabs understanding, wording and voice; Twilio hears the caller). ElevenLabs: each clinic's calls go to its ElevenLabs Agent (card above) — ElevenLabs hears the caller, thinks with the LLM you choose and speaks, in real time; Queuen supplies the calendar tools. In ElevenLabs mode nothing uses VLabs: voice messages, call reviews and Scheduling-screen test calls also use ElevenLabs (speech-to-text, the clinic's chosen LLM, voice). The clinic's number must answer in Queuen (see the agent card). Twilio numbers and texts don't change.
Queuen uses VLabs for understanding and natural wording — and, when VLabs is the voice provider above, for the agent's voice and speech-to-text. Create the key in VLabs → Admin → API clients.
Each clinic's own number is set under Clinics. The number here is only the fallback. Public URL = the https address Twilio reaches Queuen at (e.g. https://app.queuen.ai through the cloudflared tunnel — menu option 4).
Leave blank to text from the Twilio number above.