Skip to main content

Build with WooCommerce Appointments

The plugin runs inside WordPress. You manage bookings in admin; you extend or connect it with PHP hooks, WooCommerce webhooks, or the REST API on a site with an active license.

Running a store? You probably do not need this section — start with Overview.


Where to add code​

Merchant and setup guides sometimes show PHP filters (for example to change recurring packages or Google Calendar sync). Paste them here:

LocationWhen to use
Child theme functions.phpSmall snippets; survives plugin updates
Site-specific pluginPreferred for client sites — keeps custom code out of the theme

Do not edit WooCommerce Appointments plugin files — updates will overwrite your changes.

After login, the full Hooks & Filters reference lists parameters and examples.


Pick your path​

Customize the storefront

Embed the booking form, tweak layout or CSS, adjust emails — mostly PHP and theme work, no HTTP API.

Connect an app or CRM

Mobile apps, kiosks, ERP sync — call the REST API and optionally subscribe to webhooks.

API base: /wp-json/wc-appointments/v2/

Full API reference →

Change booking logic

Filter statuses, Google Calendar sync, recurring packages, cart behavior — WordPress actions and filters in PHP.

Hooks reference →

Where it lives in WordPress​

These are the same screens your client uses — your integration reads or writes the data behind them.

In WordPress adminWhat it maps to
Appointments → CalendarDay/week schedule; same appointments the Calendar API returns
Appointments list & side panelCreate, edit, cancel — Appointments API
Products → AppointableDuration, staff, recurring — Products & Slots APIs
WooCommerce → Settings → AppointmentsGlobal booking options (timezone, holds, GCal)
WooCommerce → Settings → Advanced → REST APICreate keys for API access
WooCommerce → Settings → Advanced → WebhooksTopics such as appointment.created, appointment.updated

Permalinks must not be Plain (Settings → Permalinks). Production sites should use HTTPS.


REST API at a glance​

Version 2 is the default for new work (wc-appointments/v2 in the plugin). Version 1 remains for older integrations.

REST API v2 resources

ResourceTypical use
SlotsCustom booking UI — available times for a product
AppointmentsCreate and update bookings programmatically
SeriesRecurring packages (5.4+) — preview, book, manage occurrences
CalendarFeed the same data as Appointments → Calendar
Staff · Products · AvailabilitiesRules and catalog behind the booking form

Example request (after you have API keys on your site):

GET https://your-site.com/wp-json/wc-appointments/v2/appointments

Every path, parameter, and JSON shape is in the license reference — not repeated here.

v2 endpoint names (public summary)​

Authenticate with WooCommerce REST API keys over HTTPS (HTTP Basic Auth). Base path: /wp-json/wc-appointments/v2/.

EndpointPurpose
GET/POST/PATCH/DELETE /appointmentsAppointment CRUD
GET/POST/PATCH/DELETE /seriesRecurring packages (5.4+)
POST /series/previewPackage preview before checkout
GET /calendarAdmin calendar feed
GET /slotsAvailable time slots for a product
GET/POST/PATCH/DELETE /availabilitiesAvailability rules
GET /indexPrecomputed availability index
GET /staffStaff members
GET /productsAppointable products catalog
GET /product-categoriesCategories with appointable products
GET /sseServer-sent events (admin calendar)

Legacy v1 routes remain under /wp-json/wc-appointments/v1/. WooCommerce wc/v3/orders is extended with appointment data. Request/response schemas: Developer login.


Authentication (quick start)​

  1. On your licensed site: WooCommerce → Settings → Advanced → REST API → Add key (Read/Write as needed).
  2. Send requests over HTTPS with HTTP Basic Auth (consumer_key / consumer_secret).
  3. Namespace: wc-appointments/v2 (new work) or wc-appointments/v1 (legacy).
curl -u ck_XXXX:cs_XXXX \
"https://your-site.com/wp-json/wc-appointments/v2/appointments?per_page=5"

A 200 response returns a JSON array of appointments. Error codes and schemas: Developer login → REST API.


Webhooks (WooCommerce)​

Configure at WooCommerce → Settings → Advanced → Webhooks. Common topics:

TopicWhen it fires
appointment.createdNew appointment saved
appointment.updatedStatus, time, or staff changed
appointment.deletedAppointment removed

Payload shapes and delivery retries are in the gated Webhooks reference.


What you get after login​

With an active license, sign in and use Developer in the top nav for the full reference (sidebar Developers stays on this public overview).

  • Complete REST API docs (v1 + v2), authentication, errors, examples
  • Every hook and filter with parameters
  • Webhook payloads and SSE (live calendar updates)
  • Customization recipes (form tabs, CSS, Google Calendar edge cases)

Evaluating before purchase? This page is enough to see scope. You need a licensed site to call the API; purchase WooCommerce Appointments when you are ready to build.

Log in with license key →Get the plugin


Quick answers​

Is there a REST API?
Yes — v2 at /wp-json/wc-appointments/v2/. Full docs require login.

Can I try it without buying?
You need the plugin on a licensed WordPress site to send requests. Use this page and Integrations to judge fit first.

I'm not a developer.
Use Overview tutorial paths and the admin guides under Setup and Management — no login required.