GCalendar Integration

OS Services Booking supports Google Calendar Integration, allowing bookings created in OS Services Booking to be automatically added to a resource’s Google Calendar.

This feature is useful for businesses where employees, staff members, or service providers want to keep their OS Services Booking appointments synchronized with their Google Calendar schedule.


Overview

Google Calendar Integration allows OS Services Booking to communicate with Google Calendar for each resource.

When this integration is configured correctly:

  • When a customer books an appointment with a resource, OS Services Booking automatically creates a corresponding event in that resource’s Google Calendar.
  • When a booking is canceled or deleted by the administrator or the customer, the related event will also be removed from the resource’s Google Calendar.

This helps resources keep track of their appointments in real time and makes it easier to manage daily schedules from Google Calendar.


Important Limitation

Google Calendar Integration mainly works in this direction:

OS Services Booking → Google Calendar

This means OS Services Booking can add booking events to Google Calendar and remove them when bookings are canceled or deleted.

However, Google Calendar Integration does not automatically check a resource’s existing Google Calendar availability before creating a new booking.

For example, if a resource already has an event in Google Calendar at a specific time, OS Services Booking may still allow a customer to book that same time slot unless the unavailable time is also configured inside OS Services Booking.

To prevent double bookings, please use one of the following methods:

  • Configure the resource’s working hours, days off, and unavailable times directly in OS Services Booking.
  • Use the Google Calendar Sync plugin to import Google Calendar events as busy time slots.
  • Manually keep the resource availability updated in OS Services Booking.

Google Calendar Integration vs Google Calendar Sync
Google Calendar Integration and Google Calendar Sync are related, but they are not the same feature.
Google Calendar Integration OS Services Booking → Google Calendar Adds OS Services Booking appointments to Google Calendar
Google Calendar Sync Google Calendar → OS Services Booking Imports Google Calendar events as busy time slots

If you only need OS Services Booking appointments to appear in Google Calendar, use Google Calendar Integration.
If you also want OS Services Booking to read existing Google Calendar events and mark those times as unavailable, use the Google Calendar Sync plugin. Requirements

Before setting up Google Calendar Integration, please make sure you have:

  • A Google account or Google Workspace account.
  • Access to Google Cloud Console.
  • Permission to create or manage a Google Cloud Project.
  • Permission to manage the target Google Calendar.
  • OS Services Booking installed on your website.
  • Access to your website files in order to upload the JSON key file.

Video Tutorial

We have prepared a video tutorial that walks you through the full setup process.

The video explains how to:

  • Create a Google Cloud Project.
  • Enable Google Calendar API.
  • Create a Service Account.
  • Generate a JSON key file.
  • Share Google Calendar with the Service Account.
  • Configure Google Calendar settings in OS Services Booking.
  • Test the integration.

Step 1: Create a Google Cloud Project

Log in to your Google account and open Google Cloud Console: https://console.cloud.google.com/

  • Click Select a project from the top navigation bar.
  • Then click New Project.
  • Enter a project name. You can use any name you prefer, for example: OS Services Booking
  • Then click Create.

After the project is created, make sure it is selected in Google Cloud Console.

Step 2: Enable Google Calendar API

  • In Google Cloud Console, open APIs & Services.
  • Then go to Library.
  • Search for: Google Calendar API
  • Select Google Calendar API from the search results.
  • Click Enable.

After enabling the API, your Google Cloud Project will be allowed to communicate with Google Calendar.

Step 3: Configure OAuth Consent Screen

Before creating an OAuth Client ID, you may need to configure the OAuth consent screen.
Go to: APIs & Services → OAuth consent screen If you are using a Google Workspace account, you may be able to choose Internal. If you are using a normal Google account, choose External. Fill in the required app information, such as:

  • App name
  • User support email
  • Developer contact email

You can use a name such as: OS Services Booking

Complete the required steps and save the OAuth consent configuration.

Step 4: Create OAuth Client ID

  • Go to: APIs & Services → Credentials
  • Click: Create Credentials → OAuth Client ID
  • For the application type, select: Web application
  • Enter a name for the OAuth Client ID, for example: OS Services Booking Web Client
  • Then click Create.
  • After the OAuth Client ID is created, copy the Client ID value.

You will need this Client ID when configuring the resource in OS Services Booking.

