Home › Docs › Appointure for developers: hooks, filters and REST API

Appointure for developers: hooks, filters and REST API

Updated October 7, 2026

On this page Actions and filters REST API Shortcodes and block Overriding templates Data and uninstalling

Appointure is built to be extended without editing its files. It has a REST API, 29 actions and filters prefixed appointure_, and front-end templates your theme can override. The full list of hooks with their signatures is in HOOKS.md in the plugin folder. This page covers the ones most people need.

Actions and filters

HookTypeWhen it runs
appointure_before_booking_createdActionBefore a booking is inserted.
appointure_appointment_createdActionWhen a booking becomes confirmed, straight away for free bookings or after payment.
appointure_appointment_status_changedActionOn any status change, including cancellations.
appointure_available_slotsFilterThe final list of open slots for a day.
appointure_email_subject, appointure_email_bodyFilterBefore a notification email is sent.
appointure_payment_amount_dueFilterThe amount charged at booking.
appointure_booking_widget_attsFilterThe booking widget’s shortcode attributes.

The others cover the slot engine, admin saves, texts, calendar files, REST responses, rate limits, the services grid attributes and template paths.

A common use is passing confirmed bookings to another system. Hook appointure_appointment_created rather than the status change, because it only fires once a booking is actually confirmed, after payment where there is one.

REST API

Routes live under appointure/v1:

  • GET /services, GET /services/{id}/availability and GET /services/{id}/slots for the services and their open times.
  • POST /appointments to create a booking. It’s public, and protected by a honeypot field and a per-IP rate limit.
  • GET /appointments/{reference}/ics for a booking’s calendar file, plus routes to read, reschedule and cancel one booking by its reference. The customer actions check that the booking belongs to the person asking.
  • POST /coupons/validate to check a discount code before the booking is made.
  • POST /stripe/webhook for Stripe’s payment events. Signatures are checked against your signing secret.

The booking widget itself uses these routes, so anything the widget can do, a custom front end can do too.

Shortcodes and block

  • [appointure_booking_widget]: the three-step booking flow. Without service_id it reads the service from the link. More than one can sit on a page. Also available as the appointure/booking-widget block.
  • [appointure_services_grid]: a card for every active service, with columns, title and booking_page attributes.
  • [appointure_manage_booking]: the page where customers reschedule or cancel.

Settings → Shortcodes in wp-admin has the same reference.

Overriding templates

The front-end templates can be copied into your theme and edited there, so changes survive plugin updates. The template path can also be changed with a filter. Assets only load on pages that use a shortcode or the block, so a custom template doesn’t need to enqueue anything extra.

Data and uninstalling

Appointure keeps its data in its own tables rather than in posts and post meta: services, staff and their service links, availability, appointments, payments, and the email and text logs. It upgrades its schema on update. Deleting the plugin drops those tables and its options. Deactivating it doesn’t.

Still stuck? Email support@pluginsprout.com We reply within 24 hours, Monday to Friday.