Join WPMU DEV for online booking with


Simply manage your studio, salon or clinic’s calendar in WordPress – whether you’re a private practice or spread across multiple locations.

Appointments + automates your schedule and lets clients book online and reserve their spot with a deposit.

Downloads 135,020
Ultra Compatible
Version 2.3

Changelog / Translations

Version 2.3
  • Convert "Time base" on "Time Settings" to human readable. Props for David @ BBS.
  • Fixed a problem with not available calendars on Service Provider profile.
  • 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 few translation strings.
  • Improved UX on "Payments" tab for MarketPress integration.
  • Improved "Working Hours" and "Exceptions" tabs content on mobile devices.
  • Refactored "Services" screen and use WP_List_Table class for the list.
  • Refactored "Service Providers" screen and use WP_List_Table class for the list.
Version 2.3
  • Convert "Time base" on "Time Settings" to human readable. Props for David @ BBS.
  • Fixed a problem with not available calendars on Service Provider profile.
  • 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 few translation strings.
  • Improved UX on "Payments" tab for MarketPress integration.
  • Improved "Working Hours" and "Exceptions" tabs content on mobile devices.
  • Refactored "Services" screen and use WP_List_Table class for the list.
  • Refactored "Service Providers" screen and use WP_List_Table class for the list.

Version 2.2.8
  • 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 paddings on the weekly booking calendar.
  • Improved the "app_my_appointments" shortcode and added a message when we have no appointments.
  • Removed DateTime::createFromFormat() usage to be compatible with PHP 5.2

Version 2.2.7
  • 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.

Version 2.2.6
  • 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.

Version 2.2.5
  • 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.

Version 2.2.4
  • 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.

Version 2.2.3
  • Fixed export additional appointment fields (only PRO version).
  • 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 Rolf Allard van Hagen.

  • Fixed missing JavaScript scripts.

Version 2.2.2
  • 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.

Version 2.2.1
  • 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.

Version 2.2
  • 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

Version 2.1
  • 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

Version 2.0.5
  • 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

Version 2.0.4
  • 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

Version 2.0.3
  • 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

Version 2.0.2
  • 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

Version 2.0.1
  • 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

Version 2
  • 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.

Version 1.9.4
  • Fix: Working hours were saved with wrong time format

Version 1.9.3
  • Fix: Error when MarketPress is installed

Version 1.9.2
  • New: GCal setting: Overwrite Google Calendar Title and Description
  • Fix: Service Providers excerpt pulling post content
  • Fix: Editing booked appointment hides the one currently opened
  • Fix: Location data missing in Confirmation Table
  • Fix: Sorting and ordering appointments in app_my_appointments shortcode
  • Fix: Responsive issues in Appointments list
  • Fix: [MarketPress] Remove an Appointment from shopping cart when appointment status changes
  • Fix: Pending appointments changing to completed when they expires

Version 1.9.1
  • Fix: Google Calendar appointments were remove instead of been set to completed status when time passed by
  • Fix: Improvements on reminder notifications
  • Fix: app_my_appointments shortcode does not filter by status
  • Enhance: Added new hooks before a GCal event is updated/inserted/imported

Version 1.9
  • This release brings a new settings, locations and addons pages with a better UX and new hooks to easily extend the possibilities of the plugin.
  • It also fixes bugs in several areas:
  • Login with Twitter, Facebook and Google failing on login in some cases
  • Confirmation notification email to workers contains cancelled appointment text
  • Improvements on Google Calendar to avoid conflicts with other plugins
  • Appointments Notes were being overwritten when syncing with Google Calendar

Version 1.8.2
  • Fixes several bugs on:
  • - Additional fields Addon
  • - Email notifications
  • - Some other minor styles fixes

Version 1.8.1
  • Fixed: Google Calendar time query was not propery parsed
  • Fixed: Some notifications were sent even if they were disabled in settings

Version 1.8
  • Enhance: Better UX for Appointments admin page
  • Enhance: Better notification system, now more extensible
  • Fix: GCal import was setting services and service providers back to default
  • Fix: Confirmation emails were always being sent even if option was unchecked
  • Fix: Javascript error when adding additional fields
  • Fix: Addtional fields being processed after an appointment is already updated was causing to send confirmation emails twice
  • Fix: Locations in confirmation email not parsed
  • Fix: Appointments set to removed status when it was completed in some cases
  • Fix: Some strings textdomains

  • Fix: Workers were unable to save their profile if GCall Access Code was empty
  • Fix: Additional Fields - Mandatory text field was not processed

  • Fix: Additional fields addon not saving fields
  • Fix: Additional fields addon not showing up fields in admin
  • Fix: Double check for Google autoloader to prevent other plugins conflicts
  • Fix: When Service Locations Addon was active, GCal events were duplicated

