How the widget adapts
One widget, two flows. The right UI is picked from the doctor's system type — no configuration needed.
The Medos Booking widget supports two booking system types. Which one the patient sees depends on the doctor they choose — you never pick manually.
The two system types
SCHEDULED
The classic appointment flow. Patients see:
- A doctor list (unless
calendarOnlyis enabled) - A calendar with available dates
- Time slots for the selected date
- Phone OTP + patient details
- A confirmation screen with the appointment ID
If the workspace has session packs enabled and the patient is eligible for a pack with the selected doctor, the pack picker appears in this same flow — it's an add-on, not a separate system type.
QMS (Queue Management System)
Token-based, live queue booking. Patients see:
- A queue stats banner above the calendar (current queue length, approximate wait time)
- A shorter flow — no time-slot picking
- A confirmation screen with a token number, queue position, and estimated wait time
How the widget decides
The flow follows how each doctor is set up in your Medos dashboard. The widget reads that configuration when the patient picks a doctor and renders the matching flow.
You don't pass anything to control this, and the patient is never asked "queue or scheduled?".
Mixed workspaces work out of the box
A clinic can run both flows at once. Dr. Smith might take walk-ins through the queue while Dr. Patel runs scheduled appointments — one embed handles both, routing per doctor.
Confirmation payload differs per flow
The onSuccess callback receives a different shape depending on which
flow completed:
SCHEDULED→{ appointmentId: number }(whether or not a session pack was redeemed — the pack usage is recorded server-side).QMS→ a fullQueueTokenobject (token number, position, wait time).
See the Callbacks & Events page for the exact shapes.