Installation
The script tag, and where to put it.
Configuration
Every attribute and programmatic option.
Localization
Six languages, and how one is chosen.
Security
Tokens, the domain allow-list, and rate limits.
What it is
- Standalone. One script, no SDK, no framework. It works on any site. WordPress, Squarespace, Webflow, a hand-written page.
- Isolated. The UI renders inside a shadow DOM, so the host page’s CSS cannot break it and it cannot break the host page.
- Slot-first. It opens on real available times. Identity is collected after a time is chosen, so a visitor sees a genuine opening before typing anything.
- No OTP. The patient is matched or created server-side from the details they type. There is no text-message code to wait for.
The booking flow
1
Availability
The widget loads its configuration and shows open times. This needs only the public token. Nothing about the visitor.
2
Location
With more than one office, the visitor picks one, or finds the nearest by ZIP or browser geolocation.
3
Reason and patient status
The visit reason maps to an appointment type and duration. New-versus-returning is asked only where it changes what is offered, and the answer stays in the browser.
4
Identity
Name, mobile number, and date of birth. The chart is matched or created server-side.
5
Insurance
Optional, if the practice has it enabled.
6
Booked
The appointment is written to the PMS and the patient gets a confirmation.
Two surfaces, one implementation
Only the shell differs. Every step, request, and guard is shared, so the two cannot drift apart.
Getting a token
An admin generates the embed snippet in the VoxHealth app: Settings → Scheduling Widget. That page mints the token, sets the domain allow-list, and gives you the tag to paste. Requires theSCHEDULING_WIDGET feature.