Booking system for appointments and events, with multiple service options and locations

Hi
We are building a booking system for a client. There are quite a few parameters we need to be able to include in the booking system - it appears that a combination of Appointments+ and Events+ will be capable of doing what we need but we are not sure how to put it all together.

The service provider provides 3 service areas for individual appointments- Healing, Psychic and Medium. She has different appointment lengths available and each of these has a specific price attached (Healing 30 minutes is $50, healing 60 minutes is $80 etc.). She also travels around the country so we want clients to be able to select a location to book (so that a client doesn't book an appointment in Melbourne while the service provider is in another state). She also does seminars/events which will need to allow booking for multiple people.

Ideally we would like the client to be able to follow a series of options when booking.
1. Do you want to book an individual appointment or attend an event?
Then if booking an individual appointment:
2. Choose a location
3. Choose a service area (Healing, Psychic or Medium)
4. Choose an appointment length (30 mins, 60 mins)
Show available appointments (that meet all these criteria)

Any advice/direction on how to achieve this would be much appreciated!

Thanks

  • Tyler Postle

    Hey MuzoYd,

    Hope you're doing well today and thanks for your question!

    1. Do you want to book an individual appointment or attend an event?

    You can do this by creating a page and then either having buttons or graphics or just plain text links that will lead to either the Appointments+ page or the Events+ page.

    2. Choose a location

    Activate the "Locations" add-on then activate the "Service locations" add-on. You will need to make duplicates of the service for each location then we will force location first so they don't see the duplicates - I'll post the shortcode needed below :slight_smile:

    3. Choose a service area (Healing, Psychic or Medium)

    This will work :slight_smile: as mentioned above.

    4. Choose an appointment length (30 mins, 60 mins)
    Show available appointments (that meet all these criteria)

    You will need to have separate services again here for each length. As you can only have 1 service duration set at a time for each service.

    Here is the shortcode you will want to use on your page:

    [app_my_appointments]
    
    [app_required_service_locations autorefresh="1"]
    
    [app_monthly_schedule]
    
    [app_pagination month="1"]
    
    [app_login]
    
    [app_confirmation]
    
    [app_paypal]

    Hope this helps muzoYd :slight_smile:

    Let me know if you have any further questions here.

    All the best,
    Tyler

  • muzoYd

    Thanks Tyler - I had considered this and was hoping there might be a more efficient way since we are juggling several locations, service and service options. This method may work -I have asked my client for some more information on exactly how many different options we would be looking at.

    One more question - is there a way to link specific dates to a location? For example my client would travel to Brisbane for 2 weeks and would only be available to book appointments in the Brisbane location for those dates. But she would still like people to be able to book appointments for next month when she is in Melbourne. This would also be irregular, not on a fixed schedule (so she is not at location A on Monday and Location B on Tuesday, it would have to be able to be specified on a case by case basis)

    Thanks again

  • Michelle Shull

    Hello, muzoYd!

    We can do this, but it's going to be a bit of a workaround since this isn't an out-of-the-box feature. (I will flag the dev with a feature request for it, however!)

    For juggling locations that aren't consistent, what I would do is create a separate service for each of the two locations, so you'd have Medium-Brisbane and Medium-Melbourne. Then use the exceptions tab to define when one or the other would not be available. It will take some work before your client changes locations each time, but I think you could still manage it fairly simply.

    Would this work?

  • muzoYd

    Hi
    Thanks for all the help so far.
    After experimenting with the plugin a bit I have almost figured out a system that will work for what we need.

    I have specified the different types of services as "Readings - 30 minutes","Readings - 60 minutes" etc and set the duration and prices.
    I have set the locations up as service providers (so my service providers are Melbourne, Sydney and Perth, all offering all of the services). I have then set Melbourne as the default location by putting in my clients normal working hours. I have set all the other working hours as none and used the inclusions and exclusions of dates to specify when each city is available to be booked. This is all working well so far.

    So just a couple more things I would like to clean up. I have tried to include as much detail as possible to hopefully make it easier to answer

    -Can I force the user to select a service provider first before the available services are displayed? Tyler mentioned above that this could be done for locations. I have tried the shortcode [app_required_service_providers] which didn't work. Alternatively is there a way that the user only has to click the "see available times" button once after making all their selections instead of having to click it after selecting a service provider and then again after selecting a service? I know I can remove the button by setting auto refresh but then the page refreshes after selecting a service provider and then again after selecting a service which is not very user friendly

    -On the confirmation form can I change the "Service Provider" label to "Location" through the shortcodes or do I need to change this is the code? I am trying to avoid editing the code so I don't lose my changes when the plugin updates.

    -My client's usual working location is Melbourne so I have set her work hours in here as normal. For the other locations (which are entered as service providers) I have set all their working days to "no". I did this so we can just add the dates she will be in those cities as exceptional working days and we don't have to set every other date as NON working days. This is working fine except that it is showing appointments as being available to book at 5.00pm and 5.30pm (on the 30 minute services) when my client only works until 5.00pm (meaning the last available appointments should be 4.00pm for 60 minute services and 4.30pm for 30 minute services). I have all the work hours to be 9.00-5.00 but it seems to be ignoring this. This is only an issue on the days I have included as exceptional working days.

    Thanks again :slight_smile:

  • Michelle Shull

    Hi, muzoYd!

    Let's hit these one by one. : )

    -Can I force the user to select a service provider first before the available services are displayed? Tyler mentioned above that this could be done for locations. I have tried the shortcode [app_required_service_providers] which didn't work. Alternatively is there a way that the user only has to click the "see available times" button once after making all their selections instead of having to click it after selecting a service provider and then again after selecting a service? I know I can remove the button by setting auto refresh but then the page refreshes after selecting a service provider and then again after selecting a service which is not very user friendly

    I just tried a few different ways, and I think this, at the moment, is the best we can do. I will add a feature request for an additional shortcode to accomplish this, I think it's a great idea.

    -On the confirmation form can I change the "Service Provider" label to "Location" through the shortcodes or do I need to change this is the code? I am trying to avoid editing the code so I don't lose my changes when the plugin updates.

    Have you met Ultimate Branding? https://premium.wpmudev.org/project/ultimate-branding/ It does all sorts of really cool things, but the best (or at least my favorite) part is a network wide text changer. I use it all the time to tweak the text on my production sites, and on my sandbox sites to entertain myself. It creates a translation file, so everything is safe from update overwrite.

    -My client's usual working location is Melbourne so I have set her work hours in here as normal. For the other locations (which are entered as service providers) I have set all their working days to "no". I did this so we can just add the dates she will be in those cities as exceptional working days and we don't have to set every other date as NON working days. This is working fine except that it is showing appointments as being available to book at 5.00pm and 5.30pm (on the 30 minute services) when my client only works until 5.00pm (meaning the last available appointments should be 4.00pm for 60 minute services and 4.30pm for 30 minute services). I have all the work hours to be 9.00-5.00 but it seems to be ignoring this. This is only an issue on the days I have included as exceptional working days.

    Since this your setup is a little more complicated than normal, we're going to need to add one more addon to get this all to work together - Durations. Durations will give you three new sets of radio buttons on your settings page that allow you to play with how the length of your appointment is figured. Many times, I can rattle off the proper settings, but in your case I think you may need to try various combinations of these settings until they work. I attached a screenshot so you'll know what to look for.

  • muzoYd

    Hi

    I managed to get most of the functionality working the way we want it through some creative jquery to monitor the $_get variables that would be reinjected into the page every time the user selected an option.

    Unfortunately I still have a couple more questions....:slight_smile:

    At the moment if a user selects a 60 minute long service it only gives them the option to book on the hour (9.00am,10.00am etc.) We would like users to also be able to book on the half hour (but still be a 60 minute duration). So the available appointment times should be every half hour (9.00, 9.30,10.00,10.30) for both 30 and 60 minute services.

    We would like to add a checkbox to the confirmation form that the user has to tick (to say they have read the terms and conditions of the booking). I saw that there is a Terms of Service plugin - could that be integrated in with Appointments+ to do this or is there another way to integrate this in?

    Because we have so many variables associated with the services on this site, we have been wondering if it would be more efficient to integrate MarketPress in with Appointments+ so we could set our appointments up as products and assign variables to them (duration, location etc). This will largely depend on whether the client agrees to this but would be interested to know if you thought this would be a better option for this situation?

    Cheers

  • pxwm

    Hi @muzoYd

    In respect to booking on the hour and half hour you could try the following:-

    Login to your Wordpress dashboard as Admin
    Then select 'Appointments' then 'Settings'
    Then select the 'Add-ons' tab
    Scroll down and Activate the 'Durations' add-on
    Then select the 'General' tab
    Then in the 'Time settings' section locate the 'Time slot calculus method' field and set to 'Minimum time based appointment duration calculus (legacy)'
    Then Save
    Then in the same section set the 'Time base (minutes)' field to 30mins using the dropdown.
    Then Save

    Then make an appointment and check if the time slots offer on the hour and half hour.

    I hope this helps
    Regards
    SteveB

  • Tyler Postle

    Hey Muzo,

    Hope you're doing well today :slight_smile: glad Steve was able to help get that question resolved, he's an Appointments+ wizard :p sending some points your way Steve.

    We would like to add a checkbox to the confirmation form that the user has to tick (to say they have read the terms and conditions of the booking). I saw that there is a Terms of Service plugin - could that be integrated in with Appointments+ to do this or is there another way to integrate this in?

    The TOS plugin comes with a shrotcode so you can place it anywhere on your site - you are able to include the checkbox with it too; however, the checkbox is only a required check during registration. The easiest method here would likely be to add some text saying "By booking this appointment you agree to our terms and conditions" and have the terms and conditions an anchor link to where the terms and conditions are on your page :slight_smile:

    Because we have so many variables associated with the services on this site, we have been wondering if it would be more efficient to integrate MarketPress in with Appointments+ so we could set our appointments up as products and assign variables to them (duration, location etc).

    Integration with MarketPress is solely for the cart capabilities and additional gateways. The product page will still be the same calendar style page as the normal Make an Appointment page. Best way to do variations is to manipulate the services/service providers/ and locations selections. Locations is an add-on then you can attach it to different services and/or providers then force that selection first, so adds another variable to the mix.

    Hope this helps! Let me know if you have any further questions MuzoYd :slight_smile:

    Have a great rest of your day.

    All the best,
    Tyler

  • pxwm

    Hi @Tyler Postle - Many thanks for the points, much appreciated

    Hi @muzoYd

    Based on the suggestion from Tyler about T&Cs, you may wish to consider the following:-

    Login to the Wordpress dashboard as Admin
    Select 'Appointment' and 'Settings'
    Then Select the 'Add-ons' tab
    Scroll down and activate the 'Additional fields' Add-on
    Then Select the 'General' tab
    Then scroll down to the 'Additional fields' section
    Then add a new field with text along the lines of "I've read and accept the Terms and Conditions"
    Then select 'Checkbox' and tick 'Required'
    Then Click 'Add' Then Save

    This will add a new mandatory field and checkbox that has to be checked before the form can be submitted and accepted.

    Unfortunately you can't add an html link within the text to enable the visit to click to view the T&Cs as the A+ plugin strips out any html.

    However you could add a link to your T&Cs within the appointment page.

    I hope this helps
    Regards
    SteveB

  • muzoYd

    To be honest we are still having multiple ongoing issues - I realise some of this situation is unusual and has required some workarounds but there are also many things that I really think should be standard features and my client is not happy with the lack of flexibility I am offering.

    We want to change the button text "Please click here to confirm this appointment" to "Book Now"

    When the required checkbox is not ticked the pop up message reads "Something wrong about the submitted " which doesn't give the user any indication of what they have missed.

    When I add extra fields to the form they appear at the bottom under the google calendar link when I need them to be up with the other fields.

    The price does not allow me to show a $ in front of the amount

    Are any of these possible without having to edit the plugin files directly?

  • pxwm

    Hi @Michelle Shull - I hope you don't mind me providing some answers

    Hi @muzoYd

    To confirm, you can change the submit button text from "Please click here to confirm this appointment" to "Book Now" by doing the following:-

    Login to your Wordpress dashboard as Admin
    Select 'Pages' on the left hand menu
    Locate the 'Appointments' page
    Then set the page tab to 'Text'
    Then change the shortcode
    From: [app_confirmation]
    To: [app_confirmation button_text="Book Now"]
    Then Update the page to Save the changes

    As for:-

    The price does not allow me to show a $ in front of the amount.

    Please try the following to change the price currency

    If you are not taking payment online then the 'Paypal Currency' field will not be visible so please try the following:-

    Log in as Admin
    Then Select Appointments then the General tab
    Then scroll down to the 'Payment Settings' section and temporarily set the 'Payment Required' field to 'Yes'
    This will then display a new field called 'Paypal Currency'
    Select the currency you wish to display then Save
    Then set the 'Payment Required' field back to 'No'
    Then Save

    As for:-

    When the required checkbox is not ticked the pop up message reads "Something wrong about the submitted " which doesn't give the user any indication of what they have missed.

    Unfortunately I don't think there is a shortcode to change this but maybe @Michelle Shull can confirm or discuss with the developer of the plugin.

    I'll have a look at the issue with the position of the Additional fields and let you know.

    I hope this helps
    Regards
    SteveB

  • pxwm

    Hi @muzoYd

    I've carried out some further testing in respect to the pop-up error message box when an Additional field is set to 'required' and I can confirm that it does include the name of the field.
    However I did notice that if you have more than one Additional field that is set to 'required' and it is not populated then the pop-up error message box will only indicate a single Additional field at a time.
    Once the error is resolved by entering text or ticking the checkbox and then you submit the form the same error message box is displayed with the name of the next Additional field.

    Still looking if there is a way to arrange the Additional fields on the form.

    Regards
    SteveB

  • Tyler Postle

    Hey @muzoYd,

    Hope you're doing well today! Looks like Steve has provided some more awesome help here :slight_smile: as usual.

    As for the "Something wrong about the submitted ... " it should include the label of the field too, but I'm assuming you didn't place a field name there because you just wanted to have the checkbox.

    Perhaps it would be a good idea to include the field label but then hide it with CSS, so it still provides some info about the actual field that's wrong.

    You can also find this text in the file:

    wp-content/plugins/appointments/appointments.php

    Approx line: 1756.

    __( 'Something wrong about the submitted %s', 'appointments'),

    You could edit that directly, but we advise not too because any future updates will remove that. With this in mind we have a few options, just like any plugin this can be translated and so you could create a locale for changes like this, to read more about this check:

    http://codex.wordpress.org/Translating_WordPress#About_Locales

    Or you could use the Ultimate Branding plugins Network Wide Text Change feature, you can find our plugin here:

    https://premium.wpmudev.org/project/ultimate-branding/

    Text to change will be "Something wrong about the submitted"

    When using this you’ll want to add the text domain, for this plugin as you see above it’s simply ‘appointments’. Using the text domain just ensures you don’t edit the same wording for another plugin if it has the same line.

    As for rearranging the fields, you could try some CSS like this: http://mikeybeck.com/misc/reorder-with-css

    @pxwm, thanks for mentioning that it doesn't provide multiple errors in 1 go. I'll report that to the developer :slight_smile:

    Let us know if you have any further questions here MuzoYd, I'll mark rearranging the fields as a feature request!

    Have a great rest of your day.

    Cheers,
    Tyler

Thank NAME, for their help.

Let NAME know exactly why they deserved these points.

Gift a custom amount of points.