Google Calendar sync: import, status and reconnect

Conversa Labs

Conversa Labs

Last updated on Aug 26, 2026

Overview

After you connect Google Calendar, the Calendar keeps everything in sync both ways. This article covers the monitoring side of that sync: how to import events that already existed in Google, what each sync status means, how to force an update with Sync now, and what to do when the Google access expires and you need to reconnect.

The sync is near real-time, with a periodic check that reconciles differences. You don't need to sync manually day to day β€” the options below are for inspection and one-off cases.

Prerequisites

  • The Calendar module enabled and a Google connection already created (see the connection/OAuth article).
  • A profile allowed to manage integrations.
  • At least one Google calendar selected to mirror.

Step by step

Import existing events:

  1. Open the Calendar and go to the Google connection.
  2. Select the calendars you want to mirror.
  3. Wait for the first sync: events that already existed in Google start showing in the Calendar.

Check the status and force an update:

  1. On the Google connection, check the sync status (see the table below).
  2. To update right away, use Sync now.

Reconnect when access expires:

  1. If the status shows access expired/revoked, click Reconnect.
  2. Redo the Google authorization and grant the calendar permissions.
  3. The sync resumes and the periodic check reconciles anything pending.

Settings & options

  • Import existing events: the first sync brings into the Calendar the events already in Google.
  • Sync status:
Status What it means
Connected / Synced Up to date; updates flow both ways.
Syncing A sync is in progress (first load or an update).
Access expired / revoked Google revoked access β€” you need to reconnect.
Error A temporary failure; the periodic check retries.
  • Sync now: forces an immediate update, without waiting for the periodic check. It also unsticks a connection wedged on "Syncing".
  • Reconnect: redoes the Google authorization when access expires or is revoked.
  • Last error / recent errors: the panel shows the latest failure Google returned even while the status is still "Syncing", so you never wait on a process that already failed.

What happens when you change something directly in Google

A change made in Google counts exactly like one made in the platform. When you drag, edit or cancel an appointment in Google Calendar:

  • The customer is told. A reschedule or a cancellation sends the same notice (WhatsApp/email and the .ics file) as one made from the dashboard β€” honouring the same notification switches you already configured. If you turned reschedule notices off, they stay off.
  • Your automations run. Rules and flows triggered by an appointment being created, rescheduled or cancelled now fire for changes coming from Google too.
  • The screen updates on its own. The agenda grid reflects the change without a page reload.
  • Reminders for the new time work again. Dragging an appointment to another date in Google reschedules its reminders to the new time.
  • The reservation follows. Cancelling in Google also closes the matching booking, so the customer's public page stops offering "reschedule" for an appointment that no longer exists.

The first import is silent. When you mirror a calendar that already held hundreds of appointments, that initial load does not fire notices, automations or notifications β€” it only brings across what was already there. Only changes from then on are announced.

Importing an appointment is never a booking confirmation. The platform never sends "your appointment is confirmed" to someone just because the appointment showed up in Google.

Google integration per event type

Each event type decides independently how it talks to Google. The setting lives in the event-type editor, under Google integration:

  • Block times already busy on these calendars: tick as many calendars as you like. No time already taken on any of them is offered on the public page. This is how you avoid being booked over a personal appointment that lives on a different calendar.
  • Create events on: pick one Google calendar to receive confirmed bookings. That is where the invite and the Meet link are created.

If you configure nothing, behaviour is exactly what it was before: the type uses its own calendar and only talks to Google when that calendar is mirrored.

Use cases

  • Bring the calendar that already existed in Google into the Calendar, without retyping events.
  • Quickly check the connection is up to date before a busy day.
  • Force Sync now after changing several events in Google.
  • Restore the sync with Reconnect after the Google password/permission changed.

Tips, limits & best practices

  • Day to day you don't need to sync manually β€” the sync is automatic and near real-time.
  • Use Sync now only for inspection or after big changes in Google.
  • If the status stays on access expired, reconnect as soon as possible so you don't miss updates.
  • Select only the calendars you actually want to mirror β€” less noise in the Calendar.
  • Events created by the platform are internally marked to avoid loops back and forth.
  • Editing an appointment in the platform no longer changes what you configured only in Google: events marked "Free", the visibility (private/confidential) and the guest permissions are preserved.

Troubleshooting

  • I connected, but the old events didn't come in: confirm you selected at least one calendar to mirror and wait for the first sync; use Sync now to force it.
  • I stopped getting updates: access may have expired/been revoked in Google β€” use Reconnect.
  • An event disappeared or duplicated: the periodic check reconciles differences; if it persists, use Sync now and, as a last resort, reconnect the account.
  • The status stays on "Syncing" for a long time: the first load of a large calendar takes a few minutes, but no longer than that. If it stays on "Syncing", don't just wait β€” open the connection panel and read the last error and the recent error count, which are now shown even while the status is still "Syncing". Use Sync now: it unsticks a wedged state and restarts the load. If the error persists, reconnect the account.
  • The status stays on "Error": the panel shows the message Google returned. An access error (expired/revoked) can only be cleared by Reconnect.
  • It stops syncing on its own after a few days: if the Google OAuth app is still in Testing mode (unverified), Google revokes access every 7 days β€” the connection will break weekly until the app is verified in Google Cloud. You get an e-mail when it happens; the permanent fix is to publish/verify the app.
  • Events marked "Free" in Google: they show up in the agenda but do not block slots on your booking page β€” the same behaviour as Google itself.
  • Recurring events: each occurrence is imported individually, so the series shows on every date, not just the first one.

See also