Skip to main content
Connect
Call transcripts and call length in the mobile Recents tab, and faster call answering

Updates

Connect

  • See call transcripts in the mobile app — Answered calls in the Recents tab now have a transcript icon. Tap it to see the call’s topics and summary on the Overview tab and the full conversation on the Transcript tab. You can also open it from a recording. Transcripts need call transcription enabled for your account. Learn more
  • See how long a call lasted — Answered calls in the Recents tab now show the call length under the timestamp. Learn more

Bug fixes

Connect

  • Answering from the Android lock screen connects faster — When you answered a call, the app used to wait up to 10 seconds to find a network path before connecting the audio. This could make calls answered from the Android lock screen fail to connect. The app now connects as soon as it finds a usable path and waits no more than 3 seconds. Learn more
API
A separate shipping address for tenant billing, and sales tax based on where the customer is

Updates

API

  • Set a separate shipping address on a tenant — billingInfo on POST /admin/tenants and PATCH /admin/tenants/{id} now takes shippingSameAsBilling. The field is required whenever you send billingInfo. If you set it to false, you must also send shippingStreet, shippingCity, shippingState, and shippingPostalCode. GET /admin/tenants/{id} returns the same shipping fields in billingInfo. Learn more

Bug fixes

API

  • Sales tax uses the tenant’s shipping address — Creating or updating a tenant’s billing info used to save only a billing address in QuickBooks. Invoices were then taxed at the QuickBooks company’s address instead of the customer’s. The shipping address is now saved too, so tax is calculated from where the customer is. Learn more
AgentAPI
PioneerRx refills that stalled on a missing days-supply date, and two more opt-out keywords

Bug fixes

Agent

  • PioneerRx refills go through without a days-supply end date — When a PioneerRx profile came back without a days-supply end date and refill-due limits were on, an eligible prescription was reported as not refillable and the refill wasn’t filed. The agent now works out the end date from the last fill date plus the days supply. A prescription that has never been filled isn’t held to refill-due limits. Learn more

API

  • REVOKE and OPT OUT texts opt patients out — A text of REVOKE or OPT OUT used to be handled as an ordinary message, so the patient stayed opted in. Both now opt the number out and get the opt-out reply, the same as STOP. Learn more
ConnectAgent
Android calls that ring before chat connects, a status control only for call center agents, clearer status errors, a cleared directory on sign-out, and refills for medication names with stray spaces

Updates

Connect

  • Agent status shows only if you’re in a call center queue — The agent status control on the Home tab now appears only when you’re assigned to at least one call center queue. If changing your status fails, the error now gives the reason instead of a generic “Error updating agent status.” Learn more

Bug fixes

Connect

  • Android calls ring before chat connects — On Android, the app used to wait for the chat service to connect before it registered your device for incoming calls. If chat was slow or failed to connect, calls could miss your phone. The app now registers for calls first and for chat notifications separately, so a chat problem no longer affects calls. If registering for calls fails, the app tries again the next time you open it. Learn more
  • Signing out clears the company directory — The company directory used to stay loaded in the app after you signed out. Signing out now clears it. Learn more

Agent

  • Refills work when a medication name has extra spaces — If the drug or item name in the pharmacy system started or ended with a space, the agent couldn’t match it to the medication the patient asked for, and the refill failed. The agent now ignores those spaces when it matches, so the refill goes through. Learn more
PharmacyAPIAgent
A redesigned voicemail settings page, playing voicemails from the list, agent stats cards that match your filters, a fallback reply when the text assistant is down, and a fix for default music on hold

Updates

Pharmacy

  • Redesigned voicemail settings — The Settings tab on the Voicemails page now shows your location’s mailboxes on one side and the settings for the selected mailbox on the other. You can search by name or number and filter to group or personal boxes. Use Add Mailbox to create a personal box on a staff extension or a standalone group box; the mailbox number is checked against the account as you type. You can also delete a box you no longer need. Each box shows its details, PIN, message length, press-0 routing, and its Unavailable, Busy, and Out of Office greetings. The list flags any box with no email, a PIN shorter than four digits, a temporary greeting still playing, or no recorded greeting. Bulk Edit sets transcription, attached recordings, the message-ID requirement, and phone deletion for all the boxes you select at once. Learn more
  • Play voicemails from the list — Each voicemail in the list now has a play button, so you can listen without opening the message. Only one plays at a time. Starting another, opening a message, or leaving the page stops playback. Learn more
  • See which mailbox a voicemail went to — The voicemail list has a new Mailbox column, and the CSV export includes it too. If the mailbox is no longer available, the column shows a dash. Learn more
  • Caller ID picker shows your selection — In voicemail settings, the Caller ID field now shows the number you picked instead of the “Select Caller ID” placeholder. A clear button next to it removes the selection. Learn more

API

  • Patients get a reply when the text assistant is down — If a patient’s text can’t be passed to the pharmacy agent, they now get this reply instead of silence: “Sorry, our text assistant isn’t available right now. Please call the pharmacy directly at [your number] for help.” The number is the contact phone from your store details. If you haven’t set one, the reply leaves the number out. Text sessions also now wait up to 30 seconds for the agent to pick up, down from 60. Learn more
  • Texts to disabled accounts aren’t passed to the agent — If a pharmacy account is disabled, inbound texts aren’t sent to its agent and get no reply. Carrier keywords such as STOP and HELP still work. Learn more
  • Pharmacy messaging campaigns are registered as low volume — 10DLC campaigns ordered on a pharmacy account are now submitted under the low volume use case, which covers account notifications, customer care, marketing, and delivery notifications. Previously, the use case was looked up from the brand. Learn more
  • Campaigns show their brand again — Each campaign in the 10DLC campaign list includes brandName again, so you can see which brand a campaign belongs to. The field was dropped from the list on October 16. Learn more

Bug fixes

Agent

  • Text hand-offs give the pharmacy’s own number — When the agent can’t help with a request over text, it now gives the patient the contact phone from your store details instead of a call-routing destination. It then asks if there’s anything else it can help with, rather than ending the conversation on the hand-off. Voice calls haven’t changed and still transfer to staff during business hours. Learn more

Pharmacy

  • Agent stats cards match your filters — The cards above the Conversations list only filtered by date range. When you narrowed the list by type, direction, transferred, or a search term, the cards still showed totals for the whole period. They now use the same filters as the list and update with it. The first card is now labelled Calls, because it counts every session in view, not just inbound ones. Learn more

API

  • Saving a voicemail box no longer resets other settings — Saving a change to a voicemail box used to reset every field the save didn’t include: email attachment, delete-after-send, the phone-delete lock, and the notification number list all went back to their defaults. Those fields now stay as they are, so changing one setting doesn’t clear the others. New boxes still get the documented defaults. Learn more
  • Brand registrations are matched to your account when confirmed — When you register a brand, it’s now saved to your account as a pending brand until The Campaign Registry confirms it, and then becomes the account’s brand. Previously, the confirmation arrived before the account had the brand on file, so it couldn’t be matched and was dropped, leaving the brand unverified. Learn more
  • Default music on hold now plays for callers — Checking Set as Default Tenant marked the music on hold as the default, but the account kept using its previous one, so callers on hold still heard the old audio. The account now switches to the music on hold you mark as default, whether you check the box when adding a new one or when editing an existing one. Learn more
AgentConnect
The agent closing out text conversations, texts written to be read, recognizable masked medication names, and transferring calls to your phone contacts

Updates

Agent

  • The agent closes out text conversations — When a patient has nothing else, the agent now signs off — “Thanks for texting [your pharmacy]. Text us anytime you need help.” — and ends the text session. Previously, the thread stayed open until it timed out. If a patient opts out part-way through, the agent thanks them and closes the conversation the same way. Webchat sessions haven’t changed and still end on their own inactivity timer. Learn more
  • Texts are written to be read, not spoken — Numbers in a text now appear as digits, the way they would in any text. A phone number shows as 555-123-4567, and a prescription number as a single run of digits. Previously, they were spaced out the way the agent reads them aloud on a call. Refill counts are still written as words. Learn more
  • Masked medication names stay recognizable — If the scan that runs before a text is sent catches a medication name, the name is now masked instead of removed. The first three letters stay and the rest become asterisks, as in Lis*******. Previously, every name was replaced with the word “medication”, so a patient on several prescriptions couldn’t tell which one a text was about. Learn more

Connect

  • Transfer calls to contacts from your phone — If you’ve allowed the app access to your phone’s contacts, the transfer screen now lists them alongside your company directory. Each number gets its own row, so you can pick a specific mobile or office line. Contacts appear as soon as the screen opens, not only after you search. A number matches however it’s written. A phone contact that shares one number with the directory now keeps its other numbers instead of dropping off the list entirely. Learn more
AgentPharmacyAPIConnect
Pet prescription refills without a date-of-birth match, identifying details kept out of texts, agent minutes billed only when a person answers, and a fix for missing audio on answered mobile calls

Updates

Agent

  • Pet prescriptions refill without a date-of-birth match — On PioneerRx, a refill for a prescription on a pet (animal) profile used to be refused if the caller’s date of birth didn’t match the profile, or if they hadn’t given one at all. Pet profiles don’t hold the owner’s date of birth. The agent now checks whether the profile is an animal one and files the refill instead of reporting it as not refillable. Prescriptions on a person’s profile haven’t changed and are still checked. Learn more
  • The agent keeps identifying details out of texts — In a text conversation, the agent no longer repeats a patient’s name, date of birth, or prescription number back to them, even one the patient just sent. If a lookup fails, it asks them to double-check what they sent instead of quoting it. The redaction that runs before a text is sent also now catches an identifying number that a transcript spaced out digit by digit. Previously, it passed through as separate short numbers. Learn more

Pharmacy

  • Agent minutes are billed only when a person answers — Time on an outbound Assistant-mode campaign call is now metered only when a live person picks up. Calls that reach voicemail, an automated menu, or a carrier message no longer count against agent minutes, even if the agent leaves a message. Learn more

API

  • Welcome emails link to both apps when an account has both — If your account also runs VOXO Connect, administrators now get a Connect login button in their welcome email alongside the Admin Portal one, so they can reach either app from the same email. The mobile and desktop app section of an invite also names your own brand instead of VOXO. Learn more
  • Messaging campaigns include their full sharing record — Each campaign in the 10DLC campaign list now returns a sharing object, the whole shared-by-me record, alongside the sharingStatus it already had. The brand’s display name is no longer copied onto each campaign in the list. Learn more

Bug fixes

API

  • Agent texting numbers are released from their previous user — Saving a phone number as a pharmacy agent’s SMS number used to leave the number’s user assignment in place. Incoming texts could still go to that user’s inbox instead of the agent. The save now clears the assignment. Learn more

