Phelix’s Outbound IVR feature, available under the Virtual Agent module, allows clinics to automate voice calls to patients for tasks like:
Referral follow-ups
Appointment reminders or rescheduling
Form collection and intake completion
General broadcasts or alerts
Rather than relying on manual phone calls, staff can design flows that handle these interactions using a drag-and-drop builder—saving time, reducing phone tag, and improving patient response rates.
Navigating to the Flow Builder
To get started:
Enable Control Panel in the left-hand menu.
Open the Virtual Agent module.
Click on Flow Builder.
You’ll see three tabs at the top:
Inbound IVR: For handling incoming calls (not covered in this guide)
Outbound IVR: Where you create automated call flows that Phelix initiates
Conversational Flow: Chatbot flows (also not covered here)
Make sure you're in the Outbound IVR tab.
Understanding the Flow Builder Interface
Once in the Outbound IVR tab, you’ll see:
A tile labeled “Create New Outbound Flow”: This lets you create a new phone flow.
A list of existing flows, each showing:
Flow Name
Assigned Phone Number used to call patients
Status (e.g., Active)
Edit button to modify an existing flow
Clinics can manage multiple IVR flows at the same time. For example, you might have separate flows for:
“Referral Follow-Up”
“48 Hour Appointment Reminder”
“Reschedule Campaign”
Each flow has its own logic and routing but can share voice configurations and templates.
Assigned Phone Numbers
Each flow is tied to a specific assigned number. This is the number patients will see when they receive the call. You can reuse numbers across flows or assign dedicated lines for specific purposes.
To edit the number, click the pencil icon next to it.
Creating or Editing a Flow
When you click Create New Outbound Flow or Edit on an existing one, you're taken to the visual flow builder interface.
This canvas allows you to build the logic of the call using Flow Elements. These are listed in a sidebar on the left and include steps like:
Input Step
Patient ID & Search
Referral Search
Update Appointment
Play Message
…and more.
You can drag these onto the canvas and connect them to define what happens during a call.
Outbound Flow Name and Voice Settings
At the top of the canvas, you’ll configure:
Outbound Flow Name: This is the label for internal use.
Voice Selection: Choose the voice patients hear (e.g., “Female Voice 1 English”).
Voice Speed: Adjust how fast the voice speaks (from 0.25x to 4x).
Useful for clinics wanting clearer or more natural pacing.
What Clinics Can Achieve with Outbound IVR
Using this tool, clinics can:
Save admin time by reducing outbound calls
Automate appointment logistics (reminders, rebookings)
Improve referral conversion rates through proactive outreach
Collect missing forms or information
Provide timely notifications to large patient groups
It’s especially useful for:
Walk-in clinics: Follow-up on referrals without manual triage
Family practices: Automate reminders or intake requests
Specialists: Prompt patients for next steps after a consult
Flow Elements
Play Message
The Play Message step is one of the most commonly used building blocks in an Outbound IVR flow. It allows the system to deliver a pre-written, automated voice message to the patient — without requiring any input from them. This is ideal for appointment reminders, announcements, or simple status updates.
This element is especially useful at the beginning or end of a flow, or between interaction points.
Configuration Fields:
Message
This is the text-to-speech (TTS) message that will be read aloud to the patient. It can contain both plain text and data elements (dynamic variables) that are automatically populated based on patient or appointment data pulled from the EMR.
Example:
"Hi, [Patient First Name] [Patient Last Name]. This is a reminder that you have an appointment on [Appointment Date] at [Appointment Time]."
Purple tokens like [Patient First Name] are dynamic Data Elements (explained in full below).
You can freely type in static text around these elements to form natural-sounding messages.
Route To
Determines what the system should do after this message has been played. You can route the call to another step (e.g., Update Appointment, Book Appointment, Play Another Message, etc.).
Use this to chain steps together and drive the flow forward based on logic or patient needs.
Caller
This is a system-generated tag showing who is initiating the call. This is always set to Clinic for outbound flows — meaning the call is coming from the clinic’s assigned number.
Reason
This is a label attached to the step that helps categorize why this step exists — e.g., "Reminder", "Intro Message", or "Update Prompt". It’s mainly used for reporting and internal tracking.
In the screenshot example, the reason is set to Play Message.
Status
Optional field used to mark the state of the flow at this point. This is helpful for tracking completion, drop-offs, or other conditions — especially in reporting and dashboards.
Available options:
Completed – The patient successfully reached and interacted with this step as expected.
Incomplete – The patient did not complete the full interaction; often used when the flow ends prematurely or when no input is provided after this message.
Other – A generic status used for exceptions or cases that don’t fit into the standard categories.
This field is not required, but it's a useful way to track outcomes across different flows.
Event Type
This is an optional dropdown used to tag this step with a special event category. These tags can be used for custom reporting or logic checks later.
Available Event Types:
Checkpoint – Marks a key moment in the flow (e.g., consent obtained, reminder sent).
Set Session Data – Indicates that a variable should be set in session memory (advanced use).
Data Elements (Dynamic Variables)
At the bottom of the Play Message configuration panel, there’s a Data Element button. Clicking this reveals a list of dynamic fields you can insert into the message content.
These tokens are automatically replaced with real-time values pulled from the EMR or call context.
💡 Available Data Elements:
| Data Element | Description |
|---|---|
| Patient First Name | First name of the patient being contacted |
| Patient Last Name | Last name of the patient |
| Appointment Time | Scheduled time of the appointment |
| Appointment Date | Scheduled date of the appointment |
| Physician First Name | First name of the assigned provider (if applicable) |
| Physician Last Name | Last name of the provider |
| Appt. Date & Time | Combined string of date and time |
| Status Update Date & Time | Last updated timestamp of the appointment or referral |
| Caller ID | Number that the call is coming from |
| Clinic Name | Name of the clinic assigned to this flow |
You can insert these into your message by clicking the Data Element button and selecting from the list.
Update Appointment
The Update Appointment step is one of the most powerful tools in the Outbound IVR builder. It checks the EMR for any upcoming appointments associated with the patient and allows the caller (typically a patient) to take action — confirm, cancel, reschedule, or even trigger other custom flows.
This step has two distinct branches:
If Appointment Found – You define logic based on appointment type/status and configure voice prompts + actions.
If Appointment Not Found – You create a fallback path if no matching appointment is located.
This is typically used in reminder campaigns, confirmation flows, or rebooking workflows.
✅ If Appointment Found
This is the primary path — activated when a patient match + future appointment is found in the EMR.
Each logic block (e.g. "Logic 1") allows you to:
Match appointments based on status and EMR tags
Customize what the IVR says
Set actions based on what number the patient presses
Key Configurations Inside a Logic Block:
| Field | Description |
|---|---|
| Phelix Appointment Status | Filters appointments by internal status (e.g. Confirmed, Booked, etc.). |
| EMR Status | Optional. Matches EMR-specific status codes (e.g. “A,B,C”) to be more granular. |
| Appointment Type | Optional. Add filters like "Virtual", "Walk-in", or "Physiotherapy" if supported. |
| Time Limit | Optional toggle. If on, only pulls appointments within a specific time window (e.g. within 48h). |
| Message | The IVR prompt patients will hear. You can insert dynamic values (e.g. Appt Date). |
| Digit Actions (1/2) | Define what happens when the patient presses each key. Typical use: 1 → Confirm 2 → Cancel |
| Status Update on Pressing [x] | Sets the new appointment status (e.g. Confirmed/Cancelled). This gets pushed back to the EMR. |
| New EMR status | Optional. Lets you push specific EMR codes (e.g. “D” = Cancelled). |
❌ If Appointment Not Found
If there’s no match in the EMR, the fallback path is triggered.
| Field | Description |
|---|---|
| Message | Custom voice prompt letting the caller know no appointment was found (e.g. “We couldn’t locate an upcoming appointment on file.”) |
| Route To | Optionally send the caller to another step (e.g. "Book Appointment", or a live agent). |
| Caller | Used for internal reporting/audit — defaults to “Clinic.” |
| Reason | Categorizes this IVR step’s purpose (e.g. Update Appointment). |
| Status | System tracking status. Use “Incomplete” if caller drops here. |
| Event Type | Used for analytics/auditing — helps identify what kind of patient interaction occurred (e.g. IVR engagement, callback, etc.). |
⚙️ Additional Options at the Bottom
| Button | Use |
|---|---|
| IVR Element | Lets you insert interactive logic into your flow (e.g. another branching step or nested IVR menu). |
| DATA Element | Lets you add dynamic values (like names, dates, times) into your IVR message. More on this below. |
Patient ID & Search
The Patient ID & Search element is used to verify a patient’s identity and match them to an existing record in the clinic’s EMR. This is typically one of the first steps in a flow when patient verification is required before proceeding with appointment updates, intake, or reminders.
Configuration Fields
Type of ID
Health Card Number
When enabled, this option prompts the caller to enter their 10-digit health card number. You can customize the prompt message here (e.g. “Please enter your 10-digit health card number.”)Invalid Entry Message: If the entry is incorrect (wrong format or non-numeric), this message will play (e.g. “That’s not a valid entry. Let’s try again.”).
Retry Count: Set how many attempts the caller has to input a valid number. The default is 3.
Phone Number
Optional. Can be enabled to allow search by phone number instead of HCN, though this is disabled by default.
If Success – EMR Patient Search
Allow only active patients
When enabled, the system will return results only for patients marked as “Active” in the EMR. Helpful for preventing updates to inactive or archived profiles.
If Patient Match Found
If a matching EMR record is found:
Message: The confirmation or next prompt (e.g. “Thanks! We’ve found your record.”)
Route to: The next step in the flow (e.g. Update Appointment)
If Patient Match Not Found
If no EMR match is found:
Message: You can provide a retry or redirection message (e.g. “We couldn't find a match. Let’s try another method.”)
Route to: Choose where to send the caller next — could be another ID input attempt or transfer to staff.
If Failed
If all attempts fail (e.g. invalid entries or no match after retries):
Route to: Redirect the call (e.g. “Transfer to receptionist”)
Caller: This should be Clinic
Reason: Label for internal tracking (e.g. “Verify HCN”)
Status: Usually set to Incomplete
Event Type: Optional tag for reporting or session management (Checkpoint or Set Session Data)
Patient Verification
This flow element is used to verify the identity of the patient using a simple data point—typically the Year of Birth (YOB)—before proceeding with sensitive actions like updating or confirming appointments.
Verification Type
Select the verification field you’d like the system to match against. The most common option is Year of Birth, since it is easily accessible to patients and stored in most EMRs.
Message
Enter the voice prompt that instructs the patient on what to input (e.g., “Please enter the 4-digit year of your birth.”)
Invalid Entry Message + Retry Count
Specify what the caller will hear if they enter an invalid response (e.g., “That didn’t match what we have on file.”) and how many attempts they get before failing out. The default retry count is 3.
If Verification Success
If the entered value matches the EMR record:
Message: Add a confirmation message like “Thank you, we’ve verified your identity.”
Route To: Choose the next step in your flow (e.g., Update Appointment).
If Verification Failed
If the caller exceeds the retry limit or enters incorrect information:
Message: Add a message like “We couldn’t verify your details.”
Route To: Select where the call should go (e.g., clinic staff or voicemail).
Caller: This should be set to Clinic, indicating the clinic initiated this verification flow.
Reason: Typically set to Verify YOB for tracking purposes.
Status: Set to Incomplete so failed verifications can be tagged and reviewed later.
Referral Search
The Referral Search element is used in outbound IVR flows to automatically check if a patient’s referral has been received and logged in the clinic’s system (typically in the EMR or custom referral waitlist). This is especially useful in specialty care workflows where referral receipt determines what action should be taken next — such as booking an appointment, collecting missing information, or routing the call to a human agent.
Health Card Number
The system prompts the patient to enter their 10-digit Health Card Number, which is then used to search for matching referrals.
Message: Add a prompt like:
“To continue, please enter your 10-digit health card number.”Retry Count: Set how many chances the patient has to input their number (default: 3).
If Referral Found
If a matching referral is found:
Route To: Select the next node (e.g. appointment booking, confirmation message, or Patient Verification).
You can skip the message here if you're handling that in the next step, or use something simple like:
“Thanks, we’ve found your referral.”
If No Referral Found
If no match is found:
Route To: Choose what happens next — for example, a message informing the patient that the referral hasn’t been received, or routing them to a live agent for help.
This path is important for surfacing potential referral issues early and helping the clinic prevent leakage.
Other Settings
Caller: Should be Patient (even though it's an outbound call, the patient is the one interacting with the system).
Reason: Set as Referral Search for tracking and analytics.
Status: Typically set as Incomplete to indicate that further action is needed or the call wasn’t fully resolved.
Event Type: Optional — use it for internal categorization if needed.
Record Message
The Record Message step allows you to collect a short voice recording from the patient during an automated outbound call. This is helpful in workflows where freeform input is needed — for example, if a referral is missing or incomplete, and the clinic wants the patient to briefly describe the issue, or leave a message for follow-up.
Pre Recording Message
This is the prompt that will play just before recording begins.
Example:
“Please leave a short message describing your concern after the beep. You will have 10 seconds.”
This message should clearly set expectations about what to record and the time limit.
Recording Duration
Set the maximum length of the recording in seconds (e.g., 10, 15, or 30 seconds). Shorter durations are usually sufficient and improve processing efficiency.
Routing
On Success Route To: Choose where to send the caller after the recording is successfully captured (e.g., a thank-you message or call end).
On Failure Route To: If the recording fails, route the caller to a fallback node (e.g., retry prompt or human agent).
Other Settings
Caller: Set to Clinic
Reason: Set as Record Message
Status: Use Incomplete unless the flow resolves at this point
Event Type: Optional — tag for internal use if needed
Book Appointment
The Book Appointment step is used to automatically offer available appointment slots to a patient—either with their assigned family doctor or with a walk-in provider. The appointment options are fetched directly from the EMR based on a template code and routed based on user responses.
Modes:
You can toggle between two modes at the top of this step:
Book Family Doctor: Offers appointments with a specific physician based on the schedule template code.
Book Walk-In: Offers appointments with walk-in providers, either collectively or individually if configured.
Key Fields
Schedule Template Code
This is a required field used to fetch appointment slots from the EMR. Each code corresponds to a specific provider or clinic schedule.
Appointment Delay
Defines how many days into the future the system should begin offering appointments (e.g. 0 = same-day, 1 = from tomorrow onward).
EMR Status Code
This field allows you to set the booking status that will be sent to the EMR after the appointment is scheduled. Leave this blank if your integration doesn't require it.
Slot Limit
The number of available appointment options the system should read out to the patient before stopping (e.g. 3).
Route To
After a slot is selected and confirmed, this field determines which step the flow should proceed to next.
Message
This is the main message that plays when an appointment is found. It supports data elements like Patient First Name, Physician First Name, and Slot Date & Time to personalize the experience.
Example:
"Thank you [Patient First Name]. You are able to book an appointment with Dr. [Physician First Name]."
Rooted Message
This section handles how the appointment options are presented and how the user can respond using the keypad. For example:
Press 1 – to select the appointment
Press 2 – to repeat the option
Press 3 – to hear another available date
Each button action routes internally to the next appropriate slot or to the end of options.
Walk-In Specific Settings
Walk-In Message
A message that plays when offering the option to book with the next available walk-in provider. Example:
"If you would like to book a virtual walk-in appointment with the next available doctor, press 0."
Allowed Physicians (toggle)
Enable this option if only certain providers should be included in the walk-in search.
If No Physician Found – Route To
Fallback routing if no walk-in physician is available for the selected criteria.
Admin Configuration
Caller: Set to "Clinic" for outbound flows.
Reason: Automatically filled as "Book Appointment".
Status: Use "Incomplete", "Completed", or "Other" based on context.
Event Type: Optional metadata for tracking or branching logic.
Reschedule Appointment
The Reschedule Appointment step is used to confirm a patient’s existing appointment and guide them through the process of selecting a new date or time. It is especially useful in proactive outbound flows where clinics want to automate the process of adjusting bookings (e.g. due to provider availability changes, system-wide closures, or overbooking).
Logic Handling
If appointment found
This section allows you to apply conditional logic to route the patient based on appointment attributes—for example, if the appointment is with a specific provider, on a specific day, or at a specific location. You can stack multiple logic conditions and customize the flow depending on the matched appointment.
Each logic block routes to a step of your choosing, which is typically a Book Appointment element offering new timeslots.
If appointment not found
If no matching appointment is found, the fallback message and route come into play. You can customize the message to inform the patient (e.g., “We were unable to locate your upcoming appointment. A staff member will follow up shortly.”), and direct them to a live agent queue, voicemail, or any other step.
Additional Settings
Route To: Select the fallback step if no appointment is found.
Caller: Set to “Clinic” for outbound campaigns.
Reason: Automatically set to “Reschedule Appointment”.
Status: Label the flow as “Incomplete” by default unless a new appointment is confirmed.
Event Type: Optional tag for downstream tracking or analytics.
Input Step
The Input Step is used to collect user input during the call flow, typically in the form of keypad (DTMF) responses. This step allows the clinic to define a prompt and offer multiple routing options based on the caller's selection.
Each option in the Input Step is treated as a separate branch and can be routed independently to a specific next step, allowing for decision-based workflows.
Step Label and Step Description are used to help identify the purpose of this input in the builder UI.
Each branch (e.g., 1, 2) requires configuration of:
Route to: Defines where the flow should proceed when that option is selected.
Reason, Status, and Event Type: Used to log interaction metadata and trigger downstream automation.
The Input Step supports dynamic branching for use cases such as:
Asking patients to confirm appointment type (e.g., press 1 for in-person, 2 for virtual)
Routing patients based on location or provider preference
Offering different callback options
Wrapping Up
That’s a full breakdown of how to configure and customize your Outbound IVR Flow using the flow builder. If you run into any issues—or want help designing your first flow—our team is here to support you. Reach out anytime, and we’d be happy to walk you through best practices or troubleshoot specific elements.
Let’s get your outbound calls working exactly the way your clinic needs them to.