Step 5: Create a Service Account

  • In Google Cloud Console, go to: APIs & Services → Credentials
  • Click: Create Credentials → Service Account
  • Enter a Service Account name, for example: os-services-booking
  • Google will automatically generate a Service Account ID.
  • Click Create and Continue.

You can skip optional permission steps if they are not required, then finish creating the Service Account. After the Service Account is created, you will see it in the credentials list. Copy the Service Account email address. It usually looks similar to this: os-services-booking@your-project-id.iam.gserviceaccount.com

You will need this email address later when sharing your Google Calendar and configuring the resource in OS Services Booking.

Step 6: Generate a JSON Key File

  • In the Service Accounts list, click the Service Account you just created.
  • Go to the Keys tab.
  • Click: Add Key → Create new key
  • Select: JSON
  • Then click Create.

The JSON key file will be automatically downloaded to your computer.

Keep this file secure because it contains sensitive credentials for your Google Service Account.

Step 7: Upload the JSON Key File to OS Services Booking

After downloading the JSON key file, upload it to the following folder on your website: components/com_osservicesbooking For example: components/com_osservicesbooking/your-json-key-file.json You can upload the file using FTP, your hosting file manager, or another secure file upload method. After uploading the file, remember the exact file name. You will need to enter this file name in the resource settings.

Important:

  • Do not rename the file unless you also update the file name in OS Services Booking.
  • Do not upload the JSON key file to a public or downloadable folder.
  • Do not share the JSON key file publicly.

Step 8: Share Google Calendar with the Service Account

Open Google Calendar. In the left sidebar, find the calendar you want to connect with the resource. Click the three-dot menu next to the calendar and select: Settings and sharing Scroll to the section: Share with specific people or groups Click: Add people and groups Enter the Service Account email address you copied earlier. For example: os-services-booking@your-project-id.iam.gserviceaccount.com Set the permission to: Make changes to events Then click Send or Share.

This allows OS Services Booking to create and remove events in that Google Calendar.

Step 9: Get the Google Calendar ID

To get the Calendar ID, open Google Calendar and go to the calendar settings page. In Google Calendar: Calendar Settings → Integrate calendar Find the field: Calendar ID Copy the Calendar ID. For a primary calendar, the Calendar ID may look like an email address: example@gmail.com For a secondary calendar, it may look like this: abcd1234efgh5678@group.calendar.google.com

You will need this Calendar ID when configuring the resource in OS Services Booking.

Step 10: Enable Google Calendar Integration in OS Services Booking

In your Joomla administrator area, go to OS Services Booking configuration.

  • Open: OS Services Booking → Configuration → Booking Configuration
  • Find the Google Calendar Integration option and set it to: Yes
  • Save the configuration.

After this option is enabled, you can configure Google Calendar credentials for each resource.

Step 11: Configure Google Calendar Settings for Each Resource

Go to the resource management page in OS Services Booking. Open the resource you want to connect with Google Calendar. Enter the required Google Calendar information. The required fields usually include:

  • Client ID
  • App Name
  • Service Account email address
  • JSON key file name
  • Google Calendar ID

The Client ID is obtained from the OAuth Client ID created in Google Cloud Console. The Service Account email address is obtained from the Service Account created in Google Cloud Console. The JSON key file name is the name of the JSON file uploaded to: components/com_osservicesbooking The Google Calendar ID is obtained from the Google Calendar settings page. After entering all information, save the resource.

Now new bookings for this resource should be added to the connected Google Calendar.

Step 12: Test the Integration

After completing the setup, create a test booking for the configured resource. Then check the connected Google Calendar. If the setup is correct, a new event should appear in Google Calendar for the test booking. Next, cancel or delete the booking in OS Services Booking. The related event should also be removed from Google Calendar. If both actions work correctly, Google Calendar Integration has been successfully configured. Google Workspace Sharing Permission Issue If the option: Make changes to events is blocked or not available when sharing the calendar with the Service Account, your Google Workspace administrator may need to update calendar sharing settings.

To fix this, the Google Workspace administrator can follow these steps:

  • Open Google Admin Console:
  • https://admin.google.com/ac/appslist/core
  • Select: Calendar
  • Open: Sharing settings → External sharing options for primary calendars
  • Select: Share all information, and allow managing of calendars
  • Save the setting.
  • Go back to Google Calendar and share the calendar with the Service Account again.
  • Set the Service Account permission to: Make changes to events
  • After this permission is available, OS Services Booking should be able to create and remove Google Calendar events.