Connect

  • Answered calls on the mobile app have audio — A call answered on iPhone or Android could connect with no audio in one or both directions. The app answered the call without the relay configuration it uses on networks that won’t carry media directly. On iPhone, the app also wasn’t given the audio session the system had activated for the call. Both now happen when you answer. Learn more
  • Late call notifications still ring on iPhone — If a VoIP notification reached an iPhone later than expected, it used to be dropped without ringing, so the call passed silently. A late notification now rings, as it already did on Android. If the call can’t be connected at all, you get a Missed Call notification naming the caller instead of nothing on screen. Learn more
APIConnectAgent
Placing lines on specific line keys, blocking deletion of media files in use, campaign changes in the audit log, and a fix for Android outbound calls dropping when a second call arrives

Updates

API

  • Place a line on a specific line key — Each line on a device update takes an optional lineKey (1-12). Device detail reports supportsLineKeys for the model, along with the key each line sits on. Only models whose provisioning template uses line keys store them. The rest report null and haven’t changed. Keys stay with their line when an extension is assigned to, or removed from, another line on the device. Learn more
  • Campaign changes are recorded in the audit log — Creating, editing, and deleting a call campaign now writes an entry to the Admin Audit Log. The entry shows the campaign’s numbers and destinations before and after the change. Learn more
  • Media files in use can’t be deleted — If a virtual receptionist, queue, holiday, paging group, conference room, or call routing still points at a media file, deleting it is now refused. The error names what’s using it. Previously, the file was removed and whatever referenced it was left pointing at nothing. Learn more
  • Phone numbers report which agent gets their texts — Phone number list items include smsAgentId, the pharmacy agent that receives texts sent to the number. Learn more
  • Queue responses include their settings — Queue edit responses include the queue’s config, which holds its maximum length and ring strategy, alongside the fields that changed. Learn more

Bug fixes

API

  • Queue-full and all-agents-busy destinations are no longer swapped — A queue used to return the destinations set for If queue is full as the all-agents-busy ones, and the all-agents-busy destinations as the queue-full ones. Each list is now returned under the field it was set on. Learn more
  • Saving a queue no longer clears what you didn’t send — Saving a queue without its media prompts, ring-agents-only-once setting, or allowed-agent destination mode used to reset those to empty or off. Fields you leave out now keep their stored values, including the prompt played when a caller takes a callback. Learn more
  • Destinations of a legacy type survive a save — Saving a record with a destination of a type the API no longer builds used to drop that destination, because the full-replace save couldn’t look the type up. Those destinations are now kept on save. You still can’t add new ones. Learn more
  • Campaign voicemail detection is set up and cleaned up properly — Turning on voicemail detection without match and no-match destinations used to silently skip creating the detection condition. Editing or deleting the campaign also left its condition behind. The condition is now created whenever detection is on and removed with the campaign. Learn more
  • Invite emails link to the app the user signs in to — An invited user with an extension used to get a link to the Admin Portal instead of VOXO Connect. The pharmacy button in an invite also pointed at an unresolved placeholder address. Each invite now links to the app the user’s access covers. Learn more
  • START texts only opt patients back in if they had opted out — If a patient who had never opted out texted START, it used to be recorded as a consent change. A start keyword is now ignored unless the number is opted out. Learn more

Agent

  • Prescriptions missing refill details are reported as not refillable — On PioneerRx, a prescription’s profile sometimes came back without the details the refill check needs. That means an expiration date, the quantity remaining, or the days-supply and controlled-substance dates when refill-due limits are on. The agent used to tell the caller the prescription was still being prepared. It now says the prescription can’t be refilled. Learn more

Connect

  • Android outbound calls survive a second call arriving — A call you placed could drop the moment another call came in. The app closed the connection carrying your call to bring up the incoming one. The call in progress now stays up, and the new call rings as call waiting over it. This matches what already happened on calls you answered. Learn more
APIConnect
Call flows removed as a destination type, and Android call audio that stays on your Bluetooth earbuds

Updates

API

  • Call flows are no longer a destination type — CALLFLOW has been removed from the destination types the API lists and accepts. You can no longer point a phone number, queue overflow, or other destination at a call flow. Destinations built on the other types aren’t affected. The number-in-use check also no longer reports a number as taken by a call flow. Learn more

Bug fixes

Connect

  • Android call audio stays on your Bluetooth earbuds — Answering a call on Android used to send audio to the earpiece or speaker, even with a headset or earbuds paired. If they reconnected during the call, audio didn’t come back to them. Call audio now moves to a connected Bluetooth device when you answer, and follows it back when it reconnects mid-call. Turning on Speaker still overrides it. On Android 12 and later, the app asks for the Nearby devices permission, which it needs to route audio to Bluetooth. Learn more
APIAgent
UTC reporting timestamps, password resets that return you to your app, and refills that match prescription numbers however they were spoken

Updates

API

  • Reporting timestamps are returned in UTC — Call logs, call detail, SMS logs, queue logs, and virtual receptionist logs now return every timestamp as a UTC ISO 8601 string, such as 2026-10-09T14:32:00Z. Previously, they returned a bare local-time value, and you had to assume the zone. Stat distributions are bucketed in the offset you send on startDate, so hourly and daily breakdowns line up with your own day instead of Central time. Learn more
  • Password resets can return you to the app you started from — The password reset request takes an optional callback URL. If you send one, the emailed link goes through auth.voxo.co and returns the user to that app once the new password is set. Only voxo.co addresses and your account’s own branded domains are accepted. Anything else is ignored, and the link points at your portal as before. Learn more
  • Check whether a device is in use before you change it — A new Check Device In Use endpoint reports whether the device with a given MAC address is in use. You can check a device before you reassign or remove it. Learn more
  • Queues include their managers — Queue settings accept a managers list of user IDs. The queue detail response returns the managers assigned to the queue alongside its allowed agents. Learn more
  • More ways to narrow a list — The fax list takes a status filter: sent, failed, or in-progress. The call group list takes a branchId. Emergency location search now matches the address as well as the name. Learn more

Bug fixes

API

  • Device lines are numbered from 1 — Line slots on a device are now 1 through 25, with line 1 as the primary line. Previously, 0 was accepted and matched no line on the phone. Learn more

Agent

  • Refills match the prescription number however it was spoken — Speech-to-text tends to add spacing when someone reads a number off a bottle. A prescription number that reached the refill step with that spacing used to be compared against the profile as-is. A number the caller read correctly could come back as not on their profile. The number is now reduced to its digits before it’s matched, as the rest of the refill flow already did. Learn more
AgentPharmacyAPI
Date-of-birth checks on every refilled prescription, remaining refill counts, special hours for the agent, and a fix for after-hours voicemail destinations

Updates

Agent

  • Date of birth is checked against every prescription — On PioneerRx and Liberty RX, the date of birth the caller gave is now sent with each refill. It’s compared against the one your pharmacy management system holds for that prescription. If the dates don’t match, the prescription is reported back as not refillable instead of being filed. A refill is never submitted against someone else’s script. Learn more
  • Callers can ask how many refills are left — If a caller asks how many refills a medication has, they hear the count your pharmacy management system reports, spoken as words — “two refills”. Previously, the agent only said whether the prescription could be refilled right now. If your system doesn’t supply a count, the agent says it doesn’t have it. Learn more
  • The agent knows your special hours by name and date — Special hours on the business hours schedule the agent uses now include their name and the dates they run. Callers asking about your hours hear when a closure or a change in hours applies. On the first and last day of a period marked Closed during this period, the agent says the store is closed today and names the closure. Previously, it read back that day’s regular hours. Learn more

Bug fixes

Agent

  • Spoken centuries are read as the year — A date of birth said with the century out loud could be split in the wrong place. “four twenty two thousand one” was heard as April 22 instead of April 20, 2001. Everything from the century phrase on is now taken as the year. Some words could still be split more than one way — “nine nineteen seventy three” could be the 9th or the 19th. In those cases, the agent says the date back the way it heard it and waits for the caller to confirm before looking up the profile. Learn more
  • Refills are filed against the prescription the caller chose — The agent now sends the medication name and the prescription number together. It submits the refill only when both match the same prescription on the profile. If the name doesn’t match the number, the agent catches it before anything is filed, instead of refilling a different script. Learn more
  • The greeting and recording disclosure follow your primary language — On a location whose Primary Language isn’t English, the opening greeting and the call recording disclosure used to be spoken in English. This happened on calls that didn’t come in through a language-specific menu key. Both now use the call’s language, like the agent’s other fixed lines. They’re translated as written, not reworded. Learn more

Pharmacy

  • After-hours voicemail destinations reach the voicemail box — When After-Hours Voicemail pointed at a voicemail box, the call used to ring the matching extension instead of going to voicemail. The box is now dialed as a mailbox, so after-hours callers reach the greeting and can leave a message. Learn more
  • Voicemail status changes show right away — Marking a voicemail read or moving it through the workflow could take a moment to appear. After the change was saved, the list could also briefly show messages from another location. The change now shows as soon as you make it, and the refreshed list stays on the location you’re viewing. Learn more

API

  • Phone numbers report an open campaign order — The phone number list and detail responses now include campaignPending. You can tell a number with a carrier campaign order in progress apart from one with none: 0 for none, 1 while it’s being added to a campaign, 2 while it’s being removed. Learn more
Connect
A fix for calls that kept ringing on your iPhone after being answered elsewhere

Bug fixes

Connect

  • Calls answered elsewhere stop ringing on your iPhone — If you picked up an incoming call on your desk phone, the desktop app, or another device signed in to the same extension, your iPhone used to keep ringing until it timed out. The call could then be logged as missed. Now the ring ends as soon as the call is answered elsewhere, and a Call picked up elsewhere notification replaces it. No missed call is recorded. Learn more
ConnectPlatform
Fixes for second calls dropping your current call on Android, and for messaging campaigns not loading in the admin portal

Bug fixes

Connect

  • A second incoming call no longer drops the call you’re on — On Android, a call that arrived while you were already on one could take over the device’s audio and end your current call. A second call now plays a call-waiting tone over the live call instead of ringing. Its answer button reads Accept, and tapping it ends the current call before connecting the new one. If you decline or ignore the second call, your current call stays connected. Learn more

Platform

  • Messaging campaigns load again — The campaign list on the 10DLC Messaging page failed to load. Campaigns are now read from the messaging registry’s campaign search endpoint. Learn more
PharmacyAgentPlatformAPI
An optional bulk refill setting for multiple prescriptions in one call, correct prescription status on PioneerRx, and a fix for duplicate queue callback destinations

Updates

Pharmacy

  • Bulk refill is a setting you control — A new Enable bulk refill switch on the PMS Config tab adds a menu option at the start of the refill flow. Callers can use it to refill more than one prescription in a single call. It’s off by default. When it’s off, callers go straight to the single-prescription refill flow. Available on PioneerRx, BestRx, and LibertyRx. Learn more

API

  • ivrBulk on the pharmacy agent — The agent payload now includes ivrBulk, and the agent edit endpoint accepts it as 1 or 0. It controls the bulk refill menu option for that location. Learn more

Bug fixes

