Skip to main content

Documentation

Full Features
Setting Up Google Calendar Sync
# 55
Last editetd on 16 July 2026

Full This guide walks you step by step through setting up Google Calendar synchronisation - from creating the Google project to your first synced appointment. No prior knowledge required.

This feature is available from the Full plan.

Google Calendar synchronisation works via an OAuth 2.0 client. First, as an administrator you enter the credentials once; then each staff member connects their own Google account. JoomBook is GDPR-compliant and self-hosted - your appointment data stays on your server (see section 11).

⚠ Important first: For Google appointments to be recognised as busy at the correct time, Joomla's server time zone must be set to your local time zone (e.g. Europe/Berlin) - not UTC. Details in section 9, best checked first.

Contents:

  1. Create a Google Cloud project
  2. Enable the Google Calendar API
  3. Configure the consent screen
  4. Create an OAuth client
  5. Copy the Client ID and Client secret
  6. Publish the app to "In production"
  7. Enter the credentials in JoomBook
  8. Connect a staff member with Google
  9. Set the time zone correctly
  10. Test: sync an appointment
  11. GDPR note: what is transferred?

1. Create a Google Cloud project

Open the Google Cloud Console and sign in with your Google account. You do not need a paid credit - calendar use is free.

Google Cloud home page

The Google Cloud Console home page after signing in.

1.1 Click "Select a project" at the top, and in the window that opens click "New Project".

Select a project

Via "Select a project" you reach "New Project" in the top right.

1.2 Enter a project name (e.g. JoomBook) and click Create. An organisation is not required.

Name the new project

Enter the project name and click "Create".

2. Enable the Google Calendar API

2.1 Open the menu at the top left and go to APIs & Services → Library.

Menu APIs and Services, Library

Navigation: "APIs & Services" → "Library".

2.2 Search for the Google Calendar API and open it.

Google Calendar API in the Library

The "Google Calendar API" under Google Workspace.

2.3 Click Enable.

Enable the Calendar API

"Enable" activates the calendar interface for your project.

2.4 After enabling, switch to the OAuth consent screen (called "Google Auth Platform" in the new interface).

API enabled, go to consent screen

The Calendar API is enabled. Continue to the "OAuth consent screen".

3. Configure the consent screen

3.1 If the Google Auth Platform is not set up yet, click Get started.

Google Auth Platform, Get started

"Google Auth Platform not configured yet" → "Get started".

3.2 App information: Enter an app name (e.g. JoomBook) and select your email as the user support email. Continue.

App information

Enter the app name and support email.

3.3 Audience: Select External. Continue.

Audience External

Select user type "External".

3.4 Contact information: Enter an email for Google notifications. Continue.

Contact information

Contact email for project notifications.

3.5 Step 4: Accept the user data policy and click Continue.

Accept the policy

Confirm the policy and continue.

3.6 All steps are done here - now click Create.

Create configuration

Completing the basic configuration with "Create".

4. Create an OAuth client

4.1 In the OAuth overview, under "Metrics", click Create OAuth client.

Create OAuth client

Start "Create OAuth client".

4.2 Select Web application as the application type.

Application type Web application

Select application type "Web application".

4.3 Give it a name (e.g. JoomBook Web). Then scroll further down to the "Authorized redirect URIs" field.

Enter client name

Name of the OAuth client. Do not fill in "JavaScript origins".

Get the redirect URI from JoomBook: In a second browser tab open Components → JoomBook → Settings → Integrations. Under "Authorized Redirect URI" there is a ready-made URL - copy it with the copy icon.
Copy redirect URI in JoomBook

JoomBook → Settings → Integrations: copy the "Authorized Redirect URI".

4.4 Paste this URL into Google under Authorized redirect URIs (not "JavaScript origins"!) and click Create.

Paste redirect URI

Paste the copied URL into the "Authorized redirect URIs" field.

4.5 Google confirms the creation and shows your Client ID. Click OK.

OAuth client created

The OAuth client has been created.

5. Copy the Client ID and Client secret

5.1 Under Clients, open your new client (e.g. "JoomBook Web").

Clients list

List of OAuth clients - click the entry.

5.2 On the right you'll find the Client ID and the Client secret. Copy both - you'll enter them in JoomBook in step 7.

Client ID and Client secret

Client ID and Client secret of the web client.

Handle the Client secret securely: The Client secret is like a password. Never share it or post it anywhere. Google shows it in full only once after creation - so copy it right away.

