Booking
v2.4.1Take appointments, set your availability and send automatic reminders — all from the same WPStack panel, with no third-party booking service.
Overview
The Booking module turns any WordPress page into a self-serve appointment scheduler. Define your services, publish a booking page, and manage everything from one calendar.
Booking is built for service businesses — consultants, studios, clinics, salons and agencies — that want clients to book and pay online without bolting on a separate plugin or a paid scheduling service. Every appointment stays inside your own site.

What you can do
- Create unlimited services, each with its own duration, price and description
- Set working hours, days off and buffer time so you never double-book
- Take deposits or full payment at booking with Stripe or PayPal
- Send automatic email and SMS reminders to cut no-shows
- Let clients reschedule or cancel from a secure self-service link
- Assign appointments across a team of staff members
- Let visitors book from a chat bubble with the Chat module
- Sync two ways with Google Calendar and Outlook
Requirements & compatibility
Booking runs on any modern WordPress host. Payments and SMS need their own free accounts.
| Requirement | Minimum | Recommended |
|---|---|---|
| WordPress | 6.0 | 6.5 or newer |
| PHP | 7.4 | 8.1 or newer |
| WPStack core | 2.2 | Latest |
| HTTPS | Required for payments | Site-wide |
Optional integrations
| Integration | Used for | Needed? |
|---|---|---|
| Stripe | Card payments & deposits | Only if you take payment |
| PayPal | PayPal checkout | Optional alternative |
| Twilio | SMS reminders | Only for SMS |
| Google / Outlook | Two-way calendar sync | Optional |
Installation & activation
Booking ships inside WPStack — there’s nothing extra to download. Switch it on per site from the modules panel.
Open the WPStack modules panel
In your WordPress admin, go to WPStack → Modules. You’ll see all eleven modules with a toggle each.
Activate Booking
Flip the Booking toggle to on. The module loads instantly — no page rebuild and no front-end weight until it’s enabled.
Open Booking settings
A new Booking item appears in the WPStack menu. Open it to set your time zone, services and availability.
Publish your booking page
Add the [wpstack_booking] shortcode or the Booking block to any page, then publish.
Settings reference
Every option in the Booking settings panel, grouped the way it appears in the admin.
General
| Setting | Type | Default | What it does |
|---|---|---|---|
| time_zone | select | Site default | The time zone all availability and reminders are calculated in. |
| time_format | select | 24-hour | How times appear to clients — 24-hour or 12-hour. |
| min_notice | number (hrs) | 4 | How far in advance a client must book. Blocks last-minute slots. |
| booking_window | number (days) | 60 | How far into the future clients can book. |
Availability
| Setting | Type | Default | What it does |
|---|---|---|---|
| working_hours | schedule | Mon–Fri 9–17 | Your bookable hours per weekday. |
| buffer_before | number (min) | 0 | Padding added before each appointment. |
| buffer_after | number (min) | 15 | Padding added after each appointment for cleanup or notes. |
| daily_limit | number | 0 (∞) | Maximum bookings per day. 0 means no limit. |
Payments
| Setting | Type | Default | What it does |
|---|---|---|---|
| payment_mode | select | Off | One of off, deposit or full. |
| deposit_pct | number (%) | 25 | Deposit size when payment_mode is deposit. |
| hold_minutes | number | 15 | How long an unpaid slot is held before it’s released. |
Notifications
| Setting | Type | Default | What it does |
|---|---|---|---|
| email_reminder | toggle | On | Send an email reminder before the appointment. |
| sms_reminder | toggle | Off | Send an SMS reminder (requires Twilio). |
| reminder_lead | number (hrs) | 24 | How long before the appointment reminders go out. |
Step-by-step guides
The four things most people set up first.
Create your first service
Go to Booking → Services
Click Add service.
Name it and set the basics
Give it a name (e.g. “30-min consultation”), a duration, and an optional price.
Choose availability
Use your default working hours, or give this service its own schedule.
Save
The service is now bookable and appears on your booking page.
Set your availability
Open Booking → Availability and set your working hours per weekday. Add buffers if you need breathing room between appointments, and block one-off days under Time off.
Embed the booking page
Add the [wpstack_booking] shortcode to any page, or use the Booking block in the editor. To show a single service only, pass its ID:
[wpstack_booking service="30-min-consultation" theme="card"]Turn on payments
Connect Stripe or PayPal
Under Booking → Payments, click Connect and follow the prompts.
Choose deposit or full
Set payment_mode to deposit or full and pick a deposit percentage.
Test a booking
Use Stripe test mode to confirm the flow before going live.
hold_minutes, so a half-finished checkout never locks your calendar.Shortcodes, blocks & widgets
Three ways to place Booking on the front end — pick whichever fits your build.
The full booking widget: service picker, calendar, time slots and checkout.
card (default) or inline.A button that opens the booking widget in a modal — ideal for headers and hero sections.
Shows the next available slot for a service as plain text — useful in sidebars.
Beyond the website
Booking doesn’t only live on your pages. Through the rest of WPStack, visitors can book from a chat bubble — and soon you’ll see every appointment in a mobile app.
Book from the chat bubble
The Chat module floats a bubble on any page. Because it’s wired to Booking, a visitor can pick a service and grab a slot without leaving the conversation — ideal for the questions that turn into appointments.
- The service picker opens right inside the chat window
- Live availability is pulled from the same calendar as your booking page
- Confirmation and reminders are handled exactly like a normal booking
Manage bookings from your phone
The upcoming WPStack mobile app connects through the Connect module and brings every appointment booked on your site into one place you can check on the go.
- All website bookings synced into the app
- A push notification on each new booking
- Powered by the Connect module — no extra setup per booking
Frequently asked questions
No. Booking runs entirely inside your WordPress site — there’s no Calendly-style account and no external embed. Your data stays on your site.
Yes. Connect Stripe or PayPal to take a deposit or the full amount at booking. Unpaid holds expire automatically so slots don’t stay locked.
Email reminders work out of the box. SMS uses your own Twilio credentials. You choose how many hours before the appointment each reminder goes out.
Booking syncs two ways with Google Calendar and Outlook, so personal events block availability and new bookings appear on your calendar instantly.
Yes. Add staff under Booking → Staff, assign services to each, and clients can pick who they book with.
Yes. With the Chat module active, the booking flow opens right inside the chat bubble, using the same services and availability as your booking page.
A native iOS and Android app is in development. It connects through the Connect module and shows every booking made on your site — we’ll announce availability in the changelog.
Troubleshooting
The most common issues and how to clear them.
| Symptom | Likely cause | Fix |
|---|---|---|
| No time slots appear | Working hours not set, or min_notice too high | Check Availability and lower min_notice. |
| Payment step is skipped | payment_mode is off | Set it to deposit or full and reconnect Stripe. |
| Reminders not arriving | Site cron not firing, or SMTP not configured | Verify WP-Cron runs and use an SMTP plugin for email. |
| Calendar not syncing | Token expired | Reconnect Google / Outlook under Integrations. |
Changelog
[wpstack_booking_button] modal shortcode.