Agent

  • The agent reads back the right prescription status — On PioneerRx, a prescription’s own status and its stage in your pharmacy’s workflow are now tracked separately. A finished workflow no longer hides what the prescription itself says. The agent reads the workflow stage back only while the prescription is still moving through the workflow. All workflow stages that mean the work is done are recognized as complete. A stage VOXO doesn’t recognize is left out instead of read back as a status. A reversed prescription is reported as still being processed, not unavailable. Learn more

Platform

  • Saving queue settings no longer duplicates callback destinations — Editing a call queue with callback settings used to write that queue’s callback destinations twice, leaving duplicate rows behind on every save. They’re now written once. Learn more
  • Autoprovision templates list only the fields you can set — Device variables that the system fills from the device’s line assignments are no longer offered as editable options on a device. The template’s empty Select= placeholder is no longer shown as a choice. Learn more

API

  • Listing devices for an account with none returns an empty list — GET /admin/devices and the per-user device list used to fail with a server error when the account had no devices. They now return an empty result. Learn more
  • Hunt list destinations include forwarding and timeout — Reading a hunt list’s destinations used to return only its routing destinations, leaving out the forwarding and timeout destinations. All three are now included. Learn more
  • On-call callback playback is returned as a media destination — A playback set on an on-call callback used to be left out of the media destinations in the response, so you couldn’t read back the audio it points at. Learn more
ConnectPlatformAPI
A fix for Android calls answered from the notification dropping after a minute, a single default music on hold per account, and validation errors that name the failing field

Updates

API

  • Validation errors name the field that failed — A rejected request now says which field was at fault and why, as 'field/path' message, instead of a bare “Validation error”. Some requests are turned away before they reach an endpoint, such as malformed JSON or an unsupported content type. These now return their own 4xx status and message instead of a generic 500. Responses are the same in every environment, and stack traces are never sent. Learn more

Bug fixes

Connect

  • Calls answered from the notification no longer drop after a minute — On Android, answering from the heads-up notification with the phone unlocked could end the call about 60 seconds in. The app now opens the call screen the same way whether the phone is locked or unlocked. It also no longer switches the audio mode a second time after the ringtone stops. Learn more

Platform

  • Only one music on hold is the account default — Marking a Music On Hold as the account default used to leave the box ticked on the previous default, so an account could show two defaults. Setting a new default now clears the old one. Learn more

API

  • Music on hold needs at least one media file — POST and PATCH on /admin/music-on-hold used to accept an empty routingDestinations list, saving a playlist with nothing to play. At least one media file destination is now required. Learn more
  • Creating a media file needs a file — POST /admin/media-files used to accept a request with no file attached. The upload is now required. Learn more
  • Empty phone number searches report their total — On GET /admin/phone-numbers/search, a search that matched nothing used to return total instead of the declared totalRecords, so the count could be dropped from the response. The empty result now includes totalRecords. Learn more
ConnectAgentAPI
Missed call notifications on Android, next fill dates read back once a refill is in, and the transcript channel reported as a number

Updates

Connect

  • Missed calls on Android now show a notification — In the VOXO Connect mobile app for Android, if your device can’t connect a call because the app never received it or couldn’t register in time, you now get a Missed Call notification naming the caller. Previously, nothing showed on screen. Learn more

Bug fixes

Connect

  • Calls with late notifications still ring — On Android, an incoming call used to be dropped if its push notification reached the device later than expected. This could silence real calls on a slow connection or where two devices share an account. Late notifications now ring the call through, and the app waits longer for the call to arrive before giving up. Learn more

Agent

  • Next fill date comes after the refill is in — Callers used to hear that a prescription wouldn’t be filled until a later date before they had asked for the refill, and again on a status check. It sounded like the agent was refusing to submit it. The agent now asks whether they’d like the refill, then reads the date back in the confirmation once it’s submitted. If prescriptions submitted together share a date, the agent names them in one sentence. Learn more

API

  • Transcript segments include their channel — On GET /admin/reporting/calls/{callId}, the channel on each transcript segment was declared as text, but calls return it as a number, so the field could be dropped from the response. It’s now typed to match what calls return. Learn more
PlatformAPIPharmacy
A cross-account audit log that skips saves with no changes, VOXO Connect links in welcome emails, and a reachable Import button on long CSV imports

Updates

Platform

  • Welcome emails link to VOXO Connect — Invitation and welcome emails now include App Store and Google Play buttons for VOXO Connect instead of the retired VOXO Mobility app. The mobile-login QR code is gone from them, since only the legacy softphone could read it. Learn more

API

  • Read the audit log across accounts — tenantId is now optional on GET /admin/audit-log. If you leave it off, the list covers every account your permissions reach. Use the new tenantIds parameter to narrow it. Each row includes tenantName and userEmail, so a list that spans accounts can name them. The CSV export now has Account and User columns instead of the user ID. Learn more
  • More audit log entities to filter by — The entities parameter now also accepts call-outcome, custom-voice, queue, and theme. Learn more

Bug fixes

Platform

  • Saves that change nothing are no longer logged — Saving an item without editing any of its fields used to write an audit log entry with an empty history. Those saves are no longer recorded. Learn more

Pharmacy

  • Import button stays reachable on long CSVs — In Call Campaigns → Add records → Import CSV, a file with many rows or a long list of flagged rows used to push Import past the bottom of the dialog, where you couldn’t reach it. The dialog now scrolls its contents and keeps the buttons in place. Learn more
PharmacyAgent
Reorganized agent settings, next fill dates for callers, and the LibertyRx Who Is Calling plugin download on the PMS page

Updates

Pharmacy

  • Agent settings are reorganized — The agent’s Settings tab now has five sub-tabs: General (agent name and languages), Voice, Call Routing, Webchat, and Announcements. Business hours, transfer destinations, prescriber and after-hours voicemail, the transfer ringtone, and auto transfer compounding are now all on Call Routing. Your store name, contact details, and address moved to a Store Information tab in Store Settings. Refill settings moved to a PMS Config tab on the PMS page. Each of these saves on its own. PMS Tools in the sidebar is now PMS. Learn more
  • Read-only settings now say so — If your account can open the agent’s settings or PMS Config but can’t change them, a banner now says you can view them but don’t have permission to edit. Previously, the fields looked editable. When Save Changes is unavailable, the reason now appears below the button. For example: “Choose a voice before saving.” Learn more
  • Download the LibertyRx Who Is Calling plugin from the PMS page — On Liberty RX locations, the plugin download is now a card on the Who is Calling tab of the PMS page, next to the lookup events it produces. Learn more
  • Webchat opens on every plan — The Webchat sub-tab is no longer greyed out on plans that don’t include it. It opens read-only with a note that webchat isn’t part of your current plan, so you can see what it offers. Learn more

Agent

  • Callers hear when a prescription can next be filled — If your pharmacy management system supplies a next fill date, the agent now uses it. For a prescription that can’t be refilled yet, it says when it can be. For one it can submit, it says the pharmacy won’t fill it until that date, then asks. On a status check, it mentions the date. Learn more

Bug fixes

Agent

  • Several requests in one turn are all handled — If a caller asked for a refill and something the agent can’t do, such as a delivery question, in the same turn, the agent could transfer them before submitting the refill. The refill was lost. The agent now finishes every request it can handle before handing off the call. Learn more

Pharmacy

  • Billing tab only shows for accounts that can use it — The Billing tab in Settings used to appear for accounts with read-only billing permission. Those accounts could open it but couldn’t act on anything in it. It now appears only for accounts with full billing permission. Learn more
Connect
Send touch-tone digits from the attended transfer and merge windows in VOXO Connect

Updates

Connect

  • Keypad in the attended transfer and merge windows — When you’re connected to the party you dialed for an attended transfer or a merge, a keypad button opens a dial pad. Use it to send touch-tone digits before you complete the transfer or merge, for example to pick an option in an interpreter service’s menu or enter an access code. Learn more
APIPharmacyAgent
Automatic tax on every invoice and estimate, multi-pet households for the agent, BestRx refills without a last name on the profile, and one paging and search contract for list endpoints

Updates

Agent

  • Households with several pets are handled in one go — The agent no longer asks for a pet’s name. If the caller’s number has one pet on it, the agent works from that profile. If the household has several, it reports their prescriptions as a single list. If the number has no pet on it, the agent asks for a prescription number from the label. Learn more

API

  • Relation Graph endpoint — GET /destinations/graph returns the routing graph around an entity: the entity itself, and everything it routes to or is routed from, up to the number of hops you ask for. Learn more
  • List endpoints share one paging, sorting, and search contract — The Devices, Button Layouts, and Call Campaigns list endpoints now take the same paginated, page, and recordsPerPage parameters. They sort with sortBy and sortDirection, and search with query. The name parameter still works where it did before. GET /devices/search now returns the same paginated envelope as the other list endpoints instead of a bare array. Update any code that reads that response as a plain list. Learn more

Pharmacy

  • Tax is calculated on every invoice and estimate — Tax is now applied automatically to subscriptions, scheduled plan changes, and the estimates behind the Next invoice card and the plan-change review screen. An estimate and the invoice that follows it now show the same tax line. Learn more

Bug fixes

Agent

  • The agent confirms a refill only after it’s submitted — Callers could be told their refill had been queued or sent in before the request was actually submitted. The agent now submits the refill first and describes the outcome based only on what came back. Learn more
  • BestRx refills no longer need a last name on the profile — On BestRx, the agent used to refuse a refill and offer a transfer to staff whenever the profile didn’t have both a last name and a spoken date of birth. That’s the case when the caller is identified by the number they’re calling from or by a prescription number. Those refills now go through. Learn more
  • Transferred prescriptions aren’t mistaken for the current one — When a medication had more than one prescription on file and the transferred one had the newer number, the agent reported and refilled against that record. It now works from the prescription that wasn’t transferred, so the refill goes to the script your pharmacy still fills. Learn more

Pharmacy

  • Voicemail list no longer shows another location’s messages — If you switched locations while the voicemail list was still loading, the previous location’s messages, counts, and workflow totals could stay on screen. The slower response overwrote the newer one. Now only the response for the location you’re on is applied. Learn more

API

  • Media files with missing audio return the record instead of an error — GET /media-files/{id} used to return a server error when the stored .wav file was gone. It now returns the media file record with an empty mediaUrl. Learn more
Pharmacy
Extension pickers in the pharmacy dashboard list your extensions again

Bug fixes

Pharmacy

  • Extension lists load again — Anywhere the pharmacy dashboard asked you to pick an extension, the list came back empty and searching it found nothing. This blocked creating a user on the Users tab of Store Settings, where an admin-level role has to be linked to an extension. It also left the agent’s Voice Settings with no extensions to choose as a transfer or voicemail destination. This happened because the dashboard asked for extensions with a filter value the API did not recognize, so no extensions came back. Queue and call group destinations were never affected. Learn more
AgentPharmacyAPIConnect
Asking about a family member on the same call, resetting the agent config to VOXO's defaults, and managing discounts during a plan upgrade

Updates

