Last modified: May 23, 2018


Install process is quite simple :

  • After downloading plugin ZIP file log into WP admin page.
  • Open Plugins >> Add new.
  • Click on “Upload plugin” beside top heading.
  • Drag and drop plugin zip file.


After installing plugin you will see new item in your left menu of admin panel ( Easy Appointments ) . Open Settings sub-menu from plugin :

  • Define at least one location
  • Define at least one service
  • Define at least one worker

After making those settings, time is to make connection between them. “Connection” is term for single working slot for that location-service-worker. You can create multiple connection for single location-serviceworker . For example if you want to have two slot times for specific time you can just clone previous connection and change time. For multiple slots just clone connections.

If there is no at least one location, service and worker connected together there will be no free time slots available and user will not be able to create booking!

For Services you must provide duration in minutes and slot step time. (duration/slot_step) must be round number. For example duration 60 minutes and slot step 20 minutes. (60/20) = 3!

Time management

In order to set available slots in your Appointments plugin you need to create connection between location, service and worker. Every single combination of that three items is one slot or capacity!

So if you want for example to have two slots for same time you need to copy the same connection. This way you can adjust time and capacity any way you want. Same thing is for increasing and decreasing your capacity at some time. Just clone connection and save it as “not working” for decreasing.


On last tab in settings you can define :

  • Email notifications ( Pending, Reservation, Cancelled, Confirmed )
  • Translations of labels
  • Time format
  • Currency


If you completed all settings you can move to insert front-end part of plugin on page or post that you selected.

In order to place plugin widget for creating appointment on your page, you need to place short-code to that page :

Standard form



Name Description
scroll_off turn off scroll {true, false}, default value “false”
default_date Set default date on calendar that will be selected when customer opens the form. Default value is current date. Date format YYYY-MM-DD example : 2017-12-31. Also you can set time formula like set default day 5 days from now +5d or next week +1w etc.
show_remaining_slots show remaining slots {“0”, “1”}, default value “0” – since version 1.11.6

Example :

[ea_standard scroll_off="true"]

Bootstrap version – responsive layout

Or for responsive bootstrap version (from v1.2.0)


For bootstrap there are additional options :

Name Description
width value {000px}, default value “400px”
scroll_off turn off scroll {true, false}, default value “false”
layout_cols value {1,2}, default value 1
location predefined location, value {id number of location}, default value null
service predefined service, value {id number of service}, default value null
worker predefined worker, value {id number of worker}, default value null
rtl Use right-to-left label position, value {0, 1}, default value 0
default_date Set default date on calendar that will be selected when customer opens the form. Default value is current date. Date format YYYY-MM-DD example : 2017-12-31. Also you can set time formula like set default day 5 days from now +5d or next week +1w etc.
show_remaining_slots show remaining slots {“0”, “1”}, default value “0” – since version 1.11.6

Example :

Two column layout with fix width

[ea_bootstrap width="800px" scroll_off="true" layout_cols="2"]

Set predefined values for location / service / location

[ea_bootstrap worker="1"]
[ea_bootstrap worker="1" location="1"]
[ea_bootstrap worker="1" location="1" service="1"]
[ea_bootstrap default_date="2017-12-31"]
[ea_bootstrap default_date="+1m +5d"]

In future there will be more than one short code for different style and layout of front-end part of plugin.

Appointments status

Created Appointments can have status from next list :

  • Reservation – When customer creates Appointment select date and time value it will automatically create reservation on back end. But only if option Auto reservations is marked.
  • Pending – When customer fill out the form status will change form Reservation to Pending.
  • Confirmed – After admin click to confirm Appointment or that is done by customer status will change from Pending to Confirmed.
  • Abandoned – This status will have Appointment when customer clicks on cancel button at end of form. But only if Auto reservations is marked.
  • Canceled – If customer or admin cancel Appointment status will change to Canceled.

GDPR – EU data protection

Since EasyAppointments version 2.3.1 there are special options for getting consent from user regarding GDPR and data protection EU act. You can define custom checkbox in customers form with custom Label, custom Error message if field is not marked and custom Link to dedicated page where you can put more details about data protection on your site.

Tracking (Google Analytics)

There is a call back event when customers create an Appointment. By simply hooking on that event you can add additional tracking service code. Name of event is easyappnewappointment. Here is an example how to do that for Google Analytics :

document.addEventListener( 'easyappnewappointment', function( event ) {
ga('send', 'event', 'New Appointment', 'submit');
}, false );