Version 1.7.2
  • Fix: Appointments dates were set to 12AM when importing manually
  • Fix: When no cancel Appointment page is set, the URL was malformed
  • Fix fatal error when saving a BuddyPress profile
  • Fix warning in user profile
  • Fix: Plugin was sending too many reminders to workers
  • Fix: In some cases, Appointments were not inserted if gcal_ID was an empty string
  • Fix: Appointments list are reversed ordered by default
  • Fix: Appointments GCal syncing was updating custom inserted data in Google Calendar
  • Fix: If an Appointment is set to completed or penmding do not delete it from Google Calendar
  • Fix: Typo in function name was preventing posts content to render if some of the A+ Settings were checked
  • Fix: Appointments were not properly sorted on admin list
  • Fix: JS Conflicts in Profile page
  • Enhance: Improved upgrader class
  • Other minor fixes and improvements

Version 1.7.1
  • Fix: app_services shortcode: order_by attribute doesn't seem to take any effect
  • Fix: Custom checkbox field shows as a text field on backend
  • Fix: Google Calendar API was not deleting appointments that were deleted from GCal
  • Fix: Updating schedule in user profiles not working when the user editing was not the same than the edited one
  • Fix: Search client feature not returning any results
  • Enhance: Improved Appointments screen UX
  • New: Added new hooks in My APpointments list
  • New: Appointments meta table
  • New: Added get/delete/update appointments meta functions

Version 1.7
  • Fix: Plugin was redirecting to Thank You Page even if the appointment reservation failed
  • Fix: Parse error: T_PAAMAYIM_NEKUDOTAYIM
  • Fix: app_services shortcode not selecting the default service
  • Fix: app_my_appointments shortcode colspan issue
  • Fix: When making an Appointment, emails with a blank space at the end were not validated
  • Fix: Location shown in select box keeps defaulting to first option
  • Fix: Conflict with Google Analytics Dashboard for WP 
  • Fix: fatal error when GCal cannot delete an appointment
  • Fix: Fixed warning in monthly calendar widget
  • More case insensitive variable fixes for HipHop systmes
  • Other minor fixes
  • Enhancement: Google Calendar API Integration remade from scratch
  • Enhancement: Some little admin styles improvements.
  • Enhancement: Some improvements in appointments functions (insert, update and get) to allow more and better arguments
  • New: appointments_get_service_capacity() function
  • New: appointments_is_busy() function
  • New: appointments_get_month_appointments() function
  • New filter: appointments_insert_appointment_args
  • Some code refactoring

Version 1.6
  • New: New setting to redirect to a Thank You page after appointment confirmation
  • Fixed: Add Google Calendar Button dates
  • Fixed: Error when editing a profile in BuddyPress
  • Fixed: Customer Notes field not showing up in confirmation form
  • Fixed: Appointments durations timetables calculations issue when Services had different durations
  • Fixed: case insensitive variables/constants for HipHop environments
  • Enhancement: Timetables regeneration takes less time now
  • Enhancement: [app_worker_monthly_calendar] ordering by start ASC date by default
  • Some other minor fixes
  • Some other performance improvements

Version 1.5.7
  • Timetables cache fix
  • Admin styles improvements
  • Minor fixes

Version 1.5.6
  • Enhancement: Clearing cache properly when upgrading version
  • Enhancement: Added capacity cache
  • Enhancement: Added CSS classes in every time in timetables
  • Enhancement: Appointments and Workers cache are now much faster when processing timetables
  • Enhancement: Saving timetables cache at shutdown to avoid more queries
  • Fixed Locations Add-on: Warnings in Locations screen
  • Fixed Locations Add-on: Locations were not saved in Services Providers screen
  • Fixed Paddings Add-on: Paddings were not being saved in Service Providers screen
  • Fixed GCal bug: Timetables were not being updated when importing events
  • Fixed minor performance issues when Durations add-on was active
  • Fixed: Worker is not selected automatically by default and timetable displays wrong times in some rare cases
  • Fixed: order by parameter not working when orderby = name in get_workers function

  • Fixed: Week days were not translatable
  • Fixed: Timetables were selecting wrong service in some cases

Version 1.5.5
  • Fixed: Exporting Appointments was throwing a fatal error
  • Fixed: Loader GIF not showing on confirmation
  • Fixed: GCal was not appearing on confirmation
  • Fixed: error with MarketPress integration
  • Fixed: Deprecated/Warnings in some parts of the code
  • Fixed: Errors when processing Appointments by AJAX
  • Fixed: Confirmation fields were not appearing in Confirmation Shortcode
  • Fixed: Confirmation emails were not sent
  • Fixed: Some cache issues
  • Enhancement: Timetables code bottleneck
  • Enhancement: Timetables are now cached for 24h
  • Enhancement: Services Shortcode markup and JS
  • Enhancement: Reduced number of queries in monthly shortcode
  • Enhancement: Many performance improvements
  • Improved Confirmation Shortcode Javascript
  • New: many new functions to interact with workers, appointments and services in an easier way
  • New: Classes for workers, services and appointments with better error handlings
  • New: Unit Tests