Agent

  • Ask about someone else on the same call — If a caller also needs help for a spouse or another family member, they can say so mid-call. The agent clears the profile it was using and identifies the new patient from scratch, verifying them the same way. One person’s prescriptions are never reported against another’s. Learn more
  • A blanket “refill everything” is confirmed, not assumed — If a caller asks to refill “all of them”, the agent now asks which medications they mean instead of submitting their whole profile. If a caller asks what they can refill, they hear the names of the prescriptions that are currently refillable and can pick from that list. Learn more

Pharmacy

  • Reset the agent config to defaults — The Agent Settings tab has a Reset to Defaults button. It sets every field back to VOXO’s defaults: greeting, voice and call behavior, refill settings, store and contact details, hours, announcements, transfer and voicemail destinations, tools, and language. It only fills the form. Nothing is applied until you select Save Changes, and Cancel Changes still puts the form back the way you found it. Learn more
  • Manage discounts while you change plans — When a plan or add-on change is an upgrade, the review screen shows Manage discounts. You can add a discount to a line the subscription will carry, or stage an existing one for removal. The discount changes apply when you confirm the change. If the change includes a downgrade, discount management is hidden. The review screen also names any discount the change ends, because dropping a product drops the discount on it. Learn more
  • Analysis tab removed — The Agent page now has two tabs, Conversations and Settings. The session stats and filters on the Conversations tab haven’t changed. Learn more

Bug fixes

Agent

  • Dates of birth heard as one long number are read correctly — Speech recognition sometimes runs a spoken date together into a single number, such as “10282” for October 2, 1982. A lookup on that number found no profile. The agent now splits a run-together date back into month, day, and year. Learn more
  • A single receiving option isn’t offered as a choice — When a pharmacy had only one receiving option configured, the agent used to ask the caller to choose from a one-item list. It now applies that option to the refill and moves on. Learn more
  • Pet profiles can be found by prescription number — On PioneerRx, a pet used to be matched only against the number the caller was calling from, so a pet on a different number couldn’t be reached. A prescription number from the label now finds the pet’s profile. A caller who has already been identified as themselves can also move on to a pet without starting over. Learn more
  • The agent waits out a pause instead of talking over it — Its “are you still there?” check-ins used to be timed from the agent’s own last word. A caller who was still thinking or reading a label could be interrupted, and the wrap-up before hanging up sounded abrupt. Check-ins now start only once both sides are quiet, and the caller speaking at any point cancels the sequence. The goodbye is also friendlier and names your pharmacy. Learn more

API

  • Retrying a failed fax works again — GET /faxes/retry/{id} and the Retry button it powers used to fail when the stored fax number wasn’t already in E.164 form. Our carrier rejected the retry as an invalid from number. Retries now normalize both numbers the same way the initial send does. Learn more

Connect

  • Mobile app uses the production calling service — Parts of the iOS and Android softphone built their SIP addresses with VOXO’s development domain instead of the production one. This could leave the app unreachable for inbound calls, and it broke blind transfer on iOS. Every path now uses the production domain. Update to version 3.12.0 of VOXO Connect to get the fix. Learn more
Connect
A fix for Android calls dropping when answered while the app is in the background

Bug fixes

Connect

  • Answered calls on Android no longer drop — On Android, a call that arrived while the mobile app was in the background could end the moment it was answered, and sometimes never rang at all. Two wake-up paths could start for the same incoming call and register competing connections. The call reached only one of them, and when the other gave up waiting, it hung up the call that had already connected. Now only one wake-up path runs per call. A late timeout can no longer end a call that’s already up, and a sign-in that’s still in progress no longer cancels the incoming call. Update to the latest version of VOXO Connect for Android to get the fix. Learn more
API
A fix for the conduit tenants list returning a server error

Bug fixes

API

  • Listing conduit tenants works again — GET /tenants/conduits used to return a server error instead of the tenant list. Every tenant in the response was checked for a healthcareVertical value that this endpoint doesn’t read, so the request failed once that field was added to tenant lists on September 2. The field is now optional on tenant list responses. The other tenant lists still return it. Learn more
AgentPharmacyAPI
Agent menu keys in 15 languages, a call recording disclosure you can turn on yourself, and multi-language audio files

Updates

Agent

  • Send callers to the agent in the language they chose — You can now point a phone menu key at Pharmacy Agent (<language>). Calls that press it run in that language from the start, whatever the location’s primary language is. Fifteen languages are available: English, Spanish, French, German, Portuguese, Italian, Dutch, Polish, Russian, Swedish, Turkish, Chinese, Japanese, Korean, and Hindi. The agent’s fixed lines now follow the call’s language instead of always being English. That covers the greeting, “please hold while I connect you”, what it says before handing the caller to staff, the recording disclosure, and its goodbye. Write your greeting in English and it’s translated. A language picker next to Preview Audio plays it back the way a caller in that language would hear it. Learn more
  • Turn on a call recording disclosure yourself — A new Compliance tab in Store Settings has a Call Recording Disclosure switch. Turn it on and pick the voice that reads it. Callers then hear a short consent message before the agent says anything else. It can’t be interrupted, and it plays only on calls that are already being recorded. It’s spoken in the call’s language. An answering machine on an outbound campaign skips it. Turning it off keeps the recording, so you don’t have to choose a voice again when you switch it back on. Learn more

Pharmacy

  • One audio file, several languages — Text-to-speech on the Audio files tab now takes a block of text for each language instead of a single block. Write each block in English and it’s translated into that block’s language before it’s spoken. The blocks are read in order into a single file, so a greeting can play in English and then Spanish. Add Language adds a block, one per supported language. Learn more

API

  • Media files carry a language and per-language text — When you create or update a media file, you can send language and multilingualText, an array of {language, text} segments. Both are returned when you read the file back. text and multilingualText are mutually exclusive, and a request that sends both is rejected. The text limit is raised from 1,000 to 5,000 characters. Learn more
  • Text-to-speech generates multi-language audio — POST /text-to-speech/voices/{id}/tts takes either text with an optional language, or segments: up to 10 {language, text} pairs, synthesized in order and returned as one audio file. Text is translated to the target language before it’s spoken. A request that sends both text and segments, or neither, is rejected. GET /text-to-speech/supported-languages lists the languages the agent supports and their codes. Learn more
  • Destination types for the agent in each language — Destinations now accept PHARMACY_AGENT_<LANGUAGE> and PHARMACY_IVR_<LANGUAGE>_<REFILL|STATUS> types, so a menu key can point at the pharmacy agent in a given language. QS1_ pharmacy destinations also resolve alongside the PioneerRx, BestRx, and LibertyRx ones. Learn more

Bug fixes

Agent

  • Prescriptions with no number go to pharmacy staff — When a pharmacy management system returned a prescription without a prescription number, the agent used to answer about it from the patient’s profile. It could ask the caller to read out a number that doesn’t exist. It now hands those callers to pharmacy staff instead, and won’t file a refill against a prescription it has no number for. Learn more
  • The agent accepts the receiving option a caller picks — Choosing how to receive a refill could fail with “there is no receiving option”, even though the message listed the option the caller had just chosen. This happened when the pharmacy system returned that option’s id as a number and the agent’s pick came back as text. The two are now compared by value. Learn more
  • Pharmacy system outages are logged as failures, not empty results — When the pharmacy system was down, the patient lookup the agent runs as a call starts used to be recorded as a successful lookup that found nobody. The session’s tool usage list showed a green success for an outage. It’s now recorded as a failed action with the error. What the caller hears hasn’t changed. Learn more
Agent
Agent actions that finish without a spoken reply no longer show as failures in a conversation's tool usage list

Bug fixes

Agent

  • Halted actions are no longer logged as failures — Some actions finish without the agent speaking a reply, because the agent handles the request itself instead of reading a result back to the caller. These steps used to be recorded as failures in a conversation’s tool usage log. When you reviewed a session, you saw errors on work the agent had actually completed. They’re now logged as successful, with a note that the reply was halted. Learn more
AgentAPI
Unreachable pharmacy systems reported as an outage on every lookup, and the healthcare vertical in tenant responses

Updates

API

  • Tenant responses include the healthcare vertical — The tenant list and a single tenant’s details now return healthcareVertical, so you can tell a pharmacy account from a general one without a second call. It’s null on accounts that aren’t in a healthcare vertical. Learn more

Bug fixes

Agent

  • Unreachable pharmacy systems are treated as an outage everywhere — When the connection to PioneerRx, Liberty RX, or BestRx was down, only some lookups recognized it. Patient profile lookups, prescription status checks, and refill requests treated the outage as “nothing found”. The caller was told no matching prescription could be found, instead of hearing that the pharmacy system was unavailable. All of those paths now report the outage, including the unreachable status BestRx returns on a refill. The agent tells the caller and transfers them to pharmacy staff. Learn more
PharmacyAPIPlatform
An itemized view of your upcoming invoice, per-product discounts, and 21 more service areas in the API reference

Updates

Pharmacy

  • See your upcoming invoice line by line — On Billing, the Next invoice card has a View details button. It opens the estimated invoice, itemized: every line with its amount, a Proration label on lines that come from a mid-period change, and the subtotal, discount, tax, total, and amount due. Learn more
  • Discounts apply per product — A discount now takes a percentage off one product instead of the whole subscription. Each product can have its own discount, so more than one can be active at a time. Integration fees are never discounted. You manage discounts in one place: Manage on the payment card. There you can stage several discounts and apply them together. Each one records the reason shown on the invoice, plus internal terms for what was agreed. Learn more

API

  • 21 more service areas in the API reference — Announcements, call outcomes, custom voices, directory, faxing, feature codes, media files, music on hold, number blocking, paging groups, parking sessions, patients, queues, short numbers, TCR, user activity, user roles, users, virtual receptionists, voicemail messages, and voicemail settings now publish their request and response schemas. Their endpoints now appear in the reference with the fields they accept and return. Learn more
  • Discount endpoints target a product line — To apply a percent discount, pass a priceId. The discount applies to that one product line, and you can discount several product lines at once. An amount discount takes no priceId and applies across the subscription, except for products that can’t be discounted. To remove a discount, pass the same priceId to name which one to remove. Without it, the subscription-level discount is removed. Learn more
  • Find me, follow me fields removed — The fmfm fields on extensions and checkOffline on call groups have been removed from requests and responses. The matching option is also gone from the call group form in the Omnia admin portal. Learn more

Bug fixes

Platform

  • e911 address validation says why it failed — When you validated an emergency address in the Omnia admin portal, every failure used to show as “Address validation failed”, whatever went wrong. It now shows the reason from the carrier’s address database, so you can correct the entry and validate again. Learn more
Pharmacy
Metered toll-free and international minutes on your invoice, and a plan check before every campaign call

Updates

