If clients still book appointments by calling you or filling in a contact form, you’re creating unnecessary back-and-forth for everyone. A self-service booking system lets people check your availability and reserve a time directly from your website — without you needing to be available to confirm it.
WordPress handles this well with dedicated booking plugins. Most offer a free tier that covers the essentials: a calendar showing your available times, automated confirmation emails, and a booking form that embeds on any page. Getting it working takes about 20 minutes for a basic setup.
Whether you’re a consultant, coach, therapist, or any service business, this guide shows you how to add a functional online booking system to your WordPress website from scratch.
Quick Answer
Install a free booking plugin such as Simply Schedule Appointments from Plugins > Add New. Create an appointment type with a name, duration, and your available hours. Add the booking block to a page. Visitors can immediately see your calendar and book a time without contacting you first.
What to Look for in a Booking Plugin
Before picking a plugin, think through what your booking workflow actually needs:
- Google Calendar sync — prevents double-bookings if you accept appointments through other channels
- Automated confirmation emails — clients get immediate proof of their booking without you sending anything manually
- Time zone handling — important if you serve clients across different regions
- Payment integration — most free tiers require an add-on or paid upgrade for built-in payment at checkout
- Mobile-friendly booking interface — a large share of visitors will be on phones; the booking calendar must work cleanly on smaller screens
Recommended Free Booking Plugins
Simply Schedule Appointments (SSA) is the one I reach for on most sites I build. It’s clean, beginner-friendly, and includes Google Calendar sync on the free plan — which most competitors lock behind a paid tier. The setup flow is logical and the booking interface looks professional without any design work on your part. Find it at wordpress.org/plugins/simply-schedule-appointments/.
Bookly is feature-rich with a polished frontend. Many advanced features are premium-only, but the free tier handles basic single-staff booking. Good if you want to start free and upgrade later.
Amelia has the strongest visual design out of the box. It’s a good choice if you want a booking page that looks polished immediately, without customising styles.
How to Set Up Simply Schedule Appointments
Install and Activate
- Go to Plugins > Add New in your WordPress dashboard
- Search for Simply Schedule Appointments
- Click Install Now, then Activate
- A new Appointments menu appears in the left sidebar
Create Your First Appointment Type
- Go to Appointments > Appointment Types
- Click Add New
- Enter a name (e.g. “Initial Consultation”), set the duration (e.g. 60 minutes), and pick a label colour
- Under Availability, set your working hours — the days and time windows when bookings can be made
- Set a booking window: how many hours in advance someone must book, and how many days into the future they can schedule
- Save the appointment type
Add the Booking Form to a Page
- Create a new page (e.g. “Book a Call” or “Appointments”) or open an existing one
- Click the + block inserter and search for Simply Schedule Appointments
- Add the SSA booking block and select your appointment type from the dropdown
- Publish or update the page
Visitors can now see your availability calendar and book a slot directly — no emails or phone calls needed on their end or yours.
Configure Confirmation Emails
SSA sends automated confirmation emails to both you and the client when a booking is made. Go to Appointments > Appointment Types > [your type] > Notifications to customise the subject line and body text. For this to work reliably, your WordPress site needs a properly configured mail setup. If confirmation emails aren’t arriving, see how to set up SMTP in WordPress — this is the most common cause of missing booking confirmations.
Accepting Payment for Bookings
The free tier of most booking plugins doesn’t include built-in payment collection. Two approaches work well for a first setup:
The simpler option is to add a payment button to the same page as your booking form. The client books a time and pays in separate steps during the same visit. This is fast to implement and works for straightforward service businesses.
The more integrated option is a WooCommerce add-on. Both Bookly and Amelia offer WooCommerce integrations that tie bookings to an order checkout — useful when you need payment confirmation before the appointment is finalised or when you also run a WooCommerce store.
Practical Tips
- Add buffer time between appointments — SSA calls this “padding” in the appointment type settings. Even 10 minutes between sessions reduces scheduling stress.
- Connect Google Calendar under Appointments > Settings > Google Calendar to keep your personal schedule in sync and avoid double-bookings from other sources.
- Put the booking page URL in your main navigation menu. A link buried in the footer gets ignored. Most service sites benefit from a clear “Book a Call” button in the header.
Common Mistakes
- Not testing the form before going live. Complete a full test booking as a client and check that both confirmation emails arrive. Fix what’s missing before directing traffic to the page.
- Wrong time zone setting. SSA uses the time zone set in Settings > General in WordPress. If your booking times look wrong, check that setting first.
- Hiding the booking link. The booking page should be prominent — in your main navigation, on your contact page, and mentioned in your site header or hero section where relevant.
When to Use This vs Alternatives
A dedicated booking plugin (SSA, Bookly, Amelia) is the right choice for service businesses that need real scheduling — fixed appointment types, availability windows, and automated confirmations. A standard contact form is not a substitute when actual time-slot management is involved.
An embedded Calendly widget is a reasonable alternative if you only need simple one-on-one scheduling and want to avoid managing a plugin. The tradeoff is that clients leave your site’s design and interact with a third-party interface.
WooCommerce + appointments extension is the right path when bookings need to integrate with an existing shop or when mandatory payment at checkout is a hard requirement.
Conclusion
Install Simply Schedule Appointments, create one appointment type, and put the booking form on a dedicated page. That’s a working online booking system. Once the basics are confirmed working, layer in Google Calendar sync, SMTP for reliable emails, and payment integration if your business needs it.

Etienne Basson works with website systems, SEO-driven site architecture, and technical implementation. He writes practical guides on building, structuring, and optimizing websites for long-term growth.