Version 1.5.4
  • Fixed: Appointments were not appearing in calendar due to cache system

Version 1.5.2
  • Fix work hours array filtering.
  • Fix ampersand escapes in JS redirection URL filtering.
  • Fix numeric requests overflowing the integer value.
  • Fix selected service in filtered list.
  • Fix macro expansion in worker reminder emails.
  • Fix WP_Widget constructor calls.
  • Add MarketPress 3.0 compatibility.
  • Add extra parameters to scheduling hours filter hook signatures.

Version 1.5.1
  • Fix underscore templating conflict issue on certain configurations.
  • Add a bit more elaborate logging and exception handling.
  • Fix Google configuration override API so traditional hook works.
  • Fix paddings issue applied on appointments creation admin-side.
  • Fix schema updates on network environments.
  • Fix page reloads on login required in certain scenarios.

Version 1.5
  • Deprecate the old Google API client library and update to v1.1.4.
  • Fix style helpers conflict.
  • Fix reapplied appointment ordering.
  • Fix Twitter login popup initial redirect.
  • Fix time format values for adding appointments back end.
  • Fix type casting in price boolean checks.
  • Fix logic error in client name resolution fallback.
  • Add cancel link to worker reminder emails.

Version 1.4.8
  • Add integration for Membership 2

Version 1.4.7
  • Expose removal notification message body for filtering and expand additional fields e-mail macros.
  • Fix slashes escaping in user-added CSS.
  • Fix HTML output in locations and pointer tutorial issues.
  • Fix appointment period calculus to respect the overall settings in "show scheduled users" add-on.
  • Add email and GCal export support for appointment location macro expansion.
  • Fix the appointments table price column being an integer.
  • Add zero-priced appointments auto-confirm flag as an option.
  • Fix errors on installs with disabled Heartbeat API.
  • Fix for race condition conflicts with appointment IDs.
  • Fix for misleading supported type toggle.
  • Fix for iOS ignoring focus offset.
  • Fix for double date opening bug on Windows.

Version 1.4.6
  • Fix for admin side javascript globals.
  • Fix for global format reordering, and allowing for both local and global reordering.
  • Added appointments GCal manual export option.

Version 1.4.5
  • Fix for issues with searching appointments.
  • Fix for markup filtering breaking the shortcode arguments.
  • Fix for Service name being truncated if it contains a dollar sign (props Jose).
  • Fix for long-running GCal appointments display issue.
  • Added automatic completion for additional fields (props Jose).
  • Added worker and service expansion in schedule titles.
  • Added Google+ login support.
  • Added removal notification email.

Version 1.4.4
  • Fix for editable fields toggling.
  • Fix for relying on JS injection, using replacement instead.
  • Fix for quoting and macro escaping issue.
  • Fix for numeric GET parameters.
  • Fix for currency symbol l10n issues.
  • Fix for multiplied display of unique locations.
  • Fix for profile cancellation GCal integration issue.
  • Added worker montly calendar paging support.
  • Added the Default Service add-on.
  • Added the Pending Appointments count notification add-on.

  • Fix for date/time parsing problem with initial formatting.

Version 1.4.3
  • Fix for emails on bulk status changes.
  • Fix for filtering the worker names in the widget.
  • Fix for date/time parsing problem with certain locales.
  • Added reordering worker services by requested order.
  • Added the registration URL to list of supported actions.

Version 1.4.2
  • Fix for quotes escaping issue with injected javascript.
  • Fix for permissions issue with bbpress/buddypress pages registration.
  • Fix for colorpicker localized dependencies loading issue.
  • Added "strict" shortcode argument to app_my_appointments shortcode.

Version 1.4.1
  • Fix for confirmation emails sent on purchase via MarketPress integration.
  • Fix for services with different durations not properly allocating free times.
  • Fix for BuddyPress redirects.
  • Fix for GCal synchronisation on non-immediate actions.
  • Fix for GCal exception handling.
  • Fix for page creation issue with concurrent settings change.
  • Fix for Additional Fields add-on deletion when there's only one field.
  • Fix for administrative permissions (props Ash).
  • Added additional fields placeholders for GCal sync.
  • Added the import-only GCal integration mode.
  • Fixed overlaps in time selections.
  • Added service paddings add-on.
  • Added stackable break times option to durations add-on.
  • Added shared resources add-on.
  • Improved MarketPress integration for new appointments.
  • Refactored install and uninstall routines.

