Documentation
Service Bookings documentation
How to set up and use Service Bookings: install, settings, shortcodes and fixes for common problems.
Overview
Service Bookings turns WooCommerce products into bookable services for businesses that go to the customer. The customer enters an address, sees a price based on driving distance, picks a time and pays.
Where to find it: Bookings, in the main WordPress menu.
What you need
- WordPress 6.2 or newer
- PHP 7.4 or newer
- WooCommerce
- A Google Cloud key with the Routes API and Geocoding API for travel pricing
Install
- With The Vault (easiest): open The Vault in your WordPress menu, find Service Bookings and click Install. It is installed and activated for you.
- By hand: buy a license on the plugin page, then go to Plugins → Add New → Upload Plugin, choose the zip and activate it.
Updates arrive automatically from wpwizards.com, like plugins from WordPress.org.
License
This is a premium plugin. Open The Vault → Licenses, paste the key from your order confirmation and click Activate License. WP Wizards clients have every plugin included while their service is active, with no key needed. Without a license the plugin keeps working but stops receiving updates.
Quick start
- Set your hours and rules. Go to Bookings → Settings and set business hours, lead time, slot length and buffer.
- Add travel pricing. Go to Bookings → Travel Pricing. Add your server API key and your default origin address (where travel is measured from).
- Turn booking on for a product. Edit a WooCommerce product, open the Booking tab and tick Enable booking.
- Set the prices. On the same tab choose Distance bands, enter each band’s miles and price, and tick Rates approved. Until that is ticked, customers see eligibility only and cannot book online.
Calendar sync
Under Bookings → Settings, add Google or Microsoft (Outlook) credentials and connect an account. Busy times on the calendars you choose block those slots, and new bookings are added to the calendar you pick, with the customer invited.
The setup steps on the settings page list the exact redirect address to enter in Google Cloud or Azure.
How a booking is made
- The customer enters the service address on the product page and clicks Check address.
- They see the distance, their price band and the total.
- They pick a date and an open time, then add to cart and check out.
- When the order is paid, the booking is created, appears under Bookings → All bookings and is added to your calendar.
An order waiting on an offline payment does not hold the slot until it is marked as processing.
With Service Area Validator
Service Bookings works on its own. With Service Area Validator 4.0 or newer also active, the two share one setup, products can use your service areas, and a booking address that is too far away is saved to the Demand Map.
If you used bookings inside Service Area Validator before 4.0, installing Service Bookings takes over with the same settings, products and bookings.
Settings
Bookings → Settings
| What customers book | The singular and plural label used wherever a booking asks how many, e.g. dog / dogs or guest / guests. |
|---|---|
| Minimum lead time | Customers cannot book a slot starting sooner than this many hours from now. |
| Maximum advance booking | How far ahead customers can book. 0 means no limit. |
| Time slot length | How long each booking lasts. |
| Slot start interval | How often a new slot can start, e.g. every 15 minutes. |
| Buffer between bookings | Padding before and after each booking for travel or prep. |
| Business hours | Open days and hours. Use Add time window for a split day. Closed days show no slots. |
Bookings → Travel Pricing
| Server API key | A Google key with Geocoding API and Routes API, used on the server only. It can also be set in wp-config.php. |
|---|---|
| Distance method | Driving miles or straight-line. |
| Default origin address and label | Where travel is measured from, and how you describe it to customers, e.g. “our Springfield shop”. Products can override it. |
| Cache | How long a distance result is remembered. Raw addresses are never stored in the cache or log. |
| Rate limit | How many lookups one visitor can make in a period. |
| Default buttons | The Request a quote link and the message and link shown when an address is too far away. |
| Address autocomplete | Optional Google Places suggestions, using a browser key. |
| Service area & price display | Service area check only hides every price and only says whether you serve the address. You can also set one mileage limit for every product. |
| Lookup tester and error log | Test an address from your origin, and see recent lookup errors. |
Product → Booking tab
| Enable booking | Shows the booking box on the product page. |
|---|---|
| Pricing model | Distance bands (a price per band) or the older base price plus surcharge. |
| Rates approved / Rates effective from | Prices are shown and charged only when approved and the effective date has been reached. |
| Distance bands | Each band covers distances greater than its minimum and up to and including its maximum. Leave a price blank to ask for a quote in that band. |
| Max service radius | Beyond this customers see the beyond-radius message. |
| Price per additional … / Max bookable online | Charge for extra dogs, guests or vehicles and cap how many can be booked online. |
| Payment schedule | Shown for information under the total. The full price is still charged at checkout. |
| Scheduling | Slot length, interval, buffer and lead time for this product, plus its own business hours and calendar if needed. |
Shortcodes
[wpw_travel_quote]
A quote box: the visitor enters an address (or ZIP), chooses a service and sees the price or whether you serve them.
| Attribute | Values | What it does |
|---|---|---|
product |
product ID | Quote one product. Omit it to let the visitor choose from products marked “List this program”. |
mode |
zip or address | zip gives an estimate from a ZIP code; address gives an exact quote. |
title, intro, button_text |
text | Your own wording for this box. |
programs |
IDs | Limit the choices to these product IDs, comma separated. |
Place a shortcode in a Divi Text or Code module, a Shortcode block, or a widget.
Troubleshooting and questions
The product page says “Distance service is not configured”.
Add the server API key under Bookings → Travel Pricing and make sure the Routes API and Geocoding API are enabled for it.
Customers see “Request a quote” instead of a price.
Rates approved is not ticked on the product, the effective date is in the future, or the band they fall in has no price.
No time slots show for a day.
The day is closed in Business hours, it is inside the lead time, it is beyond the advance booking limit, or a connected calendar is busy.
It says it needs Service Area Validator 4.0.
An older Service Area Validator is active. Update it and bookings switch on by themselves.
Can I take a deposit?
Not yet. The full price is charged at checkout.
Get help
Stuck on something this page does not cover? Contact us and tell us which plugin and version you are on. Need it to do something it does not do yet? We build custom plugins too.



