Back to Overview

Sync Tymeslot with Google Calendar

Sync Tymeslot with Google Calendar, so busy times block your booking page and confirmed bookings appear in your calendar.

Luka Breitig, Software Engineer & AI Developer
Luka Breitig

Updated 21 July 2026

📋 Before you begin

If you self-host Tymeslot, complete these steps first; the connection fails without them. On tymeslot.app they are already done, so go straight to step 1.

  • A Google OAuth app is configured with GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET set in your environment (see the Google OAuth App Setup guide if you haven't done this yet)
  • The Google Calendar API is enabled in your Google Cloud project: find it under APIs & Services → Library and search for "Google Calendar API"
  • Tymeslot is reachable over HTTPS, because Google's OAuth callback requires a secure URL

Outcome

By the end of this guide, Tymeslot will check your Google Calendar for conflicts before offering a time, and create a calendar event for every confirmed booking.

How Google Calendar sync works

Tymeslot requests the https://www.googleapis.com/auth/calendar scope, which covers both reading your calendars and writing booking events. Here is what Tymeslot does with that access.

Checking availability

When someone opens your booking page, Tymeslot reads the events in your selected calendars to work out which times are taken. Events shown as Busy, including out-of-office events, block time; events shown as Free, and invitations you have declined, do not.

Creating booking events

When a booking is confirmed, Tymeslot creates an event in the meeting type's booking calendar. The event includes the invitee's name, the meeting link and the meeting type's title.

Real-time sync (optional)

By default, Tymeslot polls Google for calendar changes every 15 minutes. Your booking page reads your calendars live, so bookings stay accurate; only your dashboard calendar can lag behind. To have Google push changes the moment they happen, set the WEBHOOK_BASE_URL environment variable (see the Environment Variables reference). Existing connections switch to push when you reconnect them.

1 Connect Google Calendar

  1. 1 Navigate to [Dashboard] → [Integrations] → [Calendars].
  2. 2 Click [Connect a calendar] and pick the [Google Calendar] card. You are immediately redirected to Google's permission screen.
  3. 3 Select your Google account. Google lists the access Tymeslot asks for: make sure the box for "See, edit, share, and permanently delete all the calendars you can access using Google Calendar" is ticked, then click [Continue]. Without that box, Tymeslot cannot write bookings and the connection is refused.
  4. 4 Google sends you back to the Integrations page. Your primary calendar is already selected for conflict checks and set as the calendar bookings go to.
The Connect a calendar dialog listing Google Calendar and Outlook Calendar, CalDAV servers, Microsoft Exchange and calendar subscriptions
Google Calendar is the first card in the provider picker.

'This app isn't verified' warning

If your Google Cloud app is still in Testing mode, Google shows this warning before the permission screen. Click Advanced → Go to [your app name] (unsafe) to continue. To remove this warning for all users, publish the OAuth consent screen in your Google Cloud project.

2 Select your calendars

Tymeslot finds every calendar on your Google account. Two separate settings decide how they are used:

Calendars checked for conflicts

Click [Manage calendars] on the Google connection and tick every calendar that should block your availability. When an event in a ticked calendar is shown as Busy, that time disappears from your booking page. Only your primary calendar is ticked at first, so tick your work calendar too if it is a separate one.

Where bookings are written

Each meeting type writes its bookings to one calendar, its Booking Destination. Open the meeting type, choose the Google account under 1. Select Calendar Account, then the calendar under 2. Select Specific Calendar. Until you choose, bookings go to your primary calendar.

If a calendar doesn't appear after connecting: click [Refresh All] on the Integrations page to fetch the calendar list again. If it still doesn't appear on a self-hosted instance, the Google Calendar API may not be enabled in your Google Cloud project; check under APIs & Services → Library.

🔍 How conflict detection works

Not every Google Calendar event blocks your availability. It depends mainly on the event's Show as setting in Google Calendar.

Event Blocks availability?
Busy Yes, the slot is unavailable
Free No, the slot stays open
Invitation answered Maybe Yes, the slot is unavailable
Out of office Yes, the slot is unavailable

New events default to Busy

A new Google Calendar event is shown as Busy by default. To stop a particular event blocking your Tymeslot availability, set its Show as value to Free. Invitations you have declined never block time.

Bookings still going through when you're busy? Check that the right calendar is ticked under [Manage calendars] on the Google connection. Conflicts are only detected when the calendar is ticked there and its events are shown as Busy.

🔄 Token expiry and reconnection

Google access tokens expire regularly, and Tymeslot renews them in the background. Google can also revoke access, for example if you change your Google account password, remove Tymeslot from your connected apps, or the Google Cloud app's status changes.

If calendar sync stops working, navigate to [Dashboard] → [Integrations] → [Calendars] and click [Reconnect] on the Google connection. This signs you in to Google again and replaces the revoked access. If a connection shows an [Upgrade] button instead, it was made with read-only access: click it and grant calendar access so Tymeslot can write bookings.

❓ Frequently Asked Questions

I'm getting 403 errors after connecting. Why?

A 403 usually means the Google Calendar API is not enabled for your Google Cloud project. Go to APIs & Services → Library in Google Cloud Console, search for "Google Calendar API", and click Enable. If the API is already enabled, check that the OAuth credentials belong to the same project as the enabled API.

Bookings appear in Google Calendar but my availability isn't being checked. What's wrong?

Open [Dashboard] → [Integrations] → [Calendars] and click [Manage calendars] on the Google connection. Tymeslot only checks the calendars ticked there; connecting the account is not enough on its own. Also make sure the events in that calendar are shown as Busy (not Free).

Can I sync with a Google Workspace (G Suite) calendar?

Yes. Connect your Google Workspace account the same way you would a personal Google account. If your Workspace administrator has restricted third-party app access, they may need to allow Tymeslot in the Google Admin console under Security → Access and data control → API controls → Manage Third-Party App Access.

Do I need separate OAuth credentials for Google Calendar and Google Meet?

No. Both Google Calendar sync and Google Meet link generation use the same GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET, so one Google OAuth app is enough. Each user connects them separately, though: Google Meet is added under [Integrations] → [Video], and that sign-in asks Google for the extra Meet permission.

Events appear duplicated in my Google Calendar. How do I fix this?

Duplicates usually mean the same Google account is connected twice. Go to [Dashboard] → [Integrations] → [Calendars], delete every Google Calendar connection, then connect the account once. If the duplicates continue, check whether another scheduling tool is writing to the same calendar.

Google is showing an 'app isn't verified' warning. Is it safe to proceed?

Yes. The warning appears when your Google Cloud OAuth consent screen is in Testing mode and has not been through Google's verification process. It is expected for self-hosted instances. Click Advanced → Go to [your app name] (unsafe) to proceed. To remove the warning for good, publish the OAuth consent screen in your Google Cloud project, which means submitting the app for Google's review.

✅ Verify the integration is working

Run through this checklist to confirm everything is set up correctly:

  1. 1 Open Google Calendar and create a test event for a time slot that would otherwise be bookable. Set Show as to Busy (the default).
  2. 2 Open your Tymeslot booking page in a separate browser window (or incognito). Navigate to the date of the test event.
  3. 3 Confirm the time slot appears as unavailable. If it is still offered, check that the calendar holding the event is ticked under [Manage calendars].
  4. 4 Book a different, open slot as a test. Confirm a new event appears in your Google Calendar with the invitee's name and the meeting link.
  5. 5 Delete your test events when done.

See it in action

Calendar sync is especially useful for professionals managing multiple clients. See how Consultants use Google Calendar with Tymeslot.

🔗 Related Articles

Read Outlook Calendar Integration

Outlook Calendar Integration

Sync Tymeslot with Outlook Calendar via Microsoft Graph. Your Outlook events block conflicting bookings and every booking is added to your calendar. Works with Outlook.com and Microsoft 365.

Read CalDAV Integration

CalDAV Integration

Sync Tymeslot with CalDAV calendars: Nextcloud, Radicale, Baikal, Zimbra, mailbox.org, iCloud and Fastmail. Conflict checks and new bookings work without a Google or Microsoft account.

Read Microsoft Exchange Integration

Microsoft Exchange Integration

Connect Tymeslot to an on-premises Microsoft Exchange Server over EWS. Covers the endpoint URL, domain logins versus mailbox addresses, self-signed certificates, and the read-only limits.