Two-way Google Calendar sync

Each staff member connects their own Google account: platform bookings appear on their Google calendar with a Meet link, and their Google events appear here as busy time that removes those hours from booking links.

What it is

Outbound, every appointment is created, patched or deleted in their Google calendar and tagged so we recognise our own events coming back. Inbound, everything else on their calendar is pulled in as a busy block carrying no automations — no confirmations, no SOP ticks, no journey updates. If they move or delete one of our events in Google, the platform appointment follows.

Also called: connect Google Calendar · sync my calendar · my personal events block bookings · Google Meet link

See it
Two-way Google Calendar sync
Apr
May
Jun
Jul
Ronan Petsch — Barndominium
Framing
Marlin Hoover — Riding Arena
Concrete
Gideon Alt — 40×64 Shop
Trim
Ivy Brubaker — Hobby Shop
Framing
Ronan Petsch — Hobby Shop
Concrete
Framing crewConcrete crewTrim crew
The Google connection chip showing the address and 'synced 3m ago', with a hatched personal block on the grid behind it. platform/calendar/page.tsx. Sample data — no customer information appears here.
How it works
  1. 1Scopes cover event read/write plus the list of their calendars, so personal blocks come from all of them, not just the primary one.
  2. 2Google sends no invites — the platform owns the emails.
  3. 3Sync is incremental by sync token, falling back to a windowed pull from 30 days back to 120 ahead when the token goes stale.
  4. 4Tokens are stored encrypted; disconnecting revokes them, removes the pulled personal events and leaves our own bookings in place.
  5. 5The connection card shows the linked address, minutes since last sync, and any error verbatim with a hint when the API is simply not enabled.
Why we built it

Migration 244 and the sync library are. The one-way-automations rule is explicit: pulled events carry 'no automations (no confirmations, no SOP tick, no Journeys light)' — a personal dentist appointment must block time without triggering a sales sequence. The push happens before the confirmation emails so 'the Google Meet link it creates is in the confirmation emails', and it never blocks the booking.

The problem
  • Double-booking against personal commitments
  • Two calendars to maintain
  • Missing video links
Sound familiar?
What you get
Personal time blocks booking automatically
A Meet link created and emailed without anyone making one
Moves and deletions in Google follow through

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →