Back to Projects

3-Way Calendar Sync — Calendly + Google Cal + GHL

Webhook-based real-time sync across three calendar systems eliminating double-bookings for a 12-person sales team.

2024 Integration Engineer Automation
CalendlyGoogle CalendarGoHighLevelWebhooksn8nZapier
taimoorakhtar.com/projects/calendar-sync-system
3-Way Calendar Sync — Calendly + Google Cal + GHL

Introduction

A 12-person sales team was double-booking themselves twice a week on average. Reps used Calendly for external prospect booking, Google Calendar for internal meetings, and GHL for client-call scheduling. None of the three knew about the others. Cancellations were embarrassing, productivity tanked, and morale suffered.

The Challenge

Each calendar system 'thinks' it's the authoritative source of truth. Native integrations between them are partial — Calendly checks Google Calendar for blocking, but GHL doesn't. GHL bookings don't write to Google Calendar by default. Manually wiring three systems with bidirectional sync requires real engineering, not Zapier templates.

The Solution

Built an n8n webhook orchestration layer that listens to events from all three systems and propagates updates to the other two. New Calendly booking writes blocks to Google Cal and creates GHL appointment. New GHL appointment writes to Google Cal. Google Cal events block both Calendly and GHL availability windows.

Technical Deep Dive

1
Webhook event listeners. Calendly webhooks fire to n8n on invitee.created and invitee.canceled. GHL webhooks fire on appointment.created and appointment.updated. Google Calendar watch endpoint polled every 5 minutes for changes (no native webhook).
2
Bidirectional propagation logic. Event type identification first (which system fired?). Then propagation to the other two with system-specific formatting. Idempotency keys prevent loop creation when events propagate.
3
Conflict resolution. If two systems book the same slot within a propagation window, the system with the lower creation timestamp wins. Loser is auto-canceled with apologetic email and rebook link.
4
Per-rep availability blocks. Reps mark certain Google Calendar events as 'block all calendars' via a specific calendar color. n8n watches for these and blocks the same time in Calendly and GHL.
5
Audit log for accountability. Every sync event logged to Google Sheets. When a rep claims 'the system double-booked me', we can trace exactly which system received which event in what order. Reduced disputes.

Key Features

Results & Impact

  • Double-bookings dropped from ~3/week to ~1/month
  • Rep time saved: ~2 hours/week per rep on calendar admin
  • Cancellation-related customer complaints fell 85%
  • System ran for 18 months without manual intervention

Lessons Learned

"Three-way calendar sync is non-trivial. Native integrations always cover 2 of 3, never all 3."
"Idempotency keys are mandatory in any webhook-based sync. Without them, you get infinite propagation loops."
"Audit logs aren't for the system — they're for the political moments when someone claims it was the system's fault."

Related Work

Have a similar build in mind?

I'm available for engagement on GoHighLevel implementations, A2P 10DLC compliance, AI automation pipelines, and CRM migrations. Most projects start at $300–$1,200 depending on scope.