Troubleshooting

1. Google Calendar event is not created after booking Please check the following:

  • Google Calendar Integration is enabled in OS Services Booking configuration.
  • The Google Calendar API is enabled in Google Cloud Console.
  • The resource has valid Google Calendar credentials configured.
  • The JSON key file has been uploaded to the correct folder.
  • The JSON key file name is entered correctly in the resource settings.
  • The Service Account email has been added to the correct Google Calendar.
  • The Service Account permission is set to Make changes to events.
  • The Calendar ID is correct.

2. Booking is created, but Google Calendar is not updated

Please verify:

  • The selected resource is the same resource configured with Google Calendar credentials.
  • The JSON key file belongs to the same Service Account shared with the calendar.
  • The calendar was shared with the Service Account email, not with the OAuth Client ID.
  • Your server can connect to Google APIs.
  • There are no file permission issues preventing OS Services Booking from reading the JSON key file.

3. The “Make changes to events” permission is not available

  • If you are using Google Workspace, your organization may restrict external calendar sharing.
  • Please ask your Google Workspace administrator to allow external calendar sharing with event management permission.
  • The administrator can update this in: Google Admin Console → Apps → Google Workspace → Calendar → Sharing settings

4. Calendar ID is incorrect

Make sure you copy the Calendar ID from: Google Calendar → Calendar Settings → Integrate calendar → Calendar ID Do not use the calendar name unless it is the same as the Calendar ID. For a primary calendar, the Calendar ID may be an email address. For a secondary calendar, it may be a longer ID ending with: @group.calendar.google.com

5. JSON key file error

Please check:

  • The JSON key file was generated from the correct Service Account.
  • The JSON key file was uploaded to: components/com_osservicesbooking
  • The file name entered in the resource settings exactly matches the uploaded file name.
  • The file extension is still: .json
  • The file has not been modified or corrupted.

6. Double booking still happens

Google Calendar Integration does not check existing Google Calendar events before accepting new bookings.

To prevent double bookings, you should:

  • Configure unavailable times directly in OS Services Booking.
  • Use the Google Calendar Sync plugin to import Google Calendar events as busy time slots.
  • Make sure each resource’s working hours and days off are correctly configured.

Security Notes The JSON key file contains sensitive credentials for your Google Service Account.

Please follow these security recommendations:

  • Do not share the JSON key file publicly.
  • Do not upload the JSON key file to a public folder.
  • Do not include the JSON key file in screenshots.
  • Do not send the JSON key file through public support forums.
  • Only grant the Service Account access to the calendars required by OS Services Booking.
  • If the JSON key file is exposed, delete the key from Google Cloud Console and generate a new one.

To delete an exposed key:

  • Open Google Cloud Console.
  • Go to: APIs & Services → Credentials
  • Open the related Service Account.
  • Go to the Keys tab.
  • Delete the exposed key.
  • Generate a new JSON key file.
  • Upload the new key file to your website.
  • Update the resource settings in OS Services Booking.

Final Checklist Before testing or contacting support, please make sure all items below are completed:

  • Google Cloud Project has been created.
  • Google Calendar API has been enabled.
  • OAuth Client ID has been created.
  • Client ID has been copied correctly.
  • Service Account has been created.
  • Service Account email address has been copied correctly.
  • JSON key file has been generated.
  • JSON key file has been uploaded to: components/com_osservicesbooking
  • Google Calendar has been shared with the Service Account email.
  • Service Account permission is set to: Make changes to events
  • Google Calendar ID has been copied correctly.
  • Google Calendar Integration is enabled in OS Services Booking configuration.
  • Resource Google Calendar settings have been configured.
  • A test booking has been created.
  • The test booking appears in Google Calendar.
  • When the test booking is canceled or deleted, the event is removed from Google Calendar.

Conclusion You have now successfully configured Google Calendar Integration for OS Services Booking.

From now on, when a customer makes a booking request for a configured resource, OS Services Booking will automatically add the appointment to that resource’s Google Calendar.

If the booking is canceled or deleted, the related Google Calendar event will also be removed. For advanced availability management, you can also use the Google Calendar Sync plugin to import existing Google Calendar events into OS Services Booking as busy time slots.