Version 1.4
  • Allowing for optional Google SDK dependencies loading.
  • Lowering the case of exported column names to prevent Excel bug from triggering (
  • Fix for the "only one service and only one provider per time slot" condition
  • Adding the explicit ordering to prevent race conditioning
  • Normalizing the variation implementation on appointment confirmation.
  • Preventing the autocompletion on working hours forms and dropping the meridiam designator.
  • Moving locations saving action.
  • Allowing for toggling between exact (legacy) matching and overlap detection.
  • Making the admin data overrides legacy and optional.
  • Exposing a new flag for free auto-confirmation in paid environment.
  • Fetching a list of already present appointments to prevent duplicates on GCal sync.
  • Bugfix for email macro expansion.
  • Keying weekdays by their translation names.
  • Dropping the old reserved GCals if the DB version is under threshold.
  • Added the product cart add-on.
  • Added export scoping.
  • Added user-supplied custom fields add-on.

Version 1.3.1
  • Optional fix for Google SDK file caching paths and open_basedir clash.
  • Fix for l10n issues and local js file paths loading.
  • Fix for context roles default settings.
  • Fix for GCal user columns trumping over all the new ones.
  • Added duration calculus settings add-on.

Version 1.3
  • Fix for service providers name display.
  • Fix for sessions initialization issue.
  • Fix for service interval render on front-end.
  • Fix for anchorless page reloads.
  • Added support for multiple break times.
  • Introduced the add-on system.
  • Added biography and description custom post type support.
  • Added appointment locations support.
  • Added services and workers locations support.
  • Added Google Maps integration support.
  • Added administrative permissions editing support.
  • Added selective worker name display.
  • Added the login services limitation add-on.
  • Added worker calendar shortcode.
  • Adding saner fallback for worker/service summary getting and GCal event description fallback.
  • Calculating balance (price - deposit).
  • Profiling and performance improvements.
  • Refactoring the FAQ and shortcodes help pages.
  • Refactoring all tutorial content to a separate file.
  • Refactoring all the shortcodes to a new API.
  • Adding contextual help base class and shortcodes help in contextual help dropdown.
  • Introducing a switch to allow user domain population for BuddyPress (if present).
  • Populating and caching status names.

Version 1.2.8
  • New: Users page custom column to display GCal method of service providers at a glance
  • Enhancement: More safety measures
  • Enhancement: ADDRESS and CITY placeholders can be used in GCal location field
  • Change: If there is a connection error with Google server for GCal, error message is logged now instead of throwing an exception
  • Change: GCal button can now be disabled from either settings or from the my_appointments shortcode
  • Change: Now accepting 20 minutes of token time difference while it was 30 seconds before
  • Fix: Description template for GCal for service providers' own settings was not being used, but website template was being used
  • Fix: Updating of GCal event when appointment belongs to a specific service provider and edited on the admin side
  • Fix: Overwriting of Event Summary of Note field during GCal update

Version 1.2.7
  • New shortcode app_all_appointments to list all upcoming appointments
  • Fixed CANCEL link in reminder message and related "Catchable fatal error" message
  • Confirmation shortcode lacking warning message is now limited to pages those actually having schedule shortcodes
  • New filters for emails
  • Tested with WordPress V3.6 Beta 1, no incompatibilities found

Version 1.2.6
  • Client can be allowed to cancel his appointments using links in confirmation or reminder emails, my appointments table or using his profile page
  • Schedules can be forced to start from a selected date using shortcode parameter "date"
  • CITY placeholder can be used in emails
  • A minor improvement of how ID's recorded to the log file
  • Fixed a minor markup issue in monthly calendar when last day of the month is also last day of the week
  • GCal exception errors are saved in log file if they are not possible to be displayed because headers were sent
  • Session start errors after GCal submission are handled more gracefully
  • New FAQ's added

  • Fixed calendar widget not correctly showing completely booked days
  • Notification message to service provider includes appointment date and time now

Version 1.2.5
  • New dismissable admin notice if confirmation shortcode is lacking on an appointment page
  • In MarketPress integration, product button for appointments in product list page is changed as Choose Option
  • Fixed a javascript issue when paypal shortcode is not used, although payment required is set as Yes
  • Improvements in user profile settings for GCal API
  • Prevented deleting of a service provider's imported GCal events when removing those of another one
  • Improvements for translation of pagination texts
  • Filters for reducing time base smaller than 10 minutes and appointment upper limit are now effective
  • Selectable service durations are increased to 24 items, but limited to 24 hours

  • Bulk status changes are applied to GCal
  • For logged in users, email and user display names are pre populated in the confirmation form
  • Fix for special characters (like &) in email headers
  • Fix for more conflicts with Google+ plugin

Version 1.2.4
  • Prevented auto increment value in appointments table going too high after GCal imports
  • Fix for BuddyPress working hours being reset issue when provider confirms his appointments using his navigation tab
  • GCal API setting fields are no more shown in profile page of a non service provider member
  • Private key files for service providers are correctly duplicated to uploads folder now
  • Prevented conflict with Google+ plugin and other possible plugins using Google API by renaming $apiConfig variable
  • Some UI improvements to display selected currency and clarify GCal usage. Also new FAQ's added
  • During uninstall, all traces of GCal are removed from file system and database
  • Fixed default settings not being loaded for new installations

  • Fix for Export button not working on some areas
  • Permission to use cents in price fields which was accidentally disabled in the previous update
  • Fixed issues when GCal API test connection and manual imports are started from user profile page

  • Empty spaces used in reminder times are deleted now
  • New filter to define special prices for MarketPress integration
  • Updated jquery datepick and fixed conflict with WooCommerce
  • Fix for special characters in emails
  • Reserved appointments (related to events imported from GCal) are no more editable as they are supposed to be
  • Wrong non-numerical value settings in capacity, service and service provider prices are not allowed any more

Version 1.2.3
  • worker and service parameters added to services and providers shortcodes, respectively
  • Appointments lower limit setting to block appointments from current time added
  • More css classes added to time slots for further custom styling
  • Services and service providers dropdowns are not displayed at all when there is nothing to be displayed
  • Optimized queries to be used even for large number of active appointments (Tested with 1000 active+reserved appointments)
  • Number of imported events for GCal sync increased to 500
  • New hooks to modify services and providers shortcode items
  • In multi site installation, records of a provider removed from a blog are correctly deleted now

Version 1.2.2
  • Bulk status changes of records on admin side are now possible
  • New setting for appointment records per page
  • Individual provider working hours and breaks are taken into account now instead of business working hours even when no provider is selected and there are more than one providers giving the same service
  • GCal imports are now limited by appointment day limit setting, database query optimized, and nearest events imported first
  • Private key files are now also saved in the uploads directory with an encrypted name to prevent overwriting with plugin updates
  • Working hours can be selected with steps based on admin side time base
  • Reserved appointments are also removed after their expiration
  • Fixed javascript error in Firefox happening while browsing on the next months/weeks when a provider is selected
  • New hooks added
  • Added APP_GCAL_DISABLE constant to disable GCal API at wp-config.php for unexpected cases
  • Database sctructure changed so that GCal ID can only be unique

Version 1.2.1
  • Google Calendar event description and summary can be set
  • Recurring instances of GCal are also imported
  • Added measures to prevent conflict with other plugins using Google API
  • Fixed time zone issue in GCal
  • Fixed time selection issue which happens while manually editing an appointment record

Version 1.2
  • Google Calendar API Integration (Beta) including synchronization added
  • A safe date format is now being used while editing Appointment records
  • Selected date is not reset now if service or service provider is changed in next weeks/months
  • Added missing esc_js functions which may break javascript in translated versions

  • Search, filter, sort functionality added to appointment records
  • My appointments, services and service providers shortcodes can be sorted by database column names from admin side
  • My appointments table can also be sorted dynamically from front end with limited date/time format support
  • My appointments shortcode now outputs the table even if no appointments found
  • Additional check if service and provider really exist for services and service providers shortcodes
  • Added missing echo to the sample file
  • Exceptional days are sorted while saving
  • Prevented and fixed duplicate loading of footer scripts for unknown reasons
  • jQuery multiselect is now being used for services provided selections on Service Providers tab
  • css conflict with WPML plugin fixed
  • Pages with hash (#) are now correctly refreshed
  • Any Appointments+ shortcodes in bio and description pages are stripped for description=content case
  • New FAQ's added
  • New hooks added
  • Fix for gcal class error of V1.1.9

Version 1.1.9
  • Search, filter, sort functionality added to appointment records
  • My appointments, services and service providers shortcodes can be sorted by database column names from admin side
  • My appointments table can also be sorted dynamically from front end with limited date/time format support
  • My appointments shortcode now outputs the table even if no appointments found
  • Additional check if service and provider really exist for services and service providers shortcodes
  • Added missing echo to the sample file
  • Exceptional days are sorted while saving
  • Prevented and fixed duplicate loading of footer scripts for unknown reasons
  • jQuery multiselect is now being used for services provided selections on Service Providers tab
  • css conflict with WPML plugin fixed
  • Pages with hash (#) are now correctly refreshed
  • Any Appointments+ shortcodes in bio and description pages are stripped for description=content case
  • New FAQ's added
  • New hooks added

Version 1.1.8
  • Database table collation settings are now correctly set even if database was not set correctly
  • Service providers can confirm their appointments from their BuddyPress profiles
  • Fixed a typo in example codes
  • CLIENT_EMAIL placeholder is changed as EMAIL
  • New hooks added
  • Error message of Google+ Openid when curl is not installed and front end logins enabled is no more
  • Around the clock case is now working for php 5.2 and older versions too
  • Stripslashes added while saving email subject and content
  • Translation base file is now presented as appointments.pot
  • In Marketpress Integration, email field is auto filled if not already set

Version 1.1.7
  • Appointments around the clock case extended also for multiple providers case
  • CLIENT_EMAIL placeholder can be used in emails
  • Added new hooks
  • New advanced FAQ's added
  • For additional time base, divisible by 10 or 15 rule removed
  • New dismissable admin warning if no service provider is assigned to a service
  • New admin warning if any service is not divisible by the time base
  • New admin warning if duration of any service exceeds 24 hours
  • Some wording corrections
  • Now page refreshes after a confirmed appointment, even if GCal button is enabled
  • New setting to open Google Calendar in the same window
  • Selectable service durations increased to 10
  • WordPress 3.5 compatibility checked, no problems found

Version 1.1.6
  • Appointments up to midnight and working hours exceeding the other day are now possible
  • Handling of wp_mail function for confirmation was changed. Blind carbon copy (bcc) is not being used any more as it creates problems in some php installations
  • Fixed incorrect order limit warning in MarketPress Integration
  • Fixed 1970 issue when date format has a period
  • More fields are translatable now

  • Fixed the capacity issue of the functionality that was introduced in V1.1.5

Version 1.1.5
  • While selecting service A with no preference of service provider, appointments made for service B are now taken into consideration for providers who can give both services
  • In Monthly Calendar view, if all the time slots are busy, the day itself also becomes busy now
  • ADDRESS placeholder can now be used in emails

Version 1.1.4
  • To prevent W3T breaking javascript codes, DONOTMINIFY constant is added
  • Prevented redundant loading of style lines to the header due to the Monthly Calendar widget
  • Add !important to the legend color style settings
  • Confirmation message is not sent if appointment is removed even if send confirmation checkbox is checked
  • Emails are now correctly sent to sub site admin instead of network admin
  • Transaction date/time corrected

Version 1.1.3
  • Service providers can now be allowed to confirm appointments from their profile pages
  • Auto confirm option added
  • In no preference case, appointments of namely selected providers were not reducing available workforce. Corrected
  • In case service duration is greater than base time, GCal ending time was calculated incorrectly. Fixed
  • New hooks added
  • Admin UI rearranged

Version 1.1.2
  • Users who are not service providers can save their user data too
  • PHONE and NOTE placeholders can also be used in emails now
  • After selecting a non-default service and browsing forward or back, Show button was not refreshing the page. Fixed
  • New hooks added

Version 1.1.1
  • Autorefresh parameter for service and service provider dropdowns added
  • If there is only one provider for the service, his schedule is displayed as default now
  • Logged in users' data are now stored in user meta and editable by himself
  • Admin (or authorized users) can now display logged in user data on user's profile page
  • Admin can now edit logged in user data using Appointments records
  • In no preference case, break hours of individual providers were not being taken into account. Corrected
  • If no service providers defined, slot was being incorrectly available altough there is an appointment for another service on that time slot. Corrected

  • For single provider websites, appointments of providers are now shown in admin's account
  • If selected, service provider is also displayed in confirmation area now
  • New hooks added
  • While changing break hour tables, WP database cache was not being flushed. Fixed
  • In my appointments list, appointments were not displayed unless there was a saved cookie. Fixed
  • Logged in users were incorrectly regarded as service provider. Fixed
  • Service names in Transaction pages are now correctly displayed

Version 1.0.9
  • Appointment export function added
  • Admin side UI improved

Version 1.0.8
  • Fixed sending of confirmation email if status manually changed
  • Fixed 1970 issues in manual edit and creation due to comma in date format when php version is 5.2 or older
  • Service prices are now automatically selected in manual appointment creation and edit
  • PRICE and DEPOSIT placeholders can now be used in emails

Version 1.0.7
  • Compatibility with IE8/IE7
  • Javascript issue when selecting service after service provider fixed
  • Datepick localization issue fixed
  • When a description page was not available, current page content was being incorrectly displayed. Corrected
  • Legend area css corrected

  • IE9 styling issue fixed
  • Combination of different working hours on different days of the week issue fixed
  • If end of day does not end with a plain hour, the last time slot was incorrectly selectable. This issue fixed
  • If an appointment is forced externally using a hook, now confirmation email is sent automatically
  • First exceptional day not being taken into account issue fixed

  • Database update note fixed
  • Display of bio page content fixed
  • If there is only one service provider, his bio info is shown as default
  • If datepick localization file month names do not match those of WordPress, datepick uses English now

Version 1.0.6
  • Corrections in wording
  • Anchor app_schedule attribute changed from name to id for HTML5 compliance
  • Fixed the issue in case of display name having single quotation mark
  • Service provider dropdown is not displayed any more if there are no providers
  • Corrections in localizations where month is formatted in full or short textual representation
  • Local language and date format support for datepick
  • Extra minutes are now taken into account for start and end times of the working day
  • Combination of providers having different working schedules are now correctly evaluated
  • Dummy field added to the database
  • Now dummy service providers (imaginary users attached to a user, e.g to admin) are supported
  • Fixed redirection to wp_login_url in case of front end logins disabled

Version 1.0.5
  • New admin notice in case of duplicate shortcodes on the same page
  • Date format in emails fixed
  • Complication in European and US date formats during manual edit fixed
  • New hooks added
  • Better readability for FAQ

  • Fix for mixed carts (Appointments + normal products) in MarketPress integration

  • Support for non standard date formats to be used in datepick
  • Added new filters

  • ajax_url not being defined fixed

Version 1.0.4
  • Datepicker js warning fixed
  • Adding new service after deleting all services issue fixed
  • Now database cache is correctly flushed after editing a service or provider
  • Records for worker are also deleted when user is deleted. His existing appointments are assigned to general staff.
  • Javascript error tracking function disabled until a future release
  • Support for older php versions (

  • Just some typo corrections

Version 1.0.3
  • Custom time formats are now supported
  • Javascript error tracking function added
  • Service and providers names in emails are fixed

Version 1.0.2
  • New hooks added
  • Creating tables for sub blogs in multisite mode fixed
  • Conflict between caching and wpautop resolved
  • New setting: Send notification email in case a new appointment is taken that requires confirmation
  • New settings: Additional base time and admin base time which let better customizations

Version 1.0.1
  • Integration with MarketPress
  • php warning after save post is fixed
  • Styling corrected for Monthly Calendar widget
  • Service provider display name corrected
  • Google Calendar location can now be set from settings

Version 1
  • Initial Release
The most powerful, flexible and feature-rich bookings plugin available for WordPress.
  • Add unlimited providers and locations
  • Login with Google+, Facebook, or Twitter
  • Set an appointment and make a deposit
  • Use MarketPress payment options
  • Pick a time, location and provider
  • Style selector and customizer

Take control of scheduling and calendar management for your business with Appointments +.

Let your clients check availability, choose a location, select a service provider, book an appointment and make a deposit on your website.

Get users comfortable with your team before they ever schedule an appointment.

More Control

Appointments+ is easy to set up, but there’s more under the hood than you might think! Add an unlimited number of employees, partners and contractors as providers.

Give them bio pages and display their schedule so clients can choose a provider that fits their need.

Make services and providers location specific so clients can sort availability by service, time, location and provider.

Make it easy to take a deposit at confirmation.

Streamline Scheduling

Our simple 3 click process is configured to allow visitors to set an appointment without forcing visitors to create a user.

Your time is valuable. Collect payments or take deposits through PayPal without any additional code or plugins.

Share available time slots and let visitors book appointments.

Simple Integration, Highly Customizable

Appointments + has a super clean front-end interface that works nicely with most any theme. Use a color preset or perfectly match your brand with the color picker.

Plus, you can add design tweaks quickly from the included field for additional CSS rules.

Shortcodes, Widgets and Over 20 Add-ons

Use shortcodes and built-in widgets to quickly list services, providers and calendars where you need them. Plus get over 20 free add-ons that expand functionality.


Administration Permissions

Configure what user roles can manage and access appointments +.


Export Date Range

Choose to export a list of appointments within a specific date range.


HTML emails

Use default plain text emails or layout and send emails with HTML customization.


4 Location Addons

Create appointment locations, integrate Google maps, and tie services and providers to specific locations.


MarketPress Integration

Use any of the MarketPress payment gateways to accept payment for services.


Dynamic Time Slot Adjustments

Tetris mode adjusts time slots dynamically to avoid downtime after breaks or appointments.


Powerful Time Slot Flexibility

Advanced service duration control and add padding time around appointments.


Set Custom Post Types

Use custom post types for provider biographies and service descriptions.

Social Login

Capture client information by requiring users to login to schedule an appointment.

Make it easy with social credentials – allow users to login with their Facebook, Twitter, Google+ or WordPress account.

Sync With Google Calendar

Both clients and service providers can save appointments made on your site directly to Google Calendar with a click – no setup required.

We’ve also included the Google Calendar API. Easily configure Appointments + to automatically sync changes to appointments between Google Calendar and your site.

For help and information on installing plugins you can view our Installing WordPress Plugins Manual.

Check out this extensive tutorial on building your first Appointments based site. Or, watch our video tutorial series:

Appointments + Video Tutorials

Once you Activate the plugin you will see a menu appear on the Menu Bar labeled Appointments.

Appointments Menu

You will see three sub-menus appear when you click on the menu item.  We will tackle each separately and in order.

Appointments Submenu


Clicking Appointments brings you to the hub of your appointments list.  You will see that your appointments will be separated by status: Active, Pending, Completed and Removed.  You can view each by clicking on their respective links, and each page will show the Client and Service basic info as below.  At the top of the page you will see an Add New button, just like you use to create a new page or post.  Click that and you can Add a new appointment manually to your calendar.

Add New AppointmentThe New Appointment Menu is pretty self explanatory.  There is a place for the client’s infomation, the Service information (that will populate from the menus you fill in later) and a place for notes.  Last but not least you can set the status before Saving.  There is a built in tutorial that covers this as well, I will show you where to find that, just in-case you have any questions or forget something.

Add New Meta

next up…


Here you will see your transactions if you are taking payments or deposits.  These are also grouped: Recent, Pending and Future.  Each accessible by clicking their respective links.  You cannot manually add a transaction, the plugin will only record what is recorded through PayPal.


And now the meat of this beast…


The Settings menu will greet you with a Tutorial.  You should pay attention to that :)

It will tell you what you need to know about setting up the plugin and the tabs you see here.  Most are pretty easy to understand and the plugin options are very well annotated, so you should have no trouble.  We can pop through and summarize them here, one by one, but I will draw your attention to the FAQ tab first.

Settings Menu


Here is where you will find info on everything you need in this plugin, ready for immediate access!   The TWO most important pieces of information on this page, for those who are just installing or learning how to use the plugin, are the two links at the top.  These will start (or restart) the tutorials on the Settings menu options and Entering and Editing Appointments.


Now, let’s backtrack.  Starting off at the first tab:


These settings are the heart and soul of your setup.  Pay special attention to the General Settings box at the top of the page.  Especially the Time base value.  Time Base the most important parameter of Appointments+. It is the minimum time that you can select for your appointments.  Everything time related will work off of this value.  The remaining boxes allow you to set your

  • Display: create an appointment page, it’s display, client information boxes and a place to add Custom CSS.
  • Client Accessibility: you can choose whether or not to require login before scheduling
  • Payment Settings: choose whether you will accept payments
  • Notification Settings: option to set up confirmation and reminder emails for client and/or providers
  • Performance Settings: Caching options

General Settings

Working Hours

Set your hours of operation and Break Times.  Think Business Hours and ‘Out to Lunch‘.  You can even specify different hours for different service providers.  Makes it easy to keep track of differing schedules!

Working Hours


Days off, holidays, scheduled maintenance, etc.  You can add them all here.  You can also define working days that are normally non-work days (i.e. a particular Sunday).  These are also able to be set per service provider.



What do you do?! What do you provide?!  This is where you lay it all out.  Set a capacity, price and even a description page.


Service Providers

It is not required that you have more than one person available doing what gets done, but if you do, here is where you keep track of them all.  You can even add Additional fees and assign more than one service to a provider.  Even attach them to a Bio page.  Note: this tab will not populate until you have at least one service listed in the Services tab.

Service Providers


Heaps of Shortcodes for your use. Insert provider or client specific tables, dropdown of services, table for appointment scheduling, monthly views, social login pagination, list all upcoming appointments, PayPal and a couple of parameters for those.

You can find a complete documentation of shortcodes here: or use the visual shortcode generator.


Keep up with what is happening by checking your Logs.  This nifty tab is where you will find updates on everything that happens on your site.  Status changes, transactions and the like.


And that’s it! Well not really. You will need to download and install to see the details.  This plugin is spectacularly annotated and contains loads of helpful information along the setup process!  Enjoy!

Appointments+ is covered by the WPMU DEV Guarantee

WPMU DEV Guarantee

We guarantee that...

  • Appointments+ will work as advertised
  • You will receive 24/7 365 expert support for any problem
  • If you cancel your FREE trial, you can keep Appointments+
  • Appointments+ is secure, always updated and well coded

Money back guarantee!

While you have 30 days, no obligations risk-free trial of WPMU DEV if you become a paid member and are dissatisfied with any of the above we'll refund you, no questions asked.

45+ Premium Features

Features that rival the most sophisticated – and much more expensive – booking platforms.

  • Unlimited services
  • Unlimited service provider profiles
  • Set “black out” days
  • Schedule breaks
  • Choose working hours
  • Back end and front end schedule edit
  • BuddyPress compatible
  • Shortcode integration option
  • Automatic appointment page setup
  • Display weekly schedule
  • Display Monthly schedule
  • Limit advanced booking
  • Gravatar support
  • Simple appointment manager
  • Transaction manager
  • Includes setup wizard
  • Custom color labels for appointments
  • Calendar style options
  • Auto-fill for repeat clients
  • Login with Facebook
  • Login with Twitter
  • Login with Google+
  • Login with WordPress
  • Integrates with WPMU DEV Membership
  • Integrates with MarketPress gateways
  • Require payment or deposits
  • Fixed or percentage deposit
  • Google Calendar sync
  • Appointment reminders
  • Manual appointment booking
  • Automatically remove unpaid appointments
  • Monthly calendar widget
  • Service provider widget
  • Services widget
  • Tutorials and FAQ included
  • 130+ custom filter and action hooks
  • 20 included Add-ons
  • Set multiple break times
  • Custom appointments+ profile fields
  • Define appointment locations
  • Add services and workers locations
  • Google Maps integration
  • Integrated notifications system