How to Add Appointment Booking to WordPress (Free Plugin and Booking Page)
Let clients book appointments from your WordPress site: set up event types and availability, add a booking button block or shortcode, and have every booking land in your CRM.
"Call us to book" and "send us a message to arrange a time" both lose people. Every step between wanting an appointment and having one is a chance for a client to give up or book elsewhere. An online booking button on your WordPress site removes those steps: the visitor picks a free slot, gets a confirmation, and you get the appointment.
This guide shows how to add appointment booking to WordPress with the free Medivot plugin: setting up what people can book, adding a booking button with a block or a shortcode, and what happens after someone books. It suits consultants, clinics, salons, coaches, agencies and anyone else who sells their time.
Two ways to take bookings on a WordPress site
- A booking plugin that runs the whole scheduler inside WordPress. Bookings, availability and reminder emails live in your WordPress database, and your hosting and your email setup carry the load.
- A booking button that links to a hosted booking page. Availability, reminders and calendar sync are handled by the booking service, and WordPress only shows the button. This is how the Medivot plugin works.
The trade-off is simple. With a hosted booking page, visitors pick their time on a separate page (Medivot opens it in a new tab by default, so your site stays open behind it). In return you set up availability once, the same booking link works in your email signature, social profiles and chat replies, and every booking goes straight into your CRM instead of a WordPress table.
How to add appointment booking to WordPress with the Medivot plugin
- Create your event types. In Medivot, open Calendar, then Event Types, and create one event type for each appointment you offer, with its duration, buffers, notice period and questions.
- Set availability and connect your calendar. Set your working hours under Calendar, then Availability, and connect Google Calendar or Outlook so busy times are blocked automatically.
- Find your booking page handle. Copy your booking link. It looks like medivot.com/book/your-handle, and the handle is the part after /book/.
- Install the plugin and save the handle. In WordPress, install and activate the Medivot plugin, open Settings, then Medivot, paste the handle (or the whole booking link) and save.
- Add a booking button. Edit a page, add the Medivot Booking Button block, choose an event type or leave it on all event types, and set the button text.
- Make a test booking. Open the page in a private window, click the button, book a slot and check that the booking appears in Medivot with a confirmation email.
Step 1: Decide what people can book
In Medivot, open Calendar, then Event Types. Each event type is one thing a client can book: a 15-minute discovery call, a 60-minute consultation, a fitting, a site visit. For each one, set the duration and the rules that protect your day: buffers before and after, minimum notice so nobody books ten minutes from now, how far ahead people can book, and a daily limit.
Add custom questions where they help you prepare, such as "What would you like to cover?" or "Which branch suits you?", and keep the list short; every extra field costs completions. If you want to vet some bookings first, turn on approval for that event type, and you can assign event types to specific team members.
Step 2: Set your hours and connect your calendar
Under Calendar, then Availability, set the hours you take appointments. Then connect the calendar you already live in, Google Calendar or Outlook. Busy times in that calendar are blocked on your booking page, and new bookings are written back to it, so a dentist appointment or a school run never collides with a client call.
Booking pages are time-zone aware. A client in London or Houston sees your availability in their own time, while your calendar stays on Lagos time. If you serve Nigerians abroad, or clients across Africa, that removes a whole class of "is that 3pm your time or mine?" messages.
Step 3: Find your booking page handle
Your public booking link looks like medivot.com/book/your-handle. The handle is the part after /book/. Each event type also has its own link, such as medivot.com/book/your-handle/intro-call, and the last part, intro-call, is the event type slug.
Step 4: Install the plugin and save your handle
In WordPress, open Plugins, then Add New, search for Medivot, then install and activate it (or download it from WordPress.org). Open Settings, then Medivot, and paste your handle into Booking page handle. You can paste the whole booking link instead; the plugin keeps only the handle.
An API key is optional. If you add one, the plugin detects your handle for you and lists your event types in a dropdown in the block editor, so you pick a service instead of typing its slug. Your Medivot plan must include API access for this. Everything in this guide also works without a key.
Step 5: Add the booking button with a block or a shortcode
In the block editor, add the Medivot Booking Button block where you want it. Choose "All event types (booking profile)" to send people to your full booking page, or pick one event type for a single service. Set the button text, choose a button or a text link, and decide whether it opens in a new tab.
In the classic editor, in widgets or in a page builder with a shortcode element (Elementor has one), use the shortcode instead:
- [medivot_booking] links to your booking profile with every public event type.
- [medivot_booking event="intro-call" text="Book a call"] links to one event type with your own button text.
- style="link" shows a text link instead of a button, and align="center" centres it (left and right work too).
- new_tab="no" opens the booking page in the same tab; the default is a new tab.
- workspace="other-handle" links to a different booking page than the one in Settings, which helps agencies that manage several clients.
Where to put booking buttons
Put the button where the decision happens, not only on the contact page:
- On each service page, linked to that service's event type, so nobody has to choose twice.
- On your pricing page, next to the plan or package that usually needs a conversation first.
- At the end of blog posts and case studies, for readers who are now convinced.
- In your live chat replies: once the plugin adds the chat widget, your team can paste the booking link into a conversation the moment a visitor asks to talk.
What happens after someone books
The client gets a confirmation email straight away and reminder emails before the appointment, which is the simplest way to cut no-shows. The booking appears in your Medivot calendar and in your connected Google or Outlook calendar. If the event type needs approval, the booking waits for you to confirm it.
Every booking also creates or updates a contact in your CRM. That turns an appointment into the start of a relationship: you can follow up after the meeting, open a deal, or add the client to an email sequence without retyping anything. See Medivot calendar and booking for everything event types can do.
Add a form for visitors who are not ready to book
Not everyone wants to pick a time on their first visit. Give them a second option next to the booking button: a short enquiry form. Build it in Medivot under CRM, then Webforms, then add the Medivot Form block to the page and paste the form's public link, or use the shortcode [medivot_form form="contact-us"] with your form's slug.
Each submission creates a record in your CRM with web form as the source, and the plugin passes the page's UTM parameters to the form, so you can see which campaign brought the enquiry. Medivot can email your team about each new submission and send the person an automatic reply.
Frequently asked questions
Is there a free appointment booking plugin for WordPress?
The Medivot plugin is free on WordPress.org. Bookings run on your Medivot account, which starts with a 5-day free trial and then follows your Medivot plan; see pricing. There is no permanent free Medivot plan.
Do clients book on my WordPress site or on another page?
The button is on your site, and clients pick their time on your Medivot booking page. It opens in a new tab by default, so your site stays open behind it.
Can I link a button to one service?
Yes. Pick the event type in the Medivot Booking Button block, or use [medivot_booking event="your-event-slug"]. Leave the event out to link to your full booking profile.
Do I need an API key for booking buttons?
No. Booking buttons only need your booking page handle. An API key adds handle detection and an event type dropdown in the block editor.
Can clients book in their own time zone?
Yes. Medivot booking pages show your availability in the client's local time, while your calendar stays in yours.
Does it work with Elementor or the classic editor?
Yes. Use the [medivot_booking] shortcode in the classic editor, in widgets, or in any page builder with a shortcode element, such as the Elementor shortcode widget.
Good booking setup is mostly decided before WordPress is involved: clear event types, honest availability, a connected calendar and reminders. Once that is in place, the Medivot WordPress plugin puts it one click away on every page that matters. For more on running bookings locally, read our guide to online booking in Nigeria, and pair your buttons with live chat on WordPress for visitors who want to ask first.