6. Publish the app to "In production"

Why this matters: In "Testing" status the access tokens expire after 7 days - so the connection would break weekly. In "In production" status it stays permanent. For a single business this is perfectly sufficient without further Google verification (the 100-user limit is usually irrelevant for you).

6.1 Go to Audience and click Publish app. It is fine that it says "Testing" there.

Publish app

Under "Audience" → "Publish app".

6.2 Confirm the "Push to production?" prompt with Confirm.

Confirm push to production

Confirm the switch to production.

6.3 The status is now In production.

Status In production

Publishing status "In production".

7. Enter the credentials in JoomBook

7.1 In the Joomla backend go to Components → JoomBook → Settings → Integrations, enter the Client ID and Client secret copied in step 5.2, and click Save.

Enter credentials in JoomBook

Enter the Client ID and Client secret in JoomBook and save.

7.2 JoomBook confirms the save. The secret is now stored securely; the field stays empty the next time you open it (this is normal - leaving it empty keeps the stored value).

Settings saved

"Settings successfully saved."

8. Connect a staff member with Google

Now you connect the Google Calendar account of the respective staff member. Do this per person - so every appointment lands in the right calendar.

8.1 Open Components → JoomBook → Staff, edit a person and switch to the Integrations tab.

Staff Integrations tab

In the staff editor, open the "Integrations" tab.

8.2 Click Connect with Google.

Connect with Google

"Connect with Google" starts the Google sign-in.

8.3 Select the Google account whose calendar should be synced.

Select Google account

Select the account to connect with this staff member.

8.4 Click Advanced.

"Google hasn't verified this app" - this is normal. Because it's your own app that Google hasn't verified, Google shows a warning. This is harmless: the app only accesses your own calendar. The next three steps take you safely through.
App not verified, Advanced

Warning notice - click "Advanced" at the bottom left.

8.5 Click "Go to … (unsafe)". The "unsafe" note only refers to the app not being verified by Google - your data stays with you.

Go to (unsafe)

Continue via the "Go to … (unsafe)" link.

8.6 Allow access to Google Calendar with Continue or Allow.

Allow access

Confirm calendar access.

8.7 Back in JoomBook the connection now shows Connected. Under Calendar for sync select the desired calendar. Optionally you can transfer existing appointments once ("Sync existing appointments"). You can disconnect at any time via Disconnect.

Connected, select calendar

"Connected" - select the calendar and optionally transfer existing appointments.

Do I have to run the initial transfer again later? No. The "Sync existing appointments" area is a one-time initial transfer for appointments that already existed before connecting. After running it, JoomBook hides it the next time you open the page. All appointments booked or changed afterwards are synced automatically. If you do need the initial transfer again, disconnect and reconnect - then the section reappears.

9. Set the time zone correctly

⚠ Required for correct Google blocks: Google Calendar entries are stored internally in world time (UTC) and converted back to your local time by JoomBook - based on Joomla's server time zone. If this is set to UTC while your actual time is, say, Central European Summer Time, Google blocks end up shifted by several hours.

How to set it correctly:

  1. Joomla backend → System → Global Configuration.
  2. Server tab → Server Time Zone field.
  3. Set it to your local time zone, e.g. Europe/Berlin - not UTC.
  4. Save. Google blocks are then shown at the correct time.

By the way, the backend calendar shows appointments correctly even with a wrong server time zone (it uses the browser time) - the error only affects the blocks imported from Google. That's why it's easy to miss. So be sure to check this setting.

10. Test: sync an appointment

Create a test appointment in JoomBook (or book one via the wizard). After the next sync run it appears in the connected Google Calendar - including the service name and duration.

Appointment in Google Calendar

The appointment synced from JoomBook in Google Calendar.

Both directions: Synchronisation works in both directions. JoomBook appointments appear in Google Calendar, and entries in Google Calendar block the corresponding times in the JoomBook booking calendar (as a "Google block"), so there are no double bookings. The reconciliation runs via the JoomBook cron job.

11. GDPR note: what is transferred?

Only the service name, appointment duration and staff member name are transferred - no personal customer data (no customer names, email addresses or phone numbers) and no location name. This anonymised transfer is fixed.


Joomla! Logo
JoomBook is not affiliated with or endorsed by The Joomla! Project™ or Open Source Matters, Inc. The Joomla!® name and logo are registered trademarks of Open Source Matters, Inc. in the United States and other countries.

Copyright © · JoomBook