Appointments is a flexible feature-rich plugin that allows you to accept, set and manage bookings on your site.

Do you constantly swap between your website and your appointment booking system, juggling calls and missing new clients who fall through the cracks?

Ditch your diary and save a fortune in time and money with Appointments!

Appointments Does A Ton

Appointments is ideal for businesses and individuals who schedule times with clients, such as consultants, web designers, spa, hair salons, photographers and sales executives.

With Appointments:

  • Customers can book their own appointments on your site
  • You can schedule appointments with clients
  • Manage customer contact information
  • Collect payments or deposits using PayPal
  • Manage a team of service providers
  • Send confirmation and reminder emails
  • Book appointments up to one year in advance
  • Manage appointments using Google calendar

Book an Appointment in Three Clicks

Use Paypal to collect payments and deposits right out of the box with Appointments. No button creation or coding necessary.

Customize Your Appointment Calendar

Set up customizable profiles for each of your staff members and Appointments will automatically display their available time slots.

Clients can click any service your company offers and Appointments will display all your available team members for that service.

Integrate Appointments with Google Calendar

Admins and clients can save any appointment directly to their Google Calendar with no API coding required.

There is also the option to fully integrate Google Calendar with your site by entering API credentials, allowing you to make appointment edits from your Google Calendar and push changes back to your site.

Loads Of Features

  • Create “black out” dates and times
  • Edit schedules from back end of WordPress, on admin or profile pages
  • Compatible with BuddyPress
  • Shortcodes for inserting into posts/pages
  • Automaticly creates appointment pages
  • Display weekly, or monthly schedules
  • Limit booking of appointments in advance ( e.g. you can set, say, two days to 365 days from today is allowed)
  • Gravatar support for personalizing provider profiles
  • Custom Color labels for appointments
  • Form autofill for repeat clients
  • Login with Facebook, Twitter, Google+ or WordPress
  • Option to require payments or deposits in advance
  • Deposits can be selected as percentage or as fixed amounts
  • Synchronizes with your Google Calendar account and automatically updates it
  • Send clients appointment reminders
  • Take phone appointments manually
  • Ability to automatically remove unpaid appointments after a set time
  • Multiple custom widgets included
  • Documentation inside the plugin including tutorials and FAQ’s
  • More than 130 custom filter and action hooks
  • Support for multiple break times
  • Worker calendar shortcodes


  • Style and display a calendar on your site where clients can select and make appointments.
  • You can create profiles for each of your staff members listing their qualifications, experience or any other details about what they offer.
  • Clients can click any service your company offers and Appointments + will display all your available team members for that service.
  • Payment settings page
  • Google Calendar integration


To Install:

  1. Download the Appointments plugin file
  2. Unzip the file into a folder on your hard drive
  3. Upload the /appointments/ folder to the /wp-content/plugins/ folder on your site
  4. Visit your Dashboard -> Plugins and Activate it there.


Installation Instructions

To Install:

  1. Download the Appointments plugin file
  2. Unzip the file into a folder on your hard drive
  3. Upload the /appointments/ folder to the /wp-content/plugins/ folder on your site
  4. Visit your Dashboard -> Plugins and Activate it there.
How do I get support?

Our team is active in the forums.


Too buggy. And totally messed up my Google Calendar on sync.

This plugin is just too buggy. And support are too slow to respond to support tickets – that’s IF they respond at all!

I did an export to Google Calendar and it totally messed up all my appointments I’d previously directly entered into Google Calendar. I now have Google Calendar which is totally meaningless to me and it will take me goodness knows how long to rectify.


I am now going to have to go and find another alternative. Thanks for wasting my time!!!!!

Not Working!

Wasted my time on this one. Shortcode tab is missing. When I tried [app_my_appointments] it doesn’t show anything. Documentation is messed up, the most important part is hard to find.

Paypal Button unreadable and awkward

I believe I am using current version of wp. Let me first say the calendar display is very nice and can be customized. Looks very good. Also, the admin panel is easy to use. Yes you only get two service types with the free version. I would also like to say that I want to use this plugin. But the paypal button which appears for paid services is unreadable. It’s a super light gray with white lettering and is very hard to read. On top of that, the paypal button appears once the client has just booked which is awkward. Thanks.

