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 APIAdd 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.