Pharmacy

  • Toll-free and international minutes are metered — Time on toll-free and international calls now counts toward your invoice, alongside agent minutes. Minutes are measured from when a call is answered until it ends, rounded up to the next whole minute. A call that’s never answered isn’t billed. The Next invoice card on Billing includes them in the estimate for the period you’re in. Learn more
  • Campaigns follow the location’s plan — The Silver-or-Gold requirement for Assistant mode is now checked before each campaign call, not only when the campaign is created. If a campaign was set up while the location had the plan, it stops dialing in Assistant mode once the plan is dropped. Pickup Reminder, Refill Reminder, Contact Pharmacy, and Birthday campaigns keep running in IVR mode. Custom campaigns are deactivated. So is a Vaccine Scheduling campaign whose location no longer has the Appointment Scheduling add-on. A campaign that switched to IVR goes back to Assistant mode on its own once the plan is restored. Learn more
AgentPharmacy
US-order dates of birth, better name matching, and conversations that open straight from the dashboard list

Updates

Pharmacy

  • Open conversations from the list — Select a row in the Conversations or live sessions table to open that conversation. Right-click a row for Open conversation and Open in new tab. Conversation links now include the location the call belongs to. A link you copy to a colleague opens on the right location, not whichever one they happen to be viewing. The RX Numbers column has been removed from the table. Learn more
  • Search conversations by caller name — The search box above the conversations table now matches the caller’s name as well as their phone number. Previously, a typed name was stripped down to nothing and the search quietly returned every conversation. Learn more

Bug fixes

Agent

  • Dates of birth are heard in US order — When a caller said a date such as “one five ninety”, the agent could read it as the fifth of January or the first of May. A lookup on the wrong reading found no profile. The agent now reads spoken dates as month, then day, then year. If the transcription renders a number as a word in another language, the agent understands it as that number. Learn more
  • Names match more of the ways callers say them — An accent in the name on file, or a middle name recorded on one side but not the other, could stop a patient lookup from matching. Names are now compared with accents set aside. They’re checked against both the full name your PMS holds and the patient’s first and last name, on PioneerRx, Liberty RX, and BestRx. Callers still need to give both a first and a last name for a name lookup. Learn more

Pharmacy

  • Going back from a conversation keeps your place — Opening a conversation and going back used to reset the type, direction, and transferred filters, the search term, and the page you were on. The list now comes back as you left it.
  • Tool call details are readable — In a conversation’s tool log, a request or response with an apostrophe (a name like O’Brien) used to fail to format and print as one raw line. Call durations also showed every decimal the agent reported. Details now format correctly, and durations round to whole milliseconds or two decimal seconds.
Agent
Each strength of a medication as its own prescription, and the agent asking which one a caller means

Bug fixes

Agent

  • Two strengths of the same medication no longer collapse into one — A patient’s prescriptions used to be grouped by base drug name. A second strength of the same medication was folded behind the most recently filled one, so a caller asking for it could get an answer about the wrong script. Each medication now stands on its own, with its strength, in the profile the agent works from, on PioneerRx, Liberty RX, and BestRx. When a caller names a medication that matches more than one of theirs, the agent names the strengths and asks which they mean instead of choosing. A prescription number that a renewal has since replaced still resolves to the current prescription. Learn more
Agent
Transcription restored for calls in languages other than English, and a clear answer for prescriptions still being prepared

Bug fixes

Agent

  • Calls in a language other than English are transcribed again — If a location’s primary language isn’t English, or it allows callers to switch languages, the agent could hear nothing a caller said and end the call. In those cases it now transcribes with a multilingual model, so it understands Spanish and any other language you’ve configured. Learn more
  • Prescriptions still being prepared are named as such — On PioneerRx, a prescription your pharmacy hadn’t finished preparing used to come back with no refill verdict. The agent then gave the caller a reason in internal wording, not something they could act on. It now reports the prescription as not yet refillable and tells the caller the pharmacy is still preparing it. Learn more
Agent
Name and date of birth lookup for every pharmacy's agent, and refills on named receiving options

Updates

Agent

  • Patient lookup by name and date of birth works everywhere — The agent identifies callers by name and date of birth on PioneerRx, Liberty RX, and BestRx, with no per-location setting. Enable Search Patient Tool in Voice Settings no longer changes what the agent does, and it’s being removed from the dashboard. Callers are still matched first on the number they’re calling from. A prescription number read off the label still resolves fastest. Learn more

Bug fixes

Agent

  • Refills go through on named receiving options — On Liberty RX, receiving options are named rather than numbered. The agent couldn’t pass back the option a caller chose, so it asked them to pick again. It now sends the option exactly as your PMS defines it and submits the refill. Learn more
PharmacyAgentAPI
All payment method types on Billing, the vaccine shown on bookings, and the agent ending calls instead of leaving the line open

Updates

API

  • Default payment method is reported as a single shape — Pharmacy billing responses now return defaultPayment as one object, instead of a card-or-bank union. It has the Stripe payment method type, a display-ready label, and best-effort brand, last4, expMonth, expYear, bankName, accountType, and email fields. Any payment method Stripe holds is reported. Previously, anything that wasn’t a card or a US bank account was left out.

Bug fixes

Pharmacy

  • Billing shows every payment method, not just cards and bank accounts — The payment card in the Billing tab used to show No payment method on file when the default method was something other than a card or a US bank account, even though the account was set up to be charged. Any method now appears with its own details. Link shows the email it’s attached to, and anything else gets a readable label. Learn more
  • Bookings show which vaccine the appointment is for — The vaccine recorded on an appointment now appears next to the patient’s name in both the calendar and list views of Bookings. Previously, you could only see it inside the booking itself.

Agent

  • The agent hangs up instead of leaving the line open — On an outbound campaign call, the agent could record the outcome, say goodbye, and leave the patient sitting on an open line. It now asks whether the patient needs anything else, then ends the call itself. If it transfers a call to pharmacy staff, it still leaves the call for them to end. Learn more
  • No repeat lookup once the caller is identified — Once the agent has a caller’s profile, a prescription number they read out is matched against the prescriptions it already holds. Previously, it started another lookup and announced a second time that it had found their profile.
PharmacyAgent
Appointment scheduling on your own Google or Outlook calendars, vaccine booking on outbound campaigns, and subscription management from the dashboard

Updates

Pharmacy

  • Appointment scheduling — On the new Scheduling page, you can connect a Google or Outlook calendar, define the appointment types patients can book, and manage bookings from a calendar or list view. Bookings are assigned round-robin across the staff calendars you choose. Each one is written to that person’s own calendar, so it never collides with meetings already booked. You can add, reschedule, and cancel appointments by hand. Each change emails the staff member the appointment is assigned to. Requires the Appointment Scheduling add-on. Learn more
  • Manage your subscription from the dashboard — The Billing tab in Settings now shows what each location is paying for, and you can change it yourself. Set plans and add-ons per location, review what’s due today before you confirm, update the card on file, and download invoices. Upgrades apply immediately and are prorated. Downgrades are scheduled for your next renewal. If an account is past due, it gets a banner with a link to pay the outstanding invoice. Learn more
  • Vaccine Scheduling call campaigns — A sixth campaign type calls patients to offer a vaccine and books the appointment on the call. You pick the calendar event type the appointment books against and list the vaccines the agent can offer. Assistant mode only, and requires the Appointment Scheduling add-on.
  • Assistant-mode campaigns now available on Silver — Creating a call campaign in Assistant mode used to require the Gold plan. It’s now available on Silver as well as Gold. IVR-mode campaigns still have no plan requirement. Learn more

Agent

  • The agent books vaccine appointments — On a Vaccine Scheduling campaign call, the agent offers the vaccines configured on the campaign. It reads back open times from your calendar for the day the patient chooses, then books the slot they pick. If a slot was just taken or is less than an hour away, the agent says so and offers another time. Patients who call in asking to schedule are still handed off to pharmacy staff. Learn more
  • Outbound campaign calls recognize an answering machine — The agent now listens to how a campaign call was answered before it starts talking. If it hears a voicemail greeting, it leaves a brief message saying the pharmacy will call back, along with the number to call to stop receiving calls. If it hears a carrier message such as “the number you have dialed is unavailable”, it ends the call without leaving a message. Both are recorded on the campaign record as a VOICEMAIL disposition. Learn more
ConnectAPI
Microsoft and Google single sign-on in the same browser tab, and a branch filter on the extension list endpoints

Updates

API

  • Filter extensions by branch — The extensions list endpoints now accept an optional branchId query parameter that narrows results to a single branch. Each extension in the response also includes its branchId.

Bug fixes

Connect

  • Microsoft single sign-on no longer returns you to the login screen — Signing in with Microsoft could send you back to the login page without signing you in. The sign-in popup couldn’t hand its result back to VOXO Connect. Google and Microsoft sign-in now complete as a redirect in the same browser tab instead of a popup window, so pop-up blockers no longer get in the way. Learn more
PharmacyAPI
Correct agent conversation timestamps in the pharmacy dashboard

Bug fixes

Pharmacy

  • Agent conversation timestamps show the correct time — Session dates and times in the agent Conversations tab used to be converted using the time zone of the date-range filter’s start date. They were also returned without a time-zone marker, so they could appear hours off. Session times are now returned in UTC and shown in your local time.
AgentPharmacy
Routing to staff or voicemail by channel and store hours for requests the agent can't handle, and fewer offer-to-help prompts during transfers

Updates

Agent

  • Out-of-scope requests route by channel and store hours — Some requests are outside what the agent can handle: a delivery, an insurance or billing question, medical or dosage advice, appointment or vaccine scheduling, a special order, or a message for staff. For these, the agent now hands the request off instead of improvising. On a call during business hours, it connects the caller to pharmacy staff. Outside business hours, it offers to take a voicemail. In chat and SMS, it gives the caller the pharmacy’s phone number. Patients are never routed to the prescriber voicemail box. Learn more

Bug fixes

Agent

  • Offer-to-help prompt no longer interrupts transfers it shouldn’t — With Offer help before transferring enabled, the agent no longer makes the self-service offer in these cases: after it proposed connecting the caller itself, after the caller has already used a lookup, status check, or refill, when the destination is a voicemail box, or for a request the agent has no way to handle. Learn more
  • No hand-off the agent can’t complete — The agent now checks that a call leg is available before it announces a transfer. If none is available, the caller is told the transfer didn’t go through. Previously, they heard a hand-off line and waited on a connection that never happened.
PharmacyAPI
Caller identification (Who is Calling) for pharmacies on Liberty RX

Updates

Pharmacy

  • Liberty RX caller identification — If your pharmacy uses Liberty RX, you can now match inbound callers to patient records from your Liberty workstation. It’s the same Who’s Calling lookup already available for PioneerRx. Lookups appear in the Who is Calling tab of PMS Tools. Learn more
AgentPharmacy
A hand-off to staff, instead of a guess, when a patient calls back about a call from the pharmacy

Updates

Agent

  • Return-call inquiries hand off to staff — When a patient calls back and says the pharmacy called them (for example, “you called me” or “I missed a call from you”), the agent no longer guesses why they were called. It offers to connect the patient with the pharmacy team. It still handles refill or prescription-status requests directly when that’s what the patient needs.
PharmacyPlatform
A fix for a payment error when turning the PioneerRx agent on or off with an old canceled subscription on the account

