Skip to main content

Providing Availability (3-way)

The unique system to plan availability through Google Calendar.

info
info

Requires the presence of one or more services

Introduction

Providing time slots (availability) using Google Calendar is quite simple and once you get used to it, it's hard to go back to previous scheduling systems.

Here's the thing. Normally when you create an event in Google Calendar, that means you're busy for the duration of that event. What if we bend that concept instead, and consider that you're available for something during that time?

This simple concept allows us to gain the flexibility and power of a great scheduling tool like Google Calendar to plan our availability, trim it, change it on the fly and so on.

We call this 3-way integration because a Google Calendar can be used in three different ways:

  1. As a source of personal, blocking (busy) times
  2. As a destination of reservation events, created by customers
  3. As a source of availability times 🚀

As you may know, you can have multiple Calendars in your Google Account, so imagine how flexible this system can be to accommodate your unique scheduling needs.

You will manage your whole booking system just through Google Calendar - and there is more: because it's Google Calendar, you can use it also though your preferred mobile calendar App.

It's time for some practical examples. Let's begin.

Connecting Services to Calendars

Imagine an example business consisting of 2 services, Dental Cares and Therapy Session.

Example Services

To provide time slots in Google Calendar for our two example services, we'll need to connect those services to a specific calendar, which will be the source calendar of their availability. In this case, we'll use a Team Booking Demo calendar that we created earlier.

To link the services to the calendar, we go to Availability > Google and find our Team Booking Demo calendar.

Example Google Calendar

Under the Services column, we select the two services that we want to connect to this calendar. Don't worry about the other columns for now.

Example Services Connection

Keep in mind that since we just created this calendar, it's currently empty. In fact, if we visit the booking widget in the frontend of our website, it shows no time slots.

Empty Calendar

To start producing time slots, we'll need to create at least one event in the calendar.

Let's do that.

Creating events in Google Calendar

We want to provide some availability for our 2 services. In this occasion, we want to be available on:

  • November 15th, from 9:00 AM to 1:00 PM
  • November 17th, from 9:00 AM to 1:00 PM and again from 2:00 PM to 5:00 PM

Therefore, we are going to create events that cover those date and times.

Note

When creating availability events ensure that they have the BUSY property in place. An event needs to be BUSY even if we are going to consider them as available time, because of how the Google API works. An event that is marked as FREE can't be seen by the plugin at all.

Where to check?

Google Project 1

Availability Events

Now that we have created the events in our Google Calendar, let's explore how they are presented on the frontend of our website.

In the image below, you can see the booking calendar with available time slots:

Calendar with slots

Both of our services are displayed. Our demo instance of the plugin shows the number of available slots for each service within the colored dot representing the service (this display behavior can be customized through the frontend customization).

You might notice that on the 15th of November, there is only one available slot per service. To understand why this is the case, let's continue and explore the booking process by selecting that day. We will examine the available time slots in more detail.

Example slot

Wait... why is there only one slot that spans from 9:00 AM to 13:00 AM, covering the entire availability period?

This is because the service is currently configured that way.

But what if this is not what we intended for the Dental Care service? Our goal is to offer 1-hour time slots that fill the availability period.

To achieve this, we can modify the service configuration and observe how it appears after the change.

Splitted slots

Recap

By creating events in Google Calendar and linking them to specific services in TheBooking, the plugin automatically generates time slots based on each service's configuration.

This simple workflow can be adapted to fit many different needs, but it also raises some questions:

  • When linking multiple services to the same calendar, how can we differentiate their available times?
  • If two services have concurring time slots, what happens when one of them receives a booking?
  • How do repeating events affect time slot availability?
  • What if we need to insert buffer time between adjacent timeslots?

Differentiating availability

We are happy with the configuration of our two example services so far, but we have not quite reached the desired workflow yet.

What we want to do now, is to remove the afternoon availability for the Therapy Session service on 17th November while keeping it for the Dental Care service.

This is how differentiate the availability between the two services in our example:

  • Unlink the Therapy Session service from the Team Booking Demo calendar.
  • Link it to another Google Calendar (you can create a new one).
  • Create events on the new calendar for the Therapy Session service, with the desired availability modifications.

Differentiating availability

Use repeating events

We can use Google Calendar's repeating events feature to plan the availability of our services in advance and with great flexibility. This means we don't have to manually create availability for every day, week, or month.

Repeating events

For example, let's say we want to offer the same availability for our services every Tuesday and Thursday from 9:00 AM to 1:00 PM. We can create a repeating event in Google Calendar for this time frame and set it to repeat every week on those days. The plugin will automatically convert these repeating events into time slots for our services, according to their specific configurations.

Note that when creating repeating events, we have to be mindful of any changes to our services' availability, as they will apply to every instance of the repeating event. We can always edit or delete specific instances of a repeating event if needed.

Buffer time

We're almost there, but there's one more requirement to fulfill for our Dental Care service. We need to allocate some time for cleaning the facility between reservations, which we estimated to be 10 minutes. To avoid any awkward situations where customers are asked to leave before their booking is over, we need to introduce a buffer time in our scheduling.

Since we can't extend our available time, we have two options:

  • keep the 1-hour time slots and sacrifice one slot to allow for the buffer time

  • adjust the slot duration to 50 minutes and keep the same number of slots

    We decided to go with the latter option and set up our service to have a 10-minute buffer time between each 50-minute time slot.

Reservation time frame

Before we finalize our workflow, there's one more thing to address.

The Therapy Session service is highly in demand and if we program availability for, say, the next 3 months, we could end up with all slots sold out within a day or two.

That's not ideal for our customers or our business. So, we need to ensure that bookings only open when we're one week away from a given time slot.

To achieve this, we can configure the plugin to keep bookings closed until one week before the start of a time slot.

This way, we can better manage demand and ensure that our customers have a fair chance to book a slot.