Developers
MediBook is built to be extended. Hook into events, adjust behaviour with filters, override the frontend templates from your theme, or drive it through the REST API.
Action hooks
Run your own code when something happens.
| Hook | Fires when |
|---|---|
medibook/appointment/created | A booking is created. |
medibook/appointment/rescheduled | An appointment moves to a new time. |
medibook/appointment/cancelled | An appointment is cancelled. |
medibook/payment/completed | A payment succeeds. |
medibook/intake/submitted | An intake form is submitted. |
medibook/waitlist/notified | A waiting-list patient is offered a slot. |
medibook/integration/failed | A third-party call (payment, calendar, video) fails. |
medibook/booted | The plugin has finished loading. |
Filter hooks
| Filter | Adjusts |
|---|---|
medibook/booking_window_days | How far ahead patients can book. |
medibook/reminder_window_hours | How long before an appointment reminders are sent. |
medibook/recurring_max | The maximum number of appointments in a recurring series. |
medibook/waitlist_notify_throttle_hours | How often a waiting-list entry can be notified. |
medibook/frontend_template_path | Where the frontend templates are loaded from. |
Template overrides
To change the frontend markup, copy the template you want from the plugin’s templates/frontend/ folder into a matching path in your theme:
your-theme/medibook/frontend/layouts/step.phpYour copy takes over automatically, and survives plugin updates. The lookup path itself can be changed with the medibook/frontend_template_path filter.
REST API
All endpoints live under the medibook/v1 namespace. Public read endpoints power the booking form; public write endpoints require a nonce and are rate limited. Admin endpoints require the relevant MediBook capability.
Public
GET /medibook/v1/public/services
GET /medibook/v1/public/providers
GET /medibook/v1/public/locations
GET /medibook/v1/public/available-slots
GET /medibook/v1/public/month-availability
GET /medibook/v1/public/intake-form
POST /medibook/v1/public/book
POST /medibook/v1/public/cancel
POST /medibook/v1/public/reschedule
POST /medibook/v1/public/waitlistAdmin
GET /medibook/v1/dashboard
GET /medibook/v1/appointments
GET /medibook/v1/calendar
GET /medibook/v1/admin/services
GET /medibook/v1/admin/locations
GET /medibook/v1/status
POST /medibook/v1/webhooks/stripePatient records and intake answers are never exposed through public endpoints. Every admin route runs a capability check, and secrets such as payment and calendar tokens are kept out of API responses.