Bug fixes

Pharmacy

  • PioneerRx agent toggle no longer returns a payment error — Enabling or disabling the PioneerRx agent for a pharmacy used to fail with a “Payment Required” error if the account had an older canceled subscription on file. It now works, and plan changes apply to the active subscription.
APIPlatform
CSV export for the Admin audit log and extensions endpoints, and a fix for the Indiana state code

Updates

API

  • CSV export for Admin audit log and extensions — The Admin audit log and extensions list endpoints now accept an export query parameter. It returns the full filtered result set as a downloadable CSV instead of a paginated JSON response. This powers the Export button on both Admin Portal pages, so the download includes everything that matches your filters, not just one page of results.

Bug fixes

API

  • Indiana state code accepted — Requests with an Indiana address used to fail with an “Invalid State Code.” error. US state-code validation now accepts IN (Indiana).
AgentPharmacy
Correct LibertyRx prescription statuses for status checks and refill eligibility

Bug fixes

Agent

  • LibertyRx prescription statuses report correctly — Prescription statuses from LibertyRx now report accurately during status checks and refill requests. Previously, statuses such as No Refills, Expired, Discontinued, On Hold, and Too Early were treated as refillable. They no longer are. A verified prescription now shows as Filled and Ready for Pickup instead of an in-progress state. This applies to both single and bulk refill requests.
AgentPharmacy
Refills that use each patient's default receiving option when that setting is on

Bug fixes

Agent

  • Refills use the patient’s default receiving option — When receiving options are set to use each patient’s default preference from your PMS, the agent now applies that patient’s default (such as pickup, mail, or delivery) when it files refill requests on PioneerRx. Previously, it fell back to the location default. This applies to both single and bulk refill requests. Learn more
APIPlatform
Only finalized turns in the Transcription End webhook and stored call transcripts

Bug fixes

API

  • Transcripts include only finalized turns — The TRANSCRIPTIONEND webhook and the stored call transcript now include only completed, finalized turns. Previously, interim (partial) speech results could slip in as duplicated or half-finished segments. Those are no longer written, so the transcript array holds one clean entry per turn. Learn more
AgentAPIPharmacyPlatform
A recording-consent disclosure on outbound agent calls, a new Transcription End webhook, and fixes for queue reporting and call-center login

Updates

Agent

  • Recording-consent disclosure on outbound calls — When recording consent is enabled for your pharmacy agent, outbound calls now open with a spoken recording disclosure before the greeting. It tells the patient the call is recorded and that staying on the line is their consent. It plays on every outbound agent call and can’t be interrupted, so it’s always heard. Learn more

API

  • New Transcription End webhook — A new TRANSCRIPTIONEND webhook fires when the transcription session for a transcribed call ends. It delivers the full transcript plus an insights object with AI-generated analysis (summary, sentiment, topics, and intents). To opt in, configure a webhook with type TRANSCRIPTIONEND. Learn more

Bug fixes

Platform

  • Queue calls record their answer time — Calls answered on a different server instance than the one hosting the queue used to record their answered time incorrectly. They now record it correctly, so queue call disposition and reporting are accurate.

Connect

  • Call center login for multi-location organizations — Call center users at some multi-location organizations couldn’t load their call centers. This is fixed.
AgentPharmacy
Identity checks before prescription details on outbound campaign calls, plus reporting and calling fixes

Updates

Agent

  • Campaign calls verify identity before sharing prescription details — When the pharmacy agent places Pickup Reminder, Refill Reminder, or Contact Pharmacy calls in Assistant mode, it now confirms who it’s speaking with before sharing any prescription information. The opening message gives only the pharmacy name and a general reason for the call. The agent then asks for the patient’s date of birth to verify identity. This is the same verify-before-disclosure flow it uses on inbound calls. Birthday and Custom campaigns are unchanged. Learn more

Bug fixes

Pharmacy

  • Campaign calls labeled correctly in reporting — Assistant-mode outbound campaign calls used to show as inbound in the agent’s Conversations session list. They’re now labeled correctly, so the Direction filter reflects them accurately.
  • Call campaign creation fixed — Some pharmacies got an error when creating outbound call campaigns. That error is fixed.

Platform

  • Caller name fallback — When the carrier lookup can’t return a caller’s name, incoming calls used to show an internal error message. They now show the caller’s phone number instead.
Pharmacy
A fix for typing phone numbers when adding call campaign records by hand

Bug fixes

Pharmacy

  • Manual phone number entry in call campaigns — When you add a record to an outbound call campaign by hand, you can type the patient’s phone number directly into the Manual entry dialog again. Learn more
AgentPharmacy
A new catalog of named AI voices for the pharmacy agent's voice, generated media, and greeting audio

Updates

Agent

  • New AI voice catalog — When you choose the pharmacy agent’s voice in Voice Settings, you now pick from a searchable catalog of named AI voices. Each voice has a short description of its persona. You use the same catalog to pick a voice when you generate media files and voicemail greetings. Voices are no longer tied to a single speech provider, so the agent can keep speaking in your chosen voice even if one provider has an outage. Learn more
AgentPharmacy
PMS outages during calls: the agent tells the caller and transfers them to staff

Updates

Agent

  • Agent handles PMS outages — When the agent can’t reach your pharmacy management system during a call (for example, the connection to PioneerRx or BestRx is down), it now recognizes the outage, tells the caller, and transfers them to pharmacy staff. Before, it retried or ended the call with a generic error. If the agent can’t load your pharmacy’s configuration at all when a call starts, it asks the caller to contact the pharmacy directly and ends the call, instead of leaving them in silence. Learn more
AgentPharmacy
Press 0 to reach a person, and short keypad entries like a birth year no longer read as a prescription number

Bug fixes

Agent

  • Keypad input fixes — Callers can now press 0 on their keypad at any point to tell the agent they want to speak with a person. The agent also no longer mistakes a short keypad entry, such as a four-digit birth year entered for date-of-birth verification, for a prescription number. Learn more
PharmacyAgentAPI
An agent setting to offer help before transferring, Device Models and Phonebooks APIs, and more call details in ENDCALL webhooks

New features

Agent

  • Offer help before transferring — The pharmacy agent’s Voice Settings have a new Offer help before transferring toggle. When it’s on and a caller asks to be transferred, the agent makes one brief offer to help them directly before connecting them to staff. If the caller declines or asks again, the agent transfers right away. Emergency, safety, and compliance transfers always connect immediately. Learn more

Updates

API

  • Device Models API — New endpoints let you list, create, retrieve, update, and delete device models under /v2/admin/device-models. Learn more
  • Phonebooks API — New endpoints let you list, create, retrieve, update, and delete phonebooks under /v2/admin/phonebooks. Learn more
  • More call details in the ENDCALL webhook — The ENDCALL webhook payload now includes call-identity fields (direction, start, answeredAt, cidNum, cidName, dialedNum, uniqueId, isTransferred, isRecorded). You can identify a call and measure its duration and ring time without matching it back to the STARTCALL event. Learn more
Pharmacy
Gold plan now required for Assistant-mode pharmacy call campaigns

Updates

Pharmacy

  • Assistant mode now requires the Gold plan — Creating, editing, or duplicating a pharmacy call campaign in Assistant mode now requires an active Gold plan. Campaigns in IVR mode aren’t affected. Custom campaigns only run in Assistant mode, so they always require the Gold plan. Learn more
API
A pharmacy agent settings fix and API improvements

Updates

API

  • VoIP push notifications now include a sentAt timestamp (epoch milliseconds). Mobile clients can use it to detect and discard stale incoming-call notifications. Learn more
  • V2 API schema improvements across Emergency Locations, Messaging, Number Porting, Phone Numbers, Tenants, and Tenant Notes endpoints. Learn more

Bug fixes

API

  • Partial updates to a pharmacy agent (PATCH /v2/admin/pharmacy/agents/:id) used to silently reset announcement assignments, identity playback, and the alternate ringtone when those fields were left out of the request. Omitted fields are now left unchanged. Learn more
Agent
PioneerRx patient matching limited to your store

Bug fixes

Agent

  • PioneerRx patient lookups occasionally matched patients who belong to another store. The agent now matches only patients on file at your pharmacy. Learn more
API
Device search in the List Devices API

Updates

API

  • Device search — The List Devices endpoint now accepts an optional query parameter, so you can filter devices by name or MAC address. Learn more
Agent
Multi-profile patient matching, BestRx patient lookup, and agent accuracy fixes

New features

Agent

  • Multi-profile patient matching — When more than one PioneerRx profile matches the name and date of birth a caller gives (for example, family members who share a phone number), the agent now asks for the street address on file to find the right profile before continuing. If the address doesn’t narrow it to a single profile, the agent transfers the call to pharmacy staff. Learn more

Updates

Agent

  • BestRx patient identification — The agent can now look up patients on BestRx by name and date of birth. It uses the same patient-search flow already available for PioneerRx and Liberty RX. Turn it on with Enable Search Patient Tool in Voice Settings. Learn more

Bug fixes

Agent

  • Better touch-tone prescription entry. The agent now allows a longer pause between digits, so callers reading a number off a bottle aren’t cut off. Callers can also press # to submit the number as soon as they finish. Learn more
  • The agent used to imply it could handle requests it can’t, such as deliveries, bringing medications out, or passing messages to staff. It now says it can’t help with those and offers to transfer the caller. Learn more
PharmacyAgentTelecomAPI
Agent language controls, BestRx outbound faxing, music-on-hold play order, and reporting fixes

New features

Agent

  • Language controls — A new Language sub-tab in agent Settings lets you set the agent’s primary language and lock the agent to it so it never switches. You can also pick additional languages the agent may switch to when a caller explicitly asks. Learn more

Pharmacy

  • BestRx outbound faxing — Pharmacies using BestRx can now send outbound faxes through the VOXO platform. This matches the outbound fax support already available for Liberty RX. Learn more

Updates

Agent

  • Hyphenated and multi-part name matching — The agent now matches patients whose first or last name has multiple parts or a hyphen (for example, “Ana Maria” or “Garcia-Lopez”) part by part. If the first attempt finds no match, it tries alternate spellings. This improves patient lookup on PioneerRx, BestRx, and Liberty RX. Learn more
  • Pet patients on PioneerRx — The agent now recognizes pet (animal) profiles on PioneerRx, including pets with no prescriptions on file. Callers asking about an animal’s medications are matched to the right profile. Learn more

Telecom

  • Music on hold play order — Music on hold can now play its tracks in a fixed order or shuffle them randomly. You set this for each music-on-hold list. Learn more

API

  • BestRx outbound fax endpoint — A new BestRx integration endpoint sends an outbound fax from a pharmacy’s number. The BestRx fax list and retrieval endpoints also now validate their parameters. Learn more
  • statusDate on Liberty RX status responses — Liberty RX prescription status responses now include statusDate, the date of the most recent status change. Learn more

Bug fixes