Time table report is showing all slots ( free – taken) for whole month. There you can track if your time settings is OK. Time table also helps to quickly see what is next free slot is for that location – service – worker connection.

Export – allows you to export you data to CSV format that you can use to import it to MS Excel or OpenOffice Calc. You can specify date range for the export appointments. Fist row in export file contains column names.
Currently there are only two reports but new are coming.


Easy appointments plugin supports translation. You can translate some labels via settings page but if you want to translate all labels you must create your own translation file. This can be done by external application (Poedit) or even inside WordPress admin panel via translate plugin (Loco Translate, GTranslate, WPML, …). Take a look on how to do that via Loco Translate :

Extension – Plugin

Google Calendar

Before Easy Appointments Extension start with syncing the appointments with Google Calendar it is necessary to provide App data (cliend id and secret) and after it allow access to Calendar and retrieve the Access token

Here is tutoral on how to set Google Client Id and Client Secret and obtain the Access token. Video is old but still relevant as tutorial for Google Calendar settings :

Make sure that you have valid email address for employee (worker) also email address of customer must be valid as well. Wrong value for email will lead to error during upload on Google Calendar!

Make sure that time zone is the same on both ends! Time zone in WordPress Admin page must be set to Name value instead of “+2 GMT” like value!


Name Description
Event subject Subject of Event in Google Calendar. In this field you can use custom tags to store additional value in Google subject field inside of Event
Default location Location for Events that are created on Google Calendar and synced back to Easy Appointments
Default service Service for Events that are created on Google Calendar and synced back to Easy Appointments
Sync data for next `X` days Send sync request for events that are within `X` days on Google Calendar. This options allow fine tune for amount of data that will be processed during each import cycle
Sync interval how often to run sync with Google Calendar, in minutes.
Advanced Calendars sync here you can connect multiple Google Calendars by selecting the Calendar and default values for Location, Service and Employee. Only writable calendars are going to be listed there. This option is available from 0.7.0 version, so you can have for example separate Google Calendars for separate service / location / employee.


You can use Twilio as SMS service to notify you customers and send reminder for Appointment.


Name Description
Account SID Twilio account ID. (Account that will be used for billing)
Authtoken Access token for that Account.
Phone field Mark field that is carrying the Phone data from customer.
Send from Phone number that will be in Send from field. (you can buy phone number on Twilio or transfer your current one)
SMS Template Template that will be used for sending the SMS notification to Customer. If you want to skip sending SMS for some statuses just save the empty value for it. Here you can use all tags available in email notifications.#id#, #date#, #start#, #end#, #status#, #created#, #price#, #ip#, #link_confirm#, #link_cancel#, #service_name#, #service_duration#, #service_price#, #worker_name#, #worker_email#, #worker_phone#, #location_name#, #location_address#, #location_location# with custom fields tags.
Send SMS reminder When do you want to send SMS reminder for customer.


First thing is to create connection between Easy Appointments Service and WooCommerce Products. After that is done visitor can have Product added to chart as soon as the Appointment has been created.

You can set redirect page after creating appointment to Cart or Checkout, Go to page option is inside Settings > Customize.


You can send ICS file with every customer notification so the user can import Appointment to own Calendar. This is possible because ICS files are accepted by mail client allowing importing Appointment to their Calendar at one click! For example here is how GMail show that option :


SummarySummary, you can use tags in order to customize content : #id#, #date#, #start#, #end#, #status#, #created#, #price#, #ip#, #link_confirm#, #link_cancel#, #service_name#, #service_duration#, #service_price#, #worker_name#, #worker_email#, #worker_phone#, #location_name#, #location_address#, #location_location# with custom fields tags.File nameFile name of ICS file that will be part of customers email as attachment.

Name Description
Send ICS file Mark this option if you want your customers to receive ICS file along notification email.
Description Appointment description (Title), you can use tags in order to customize content : #id#, #date#, #start#, #end#, #status#, #created#, #price#, #ip#, #link_confirm#, #link_cancel#, #service_name#, #service_duration#, #service_price#, #worker_name#, #worker_email#, #worker_phone#, #location_name#, #location_address#, #location_location# with custom fields tags.


If you want to use paypal checkout before making appointments for your customers first thing is to create a PayPal application inside your PayPal account. That can be done in couple of clicks. After that copy Production (live) ID and select mode production.
You can choose if you want payment to be mandatory or optional.
Here is example of mandatory version : DEMO and how to setup PayPal documentation page.