Update: Okay – copied the css to make the paypal button more presentable. So I have updated the review to show 4 stars. I would like to see if the submit button could go directly to paypal instead of a 2nd button showing for payment. Thanks.

Best plugin for sport reservation end not only.

Ho visionato molti plugin per gestire un sistema di prenotazione di campi da gioco (tennis, pallavolo, calcetto, ecc…) e questo plugin si e’ dimostrato il migliore . Perfettamente integrabile con buddypress, offre un’esperienza al cliente utilizzatore semplice e completa.

I’ve try many plugins to manage a gaming reservation system (tennis, volleyball, mini-soccer, etc …) and this plugin is the best. It’s perfectly integrable with the plugin Buddypress, it offers a simple and complete customer experience.

Read all 34 reviews

Contributors & Developers

“Appointments” has been translated into 2 locales. Thank you to the translators for their contributions.

Translate “Appointments” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Added ability to show/hide columns on “Services” settings screen.
  • Added ability to show/hide columns on “Service Provider” settings screen.
  • Added asterisk to additional, required fields (pro only).
  • Added columns “Paddings” and “Location” on “Service Providers” settings screen (pro only).
  • Added columns “Paddings”, “Location” and “Shared resources” on “Services” settings screen (pro only).
  • Added locations on appointment form.
  • Added SERVICE_LOCATION placeholder replaced by a service Location in email templates.
  • Fixed time display format to selected in WordPress options.
  • Improved “confirmation” checkbox on Service Provider Profile page.
  • Improved Object Cache clear.


  • Added an option to force load Appointment’s scripts and styles.
  • Added a limit for “Service Capacity” on a service add and edit screen to the number of defined workers.
  • Fixed a problem with appointment hour when a worker was not selected.
  • Fixed a problem with more than one Service Provider on schedule table, when first is already busy, but second is not.
  • Fixed a problem with service description when Service is not selected.
  • Fixed problems with capacity.
  • Improved adding a new service provider, when is only one service it will be checked by default.
  • Improved column “Price”.
  • Improved Service “Service Capacity” edit field.
  • Excluded “removed” and “completed” statuses from is_busy() calculations.
  • Added asterisk to GDPR checkbox label on appointment form.


  • Convert “Time base” on “Time Settings” to human readable. Props for David @ BBS.
  • Fixed a problem with an appointment create time, it showed “Unknown” for Time Formats: “g:i a” and “g:i A”.
  • Fixed a problem with an appointment date when we add an appointment on admin area.
  • Fixed a problem with autoconfirmation free appointment.
  • Fixed a problem with bottom bulk action on “Add-ons” tab.
  • Fixed a problem with double cancellation emails.
  • Fixed a problem with not available calendars on Service Provider profile.
  • Fixed a problem with paddings on the weekly booking calendar.
  • GDPR: Added ability to delete older appointments. You can set up how long presents appointments should be stored in the database.
  • GDPR: Added ability to erase user personal data.
  • GDPR: Added ability to export user personal data.
  • GDPR: Added checkbox with the agreement to process personal data.
  • GDPR: Added plugin information to default “Private Policy” page during auto-creation of this page.
  • Improved “Working Hours” and “Exceptions” tabs content on mobile devices.
  • Improved UX on “Payments” tab for MarketPress integration.
  • Improved few translation strings.
  • Improved the “app_my_appointments” shortcode and added a message when we have no appointments.
  • Refactored “Service Providers” screen and use WP_List_Table class for the list.
  • Refactored “Services” screen and use WP_List_Table class for the list.
  • Removed DateTime::createFromFormat() usage to be compatible with PHP 5.2


  • Added check for service name it can be empty.
  • Changed default appointments sorting to “Appointment Date”.
  • Fixed an export problem for additional fields with HTML entities in a name.
  • Fixed an export problem for the date range.
  • Fixed an integration problem with MarketPress plugin.
  • Fixed a problem with booking, when the site is on HTTP but admin force HTTPS usage.


  • Added ability to delete “Service”.
  • Added ability to delete “Service Provider”.
  • Added asterisk to required fields label on appointment form.
  • Fixed a problem with appointments details, the start hour of appointment is now depended on settings.
  • Fixed a problem with Appointments settings on the BuddyPress profile.
  • Fixed a problem with BuddyPress profile integration.
  • Fixed a problem with double send reminders.
  • Fixed a problem with the tutorial restart.
  • Fixed a warning message for ob_end_flush() in an older version of PHP.
  • Improved appointments calendars, now start on the day set in WordPress options.


  • Added filter ‘app-export-appointment-args’ which allows changing export arguments eg. sorting field.
  • Fixed incompatibilities with Divi Builder.
  • Fixed missing sortings on the frontend.
  • Fixed problems with changing the custom time for slots.
  • Fixed problem with paddings.
  • Fixed re-send confirmation emails.
  • Improved Yes/No choice used on appointments configuration screen.


  • Fixed a problem with the export of single appointment.
  • Fixed a problem with no visible slots on Weekly Calendar view.
  • Fixed a problem with viewing PayPal transaction.
  • Fixed potential vulnerabilities in appointments list.
  • Improved “Create an Appointment Page” UX.
  • Improved default additional CSS to avoid interaction with default classes.
  • Improved help tab, now we use WordPress built-in help tab.


  • Fixed problem with bower_components directory.
  • Fixed problem with extra information displayed in the wrong column.
  • Fixed problem with no visible slots on Monthly view.
  • Fixed problem with too many emails.
  • Fixed problem with worker shortcode.
  • Fixed URL building for dismissing a message.
  • Moved external sources into one parent directory.
  • Prevent process if a user does not exist.
  • Removed wp_enqueue_* functions from views.
  • Updated Unslider to version 2.0.3.

  • Fixed security issue (vulnerability) with appointments actions. Props for Rolf Allard van Hagen.

  • Fixed missing JavaScript scripts.


  • Allow Service Description Page featured imaged to be used as Product variation thumbnail (MarketPress integration).
  • Fixed a problem with the abandoned orders in admin.
  • Fixed issue with comma as thousand separators when using PayPal.
  • Fixed problem with duplicated page description.
  • Fixed security issue (vulnerability) with data stored on a browser. Thanks to Matt Barry @ Wordfence
  • Fixed weekly calendar hours for a worker.


  • Added new function: appointments_is_working().
  • Added shortcode option in app_monthly_schedule to give user option to hide today’s times and force a user to click on a date before showing times.
  • Added sort CSV columns for appointments export.
  • Added timetables helpers tests.
  • Allow currency option to be visible even if payments are disabled.
  • appointments_is_available_time was not always returning a value.
  • Appointments don’t get active after Stripe payment from MarketPress.
  • Fixed appointments_is_worker_holiday parameters.
  • Fixed auto reload of appointment status totals when status is changed.
  • Fixed client cancellation not synced to Google Calendar.
  • Fixed cron not being set for Google Calendar sync for service providers.
  • Fixed for checking the available time of worker.
  • Fixed required messages at a monthly calendar.
  • Fixed required messages at a weekly calendar.
  • Fixed require_service in app_monthly_schedule shortcode not showing dropdown.
  • Fixed to check for allow overwork.
  • Load GCal only when needed.
  • Removed Appointments::is_available_time().
  • Swap start/end if start > end in appointments_is_available_time.
  • Try to avoid collateral effects due to Appointments class attributes.


  • New: option to keep settings on uninstall
  • Fix: Trim spaces in status attribute of app_my_appointments shortcode
  • Fix: Scheduling calender not showing on appointment page
  • Fix: Divi inegration for pagination with smooth scroll
  • Fix: Upfront Editor breaks because of A+ calendar widget
  • Fix: Set min service when no service selected and location has been set
  • Fix: Datpicker was not localized in Exceptions screen
  • Other minor fixes/improvements

  • Fixed: Only load dashbaord class in premium version


  • New: Cancel link is back
  • New: Better alerts in bookings pages
  • Enhance: Lots of performance improvements
  • Enhance: JavaScript files are now compressed
  • Enhance: Removed deprecated functions since 1.6
  • Security: Fixed XSS vulnerability
  • Fixed: Wrong provider when single-worker and provider_id set on url for wrong service_id
  • Fixed: Shortcodes were not working when Hustle was activated
  • Fixed: require_provider attribute in monthly calendar was not working
  • Fixed: Some datepickers were not respecting start of the week
  • Fixed: Weekly calendar was not properly calculating capacities.
  • Fixed: Users could not confirm appointments from BuddyPress profile page
  • Fixed: Google Calendar settings were reset when a worker cancels an appointment
  • Fixed: Weekly calendar was showing 1970 as next week in some cases
  • Fixed: Unavailable times are showing as “busy” instead of “Not possible”
  • Fixed: Firefox was preventing new tab for Google Calendar button
  • Fixed: JavaScript error when using an Upfront theme
  • Fixed: Correct provider is not selected with autorefresh attribute in shortcodes.
  • Fixed: Google Calendar sync fixes
  • Fixed: All services display largest time slot when service duration addon was activated
  • Fixed: MarketPress integration fixes
  • Some other minor fixes


  • Fix: app_monthly_schedule not showing properly working hours when a provider is set as parameter
  • Fix: Wrong working hour on Saturdays when A+ is just activated
  • Fix: GCal sync issues when providers have selected a calendar
  • Some other minor fixes


  • Fix: GCal sync was overriding the appointments service
  • Fix: Appointments Shortcode orderby attribute not working
  • Fix: Events not removed from Provider’s GCal, when Allow Service Providers for Google Calendar API Integration selected
  • Fix: TinyMCE shortcodes UI: Pagination date was a checkbox instead of a text box
  • Fix: No error message was displayed when service/workers limit was reached in free version


  • Fix: Service was not properly to a worker set when an appointment was imported from GCal
  • Fix: Break hours wrong due to a cache collission
  • Fix: widgets deprecated notice
  • Fix: warnings when generating timetables
  • Fix: Widget shows all dates busy
  • Fix: Wrong provider when no one is selected in appointments page
  • Removed CANCEL placeholder from notifications template


  • Fixed: Monthly calendar was displaying as available worker holidays
  • Fixed: Working hours in user profile was not properly saved, giving warnings in front
  • Fixed: Appointment worker was not properly set on front end


  • New: Filter for weekly schedule headers
  • Fixed: When week started in Sunday, monthly calendar was wrongly displayed
  • Fixed: All monthly calendar slots appeared as busy in some cases
  • Fixed: Warning when updating an appointment and status was not changed
  • Fixed: A post could not be assigned to a Service when Services Description addon was activated
  • Fixed: Services were not saved when some of the addons were activated
  • Fixed: Warning when getting working hours
  • Fixed: Fatal error in Tetris addon
  • Fixed: Locations selector was not displayed when Paddings Add-on was active
  • Enhance: Better cookies management
  • Enhance: Workers/Services admin screen UX


  • Fixed: Stripe does not set appointments to confirmed after payment received
  • Fixed: Columns offset from the table head when exported to csv
  • Fixed: Sometimes Google Calendar event status was not updated
  • Fixed: Nonce error when saving Appointments Settings with BuddyPress activated
  • Fixed: Additional fields were hidden in settings menu if there were no additional fields set.
  • Fixed: Working hour exceptions not applying in very rare cases
  • Fixed: Email headers when blogname included some HTML in it.
  • Fixed Shared Resources Addon: Shared resources were not working properly in some cases
  • Fixed: Notification emails were not being sent to admin/service provider
  • Fixed: When Saturday was set to start of the week, weekly calendar was starting on Sunday
  • Fixed MarketPress integration: Appointment showing even if it’s free
  • Fixed: Timeslot available when providers aren’t available and “No preference” provider option is selected
  • New: Added new Shortcodes UI in WP Editor
  • New: new hooks for abetter extensibility
  • Enhance: Performance improvements
  • Enhance: Better dates localization
  • Enhance: Some styles fixes and improvements in settings menu
  • Enhance: Improvements in dates and times calculations
  • Enhance: Paddings options have been moved to general options
  • Removed: Built in cache feature. A+ now uses WordPress Cache API
  • Removed: Cancel link from emails due to possible exploit
  • Removed: AJAX Shortcode addon
  • Removed: Removed shortcodes submenu
  • Some other minor fixes.

See full changelog.