Agent

  • Liberty RX prescription status mapping is further corrected, so ready, picked up, on hold, and in-progress statuses report accurately. Learn more

Pharmacy

  • Distributed queue statistics used to return zeros in queue reporting. This is fixed. Learn more
Agent
Liberty RX prescription status check fixes

Bug fixes

Agent

  • Liberty RX prescription status checks used to return the wrong status or no status at all. Statuses now map correctly to in progress, ready for pickup, on hold, and picked up. Learn more
  • Prescription status checks placed through the automated phone system used to fail. Status lookups now complete reliably on both Liberty RX and PioneerRx. Learn more
Agent
Pharmacy agent turn-taking and refill receiving-option fixes

Bug fixes

Agent

  • The pharmacy agent used to take its turn too quickly and talk over callers. It now waits a moment longer for the caller to finish speaking before it responds. Learn more
  • The agent occasionally applied a receiving option (such as mail or delivery) to a refill when none was offered or the caller hadn’t chosen one. It now only sends a receiving option when the caller actually selects one. Learn more
APIAgent
Button Layouts API and a fix for how the pharmacy agent groups prescriptions

New features

API

  • Button Layouts API — New endpoints let you list, retrieve, create, update, and delete phone button layouts. Each layout sets a key range and a configuration for each key, using Park, Speed Dial, and BLF buttons. Learn more

Bug fixes

Agent

  • Fixed the pharmacy agent sometimes grouping a patient’s prescriptions incorrectly. Medications with a strength, unit, or item code in their name are no longer merged under the wrong drug. Prescriptions without a readable drug name are still listed instead of dropped. Learn more
AgentAPI
Faster, more reliable pharmacy agent calls and prescription status API additions

Updates

Agent

  • Faster greetings and transfers — The agent now speaks its greeting and transfer hand-off line directly instead of waiting on the language model. Callers hear the agent answer and route the call with less delay. Learn more
  • New wording when a refill is already pending — When a prescription already has a refill working through your pharmacy system, the agent now tells callers the refill “is being processed” instead of “has already been requested.” Learn more

API

  • drugName on prescription status responses — BestRx, LibertyRx, and PioneerRx prescription status responses now include drugName, so your integrations can show the medication next to the status. Learn more
  • dob on bulk query refill — The PioneerRx bulk-query-refill endpoint accepts an optional dob parameter. Date of birth verification is enforced when the request comes through the IVA path. Learn more

Bug fixes

Agent

  • Fixed the pharmacy agent sometimes verifying a date of birth the caller hadn’t given. The agent now verifies a date of birth only after the caller provides one, and asks again if it’s missing. Learn more
  • Fixed transfers failing when a destination name had extra spaces or different capitalization. Destination names now match regardless of whitespace and case. Learn more
  • Fixed the agent telling callers a prescription wasn’t found during a status check. This happened when the prescription was found but its drug name field was empty. Learn more
  • Fixed the agent saying “please hold” twice and trailing off with extra words after a transfer. The hand-off line now plays once, and then the agent stops speaking. Learn more
PharmacyAgent
Birthday and custom campaigns, one-time scheduling, auto-transfer for compounding calls, and bulk refills

New features

Pharmacy

  • Birthday call campaigns — A new Birthday campaign type calls patients with a greeting on their birthday. Turn on Enable Automated Birthday Calls on the new Settings tab, and today’s birthdays from your PMS are added to the campaign each day. Learn more
  • Custom campaigns — A new Custom campaign type covers outreach that doesn’t fit a system template. Custom campaigns always run in Assistant mode, and you can create as many as you need per location. Learn more
  • Always-on or one-time scheduling — When you create a campaign, choose Always-on to keep it running during its calling hours, or One-time to schedule it for a specific date and time. Learn more
  • Refreshed Call Campaigns page — The Outbound Campaigns page is now Call Campaigns, with Report, Campaigns, and Settings tabs. The Campaigns tab lists every campaign, with search, status filtering, and archive controls. Create Campaign opens a guided wizard. Learn more

Agent

  • Auto Transfer Compounding — The Tools sub-tab in agent Settings has a new Auto Transfer Compounding section. When it’s on, the agent transfers calls about compounding straight to a destination you pick instead of trying to refill them. Learn more
  • Bulk refills in one request — On PioneerRx, BestRx, and LibertyRx, the agent now files all of a caller’s refill requests in a single bulk submission. It then reports the outcome for each prescription in one summary, instead of repeating the refill flow for each script. Learn more

Updates

Pharmacy

  • Pickup Refill is now Pickup Reminder — The system campaign type called Pickup Refill is now Pickup Reminder, to match the Refill Reminder naming. Existing campaigns and records carry over automatically. Learn more
Agent
Drug pronunciation dictionary paused

Updates

Agent

  • Drug pronunciation dictionary paused — The phonetic dictionary the pharmacy agent used to pronounce common prescription medications has been temporarily removed while it’s refined. For now, drug names are spoken with the standard text-to-speech voice. The agent still adds the verified patient’s own medications to speech recognition during a session, so callers are understood reliably when they mention their medications by name. Learn more
Pharmacy
Audio preview for special hours and filters that stay set across the dashboard

Updates

Pharmacy

  • Preview audio when linking it to special hours — When you link an audio file to special hours, a play button now appears next to the file picker. You can listen to the selected file before saving. Learn more
  • Filters stay put as you move around the dashboard — Search terms now stay in place when you switch tabs or leave a page and come back, the same way date-range filters already did. This applies across Calls, Faxes, Voicemails, IVR, Reports, Campaigns, and other list views.
Agent
Fix for a pharmacy agent refill loop

Bug fixes

Agent

  • Fixed the pharmacy agent getting stuck in a loop when a caller asked to refill a prescription that wasn’t eligible. The agent now tells the caller the prescription isn’t refillable and offers to transfer the call to pharmacy staff. Learn more
PharmacyAgentAPI
Drug pronunciation dictionary, medication strength and history handling, and direct campaign CSV downloads

New features

Agent

  • Drug pronunciation dictionary — The pharmacy agent now uses a phonetic dictionary of common prescription medications, so drug names sound natural on calls. The agent also adds the verified patient’s own medications to speech recognition for the rest of the session. This helps the agent understand callers when they mention their medications by name. Learn more

Pharmacy

  • All option in the agent session Type filter — The Type filter in the session list on the pharmacy agent page now has an All option, so you can view voice, web, and SMS sessions together. All is the new default. Learn more

Updates

Agent

  • Prescriptions grouped by drug name, with prior fills — For PioneerRx pharmacies, the agent now groups prescriptions by drug name and keeps prior fills available in each group. That lets it find the right script when a caller asks about a strength that differs from the latest fill (for example, an older 3.125 mg Carvedilol versus a current 6.25 mg). Medications replaced by a newer strength are flagged, so the agent doesn’t suggest renewing them. Learn more

Pharmacy

  • Campaign exports download directly — Exporting outbound campaign records now downloads the CSV in your browser instead of emailing you a link. The file name includes your location, campaign type, and date range, and timestamps are converted to your local timezone. The Date/Time column is now Timestamp in the campaign UI and the CSV. Exports over 512,000 records are blocked with a message. If you hit the limit, narrow the date range and try again. Learn more

API

  • Holiday audio plays during the holiday window — Holiday and special hours media now also plays while the holiday is in effect, not only during the notification period in the days before. mediaFileId is still optional on the create and update holiday endpoints. Learn more
  • timezone query param on campaign records export — The pharmacy campaign records export endpoint accepts an optional timezone (IANA name) that sets how timestamps are formatted in the CSV. The endpoint now streams the CSV in the response (with Content-Disposition) instead of emailing it. Learn more

Bug fixes

API

  • Fixed DELETE requests with an empty JSON body returning 500. Empty bodies are now treated as no payload, and the request goes through normally.
Agent
Liberty RX prescription status checks in the pharmacy agent

Updates

Agent

  • Liberty RX status checks — The pharmacy agent can now look up prescription status for pharmacies on Liberty RX. Patients can ask whether a refill is ready, in progress, or has an issue, and the agent gives them the current status from the pharmacy system. Learn more
PharmacyAPIAgentConnect
Default voice for generated audio, caller ID on PioneerRx refills, opt-out enforcement, and reporting fixes

New features

Pharmacy

  • Default voice for audio generation — The Audio files tab has a new Location Settings option (the gear icon next to the upload button) where you pick a default voice gender and a specific voice. That default is pre-selected wherever you generate text-to-speech audio: Audio files, Announcements, IVR media, voicemail greetings, special hours, and outbound campaigns. Staff don’t have to pick a voice again for each new file. A new Voice column in the Audio files table shows the voice used for each file, and editing a generated file pre-selects its original voice. Learn more

Updates

Pharmacy

  • Caller ID on PioneerRx refill comments — Refill requests that the agent or IVR submits to PioneerRx now include the caller’s name and number in the script comment, along with the source and timestamp. Staff can see who requested the refill without leaving Pioneer. Learn more
  • Campaigns respect patient opt-outs — Outbound campaign records for patients who have opted out of voice contact are now rejected when they’re created. Pickup-ready and refill-ready uploads from PioneerRx and BestRx skip those numbers before they reach the queue. Learn more

API

  • Patient consent fields — The patient consent check endpoint now returns a shouldRepromptVoice flag. The upsert endpoint accepts an optional source (ivr, agent, or manual) and at least one of sms or voice. Campaign record creation rejects opted-out numbers with 403. Learn more
  • recorded filter on pharmacy call stats — The pharmacy call stats endpoint accepts a recorded filter that limits results to recorded calls. Learn more
  • transferred filter on agent call stats — The pharmacy agent call stats endpoint accepts a transferred filter. Learn more
  • Default voice on pharmacy agent — The pharmacy agent endpoints accept and return defaultVoiceGender and defaultVoiceId, the location’s default voice for generated audio.
  • voiceId on media files — Media file create, update, and list responses include voiceId, so you can see which voice generated a text-to-speech file.
  • SMS media upload response — The Connect messaging media upload endpoint now returns a flat array of URLs instead of { urls: [...] }. If your integration reads the wrapped shape, update it.

Bug fixes

Pharmacy

  • Fixed recordings being hidden on the Calls page for internal and parked calls. Any call with a recording can now be played, regardless of disposition. Learn more
  • The Transferred column on the agent sessions table now shows Yes / No instead of True / False, and the Agent stats CSV export now includes the column. Learn more

Connect

  • Fixed image paste failing when sending SMS to a DID in Connect Web. Learn more

Agent

  • Fixed the pharmacy agent not playing its configured greeting on WebRTC sessions (such as the in-app agent test). Web sessions now behave the same as phone calls. Learn more
PharmacyAgent
Pharmacy agent calls for outbound campaigns, Liberty RX click-to-call, and an agent SMS fix

New features

Agent

  • Outbound campaign calls — The pharmacy agent now places outbound calls for campaigns set to Assistant mode. It introduces the call and walks the patient through a pickup reminder, refill reminder, or contact pharmacy message. It captures the patient’s response and detects voicemail, so the disposition is recorded correctly. Learn more

