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.

HookFires when
medibook/appointment/createdA booking is created.
medibook/appointment/rescheduledAn appointment moves to a new time.
medibook/appointment/cancelledAn appointment is cancelled.
medibook/payment/completedA payment succeeds.
medibook/intake/submittedAn intake form is submitted.
medibook/waitlist/notifiedA waiting-list patient is offered a slot.
medibook/integration/failedA third-party call (payment, calendar, video) fails.
medibook/bootedThe plugin has finished loading.

Filter hooks

FilterAdjusts
medibook/booking_window_daysHow far ahead patients can book.
medibook/reminder_window_hoursHow long before an appointment reminders are sent.
medibook/recurring_maxThe maximum number of appointments in a recurring series.
medibook/waitlist_notify_throttle_hoursHow often a waiting-list entry can be notified.
medibook/frontend_template_pathWhere 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.php

Your 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/waitlist

Admin

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/stripe
Patient 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.