Documentation

Booking Calendar Plus setup guide

From install to your first paid booking: services and staff, working hours, the booking form, optional calendar sync, and turning on Stripe deposits with the Pro add-on.

1. Install and activate

Download the free plugin and upload it under Plugins → Add New → Upload Plugin, then activate. A Bookings menu appears in your admin sidebar with Dashboard, Bookings, Services, Staff and Settings. (Once it's on WordPress.org you'll be able to search and install it straight from your dashboard.)

2. Add your services

Open Bookings → Services → Add service. For each service set a name, duration in minutes, a price (0 shows as "Free"), a colour, and optional before/after buffers - the gap the plugin keeps around the appointment for setup or cleanup. Tick Active to make it bookable. Add as many as you like; drag the sort order with the Sort field.

3. Add staff and working hours

Open Bookings → Staff → Add staff. Enter their name and email, then:

When a customer chooses "Any available staff", the plugin books the least-loaded qualified person who is free.

4. Place the booking form

Add the form to any page with the shortcode [dbook_bookings] or the Bookings block. That's the whole front end: a four-step wizard (service → staff → date & time → details) that follows your site's timezone under Settings → General. Availability is worked out from working hours, buffers, time off, your minimum-notice and how-far-ahead limits, and existing bookings - and re-checked at the moment of booking so two people can never grab the same slot.

5. Confirmations, reminders and self-service

Under Bookings → Settings choose whether new bookings are confirmed instantly or need your approval, set how many hours before the appointment the reminder goes out, and edit every email template. Customers receive a confirmation with an .ics calendar invite and a private link to reschedule or cancel up to your cut-off - no login required.

6. Optional: sync a calendar

Under Settings → Integration, paste a free AIEIO Calendar base URL and an API key (create one in the calendar's settings), press Test connection, then map each staff member to a calendar. Confirmed bookings push in as events and are removed on cancellation, and any time marked busy in a staff calendar automatically blocks that time on your booking form.

7. Turn on Stripe deposits (Pro add-on)

To take a deposit or the full price online, install Demfilz Booking Calendar Plus Pro on top of the free plugin, then open Bookings → Payments:

  1. Activate your licence - paste the key emailed to you after subscribing.
  2. Enter your Stripe keys - publishable and secret keys from your Stripe dashboard. Use test keys (sk_test_…) to trial the flow first.
  3. Add the webhook - copy the URL shown on the page into Stripe → Developers → Webhooks, subscribe it to checkout.session.completed and checkout.session.expired, and paste its signing secret back.
  4. Choose a default charge - no payment, a percentage deposit, a fixed deposit, or the full price - plus how long to hold an unpaid slot.
  5. Set payment per service - on each service's edit screen you can override the default (for example, full price for a class, a deposit for a long service, nothing for a quick one).

From then on, booking a paid service holds the slot, sends the customer to Stripe's hosted checkout, and confirms the booking the moment payment succeeds - with a receipt email. Refund any payment in one click from the Payments screen.

Settings reference

SettingWhat it does
Slot stepGranularity of offered start times (e.g. every 15 or 30 minutes).
Minimum noticeHow many hours ahead a customer must book.
Booking windowHow many days into the future bookings are allowed.
Auto-confirmConfirm instantly, or hold new bookings for your approval.
Reminder hoursSend the reminder email this many hours before the appointment (0 = off).
Cancellation cut-offLatest a customer may reschedule or cancel online before the start time.
Default charge (Pro)None, deposit (% or fixed) or full price, for services set to "use site default".
Hold unpaid slots (Pro)Minutes a slot is reserved during checkout before an abandoned payment releases it.

Tip. Start in Stripe test mode with card 4242 4242 4242 4242, any future expiry and any CVC. When you're happy, swap in your live keys and live webhook secret.

Read the FAQs → Ask a question →