Updates

Pharmacy

  • Liberty RX click-to-call — Pharmacies on Liberty RX can now use click-to-call to dial patients from their Liberty workstation. Activity shows up in the Click to Call tab of PMS Tools. Learn more

Bug fixes

Agent

  • Fixed pharmacy agent SMS conversations failing when the agent looked up prescriptions, requested refills, or checked refill status. These now work over SMS as well as on voice calls.
Agent
Knowledge Base sections for the pharmacy agent

New features

Agent

  • Knowledge Base sections — The Knowledge Base sub-tab in agent Settings now supports multiple named information sections, each with a Title and Data field. The agent reads every section when it answers patient questions. You can put separate topics, such as policies, services, and FAQs, in their own entries instead of one block of text. Learn more
Agent
More reliable prescription number lookups in the pharmacy agent

Bug fixes

Agent

  • Fixed prescription lookups failing when an rx number was transcribed with spaces or other non-digit characters. The agent now strips those characters before checking the pharmacy system. This makes rx entry more reliable, whether the caller uses the keypad or says the number. Learn more
Connect
VOXO Meet video display fix

Bug fixes

Connect

  • Fixed remote participant video looking zoomed in or cropped during VOXO Meet calls. Video now shows at its full aspect ratio in grid view, active speaker view, and screen-sharing layouts. Learn more
Pharmacy
Tools sub-tab paused and a refill config fix

Updates

Pharmacy

  • Tools sub-tab paused — The Tools sub-tab in agent Settings, including the Cal.com vaccine scheduling integration, is unavailable while it’s being updated. It will return in a future release. Learn more

Bug fixes

Pharmacy

  • Fixed agent Refill Config sometimes removing the wrong row when you deleted a receiving option and more than one option was configured. Learn more
PharmacyAgent
Vaccine scheduling, a ringtone for agent transfers, refill loop limits, and IVR cleanup

New features

Agent

  • Vaccine appointment scheduling — The pharmacy agent can now book vaccine appointments for callers through a connected Cal.com account. Add your Cal.com API key in the new Tools sub-tab of agent Settings. The agent then offers live availability and creates the booking on your calendar, with no staff involvement. Learn more

Pharmacy

  • Agent transfer ringtone — Voice Settings now has an Agent Transfer Ringtone option. Pick one of ten alternate ringtones (matching the alternate ringtone slots on Yealink deskphones) so staff can tell an agent-transferred call from a regular inbound call. Learn more
  • Refill loop attempts — Refill Config now lets you cap how many times the IVR retries filling a script before it exits the refill flow. Choose a value from 1 to 10 so callers don’t get stuck in long refill loops. Learn more

Updates

Pharmacy

  • One end destination for IVR timeout and wrong-key flows — The IVR timeout and wrong-key-press selectors now accept exactly one terminating destination: voicemail, extension, custom destination, queue, call group, or another IVR. You can still add media playback alongside it. Key press options also have a refreshed, compact layout, where the selected destination is also the control you use to change it. Learn more
PharmacyAgent
Keypad input on agent calls and bug fixes

New features

Agent

  • Keypad input on calls — Callers can now enter their prescription number on the touch-tone keypad during a call. The agent reads the digits as the rx number and looks up the prescription without asking for a name and date of birth first. Learn more

Bug fixes

Agent

  • Fixed the agent reading out a caller’s full medication list. The agent now asks which medication the caller needs help with instead of listing every prescription on file. Learn more

Pharmacy

  • Fixed an issue where you couldn’t create new users in the Pharmacy Dashboard. Learn more
PharmacyAPITelecom
Optional Rx fields for Contact Pharmacy campaigns and a click-to-call caller ID fix

Updates

Pharmacy

  • Optional fields for Contact Pharmacy campaigns — When you add records to a Contact Pharmacy outbound campaign, Rx Number and Drug Name are now optional. The CSV import and manual entry forms mark these fields as optional. A row is valid as long as the patient name and phone number are filled in. Learn more

API

  • Rx Number optional for Contact Pharmacy campaign records — The endpoint that adds records to a campaign now accepts requests without rxNumber when the campaign type is contactPharmacy. Other campaign types still require rxNumber. Learn more

Bug fixes

Telecom

  • Fixed the caller ID on click-to-call. The originator’s phone used to show the originator’s own caller ID. It now shows the destination party’s name and number.
PharmacyAPI
Audio files for special hours and bug fixes

New features

Pharmacy

  • Audio files for special hours — When you add or edit special hours, the Audio File field now pulls from your Audio files library. You can also create a new audio file inline without leaving the form. Previously, this field used the Announcements library. Learn more

Updates

API

  • Holidays now reference media files — The holidays endpoints now link audio with mediaFileId instead of announcementId, matching the rest of the audio model. Update any integrations that reference the old field. Learn more

Bug fixes

Pharmacy

  • Fixed tool call details not expanding reliably in agent session transcripts. Learn more
  • Fixed the announcement editor closing unexpectedly when you used the schedule date picker. Learn more
API
Call recording channel fix

Bug fixes

API

  • Fixed toggling call recording during a queue call sometimes selecting the wrong outbound channel.
API
More detailed API validation errors

Updates

API

  • Detailed validation errors — When a request is invalid, the API response now includes a validationErrors array with field-level details. You can see exactly which fields are wrong and fix the request. Learn more
PharmacyAgent
Fax retry, Liberty RX outbound fax support, and an agent language fix

New features

Pharmacy

  • Retry failed faxes — Outbound faxes that fail to deliver now show a Retry button, so you can send them again without re-creating the fax. Learn more

Updates

Pharmacy

  • Liberty RX outbound fax support — Pharmacies using Liberty RX can now send outbound faxes through the VOXO platform. Learn more

Bug fixes

Agent

  • Fixed the pharmacy agent sometimes switching to Spanish too early in a call.
Pharmacy
URAC multi-queue selection and full CSV exports

Updates

Pharmacy

  • Multi-queue selection for URAC reporting — On the URAC tab, you can now select multiple entry queues at once and see their combined compliance data in a single report. All configured entry queues are selected by default. Learn more
  • Full URAC CSV export — Exporting URAC queue stats as CSV now includes every record across all pages, not just the rows currently displayed.
Telecom
Call parking fix

Bug fixes

Telecom

  • Fixed newly created call parking spaces not working correctly.
PharmacyConnect
Custom voicemail destinations, analytics export improvements, and a messaging fix

Updates

Pharmacy

  • Custom destinations for voicemail routing — Prescriber voicemail and after-hours voicemail settings now support custom destinations as well as voicemail boxes, so you have more options for routing these calls. Learn more

Connect

  • Analytics CSV export improvements — Analytics CSV exports now include proper column headers even when the dataset is empty, and every row has the same columns.

Bug fixes

Connect

  • Fixed messages not showing up in conversations.
PharmacyTelecomAgent
Agent context details, voicemail greetings from the media library, and bug fixes

New features

Pharmacy

  • Voicemail greeting media library — When you set up a voicemail greeting, you can now pick an existing recording from your media library instead of uploading or recording a new one each time. Learn more
  • Agent section details — You can now add your own context descriptions to transfer destinations, prescriber voicemail, after-hours voicemail, and location settings. The agent uses these details to make more informed decisions when handling calls. Learn more

Updates

Pharmacy

  • Clickable IVR dashboard widget — The IVR analytics widget on the dashboard now links straight to the IVR configuration page. Learn more
  • Consistent phone number formatting — Phone numbers now use the same format throughout the application, so they’re easier to read.

Bug fixes

Telecom

  • Fixed call parking sometimes showing the wrong call state after rapid park/unpark actions.

Agent

  • Fixed a compatibility issue with refill processing for pharmacies using Liberty RX.
Agent
Agent transfer improvements and a prescription status fix

Updates

Agent

  • Improved call transfers — The pharmacy agent now finds transfer destinations by name instead of by number, which makes transfers more reliable and consistent. Learn more

Bug fixes

Agent

  • Fixed the agent giving an incomplete message when a prescription status was unavailable. The agent now tells the caller that the status isn’t available at this time.
PharmacyConnect
New PMS Tools tabs, more agent configuration, and bug fixes

New features

Pharmacy

  • Click to Call activity log — The PMS Tools page has a new Click to Call tab. It shows outbound calls started by your agent or IVR, with success/fail stats and searchable event logs. Learn more
  • Who is Calling activity log — A new Who is Calling tab in PMS Tools shows caller identification lookups, so you can see when inbound callers are matched to patient records. Learn more
  • Custom transfer destinations — The pharmacy agent can now transfer calls to custom destinations as well as extensions, queues, and call groups. Learn more
  • Knowledge base content warnings — When you save agent settings, the knowledge base is now checked for content that could interfere with the agent’s behavior. If any turns up, a warning shows the details so you can fix it before saving. Learn more

Updates

Pharmacy

  • Expanded refill configuration — The agent’s Refill Config settings now include receiving options (pickup, mail, delivery), promise time estimates, date of birth verification, and conditional refill rules that prevent early refill requests. Learn more

Bug fixes

Connect

  • Fixed text overflowing in the Copilot panel during active calls.
  • Fixed a problem exporting data from the Call Center Agents view. Learn more
Connect
Connect bug fix

Bug fixes

Connect

  • Fixed inbound calls sometimes failing to connect.
PharmacyConnectTelecom
Product updates across Connect, Pharmacy, and Telecom

New features

Pharmacy

  • Queues reporting view — The pharmacy dashboard has a new reporting view for call queues. Learn more
  • Unified calls view — Call logs and call recordings are now on a single page. Learn more
  • Redesigned navigation — The sidebar now has dedicated Calls and Reports sections, plus a new Calls reporting page with filtering, stats, and CSV export.

Connect

  • Enhanced Agents view — The Call Center Agents view now shows live stats (inbound, outbound, talk time) and per-agent admin actions such as coach, listen, and view transcription. Learn more
  • Live call badges — Call Centers tabs now show badge counts for Live Calls and On Hold.

Updates

Pharmacy

  • Dashboard reporting redesign — The reporting interface has a refreshed design. Learn more
  • URAC compliance enhancements — The pharmacy dashboard has URAC compliance improvements.

Bug fixes

Connect

  • Fixed call center stats not filtering by the selected call center(s). Learn more
  • Fixed call insights not displaying transcripts. Learn more
  • Fixed an error when importing contacts. Learn more
  • Fixed live calls not loading for some users.
  • Fixed noise reduction not working in VOXO Meet. Learn more

Pharmacy

  • Fixed tables not scrolling on smaller screens.
  • Fixed incorrect timezone display.
  • Fixed the “Transferred” filter not working in call records.
  • Fixed the Call Campaigns table not refreshing when you switch locations. Learn more
  • Fixed the Session Details panel overflowing its layout on the dashboard.

Telecom

  • Fixed prescription number formatting in the Best-Rx Refill IVR integration. Learn more
v1.0.0
Welcome to the new VOXO documentation site.