Solution guide · GoHighLevel
GoHighLevel Google Calendar not syncing: why it breaks and how to fix it
GoHighLevel Google Calendar not syncing? Find the cause — broken connection, linked calendar, writer access, sync mode, time zone — and fix it.

Key takeaways
- Most GoHighLevel Google Calendar sync failures come from a broken Google connection — a password change, revoked access, a security block or an expired token — and the fix is to delete and reconnect the account as its owner.
- HighLevel only writes bookings to the calendar chosen as the Linked Calendar, and that calendar needs writer (“Make changes to events”) access, so a missing or read-only linked calendar means appointments never reach Google.
- One-way sync shows Google events as blocked time only; choose two-way sync if you want events created in Google to come back into HighLevel as appointments.
- Double-bookings usually mean the Google calendar holding the busy events is not set as a Conflict Calendar, or the event is marked Free in Google.
- Test every fix with a real booking in both directions, and use the calendar troubleshooting tool to see exactly why a slot is unavailable.
When GoHighLevel Google Calendar is not syncing, the cause is nearly always one of two things: the Google connection itself has broken (a password change, revoked access or an expired token), or the connection is fine but the calendar settings tell HighLevel to write to, or read from, the wrong place. Reconnecting fixes the first. The second needs the Linked Calendar, Conflict Calendars, sync mode and time zone set correctly.
In this guide I give you a quick way to tell which problem you have, then the seven causes I find when I audit accounts, each with the exact setting to change. It is the same checklist I use when I build calendars as part of a GoHighLevel CRM setup. Menu paths are correct as of October 2026.
How HighLevel’s Google Calendar sync works
HighLevel’s linked and conflict calendars article splits the integration into three roles. Most sync problems are one of these roles set up wrong:
- Connected Calendars give HighLevel access to a Google account.
- Linked Calendar is the one Google calendar where HighLevel writes new bookings — and, with two-way sync, the one it reads events back from.
- Conflict Calendars are read for busy times; any overlapping event blocks the matching HighLevel slots.
Two more rules matter. Calendar connections belong to individual users, not the company, so every team member connects their own Google account. And an admin cannot use “login as” to reconnect someone else’s Google account — the owner of that Google account has to do it.
First, find out which half is broken
- Go to Settings → Calendars → Connections and look at the Google tile. A red outline or a “Reconnect your integration” banner means the connection is broken — go to cause 1.
- Book a test appointment on your live booking link and check Google. If it never appears, go to causes 2 and 3.
- Create a test event in Google. If it doesn’t block the slot in HighLevel, go to cause 5. If it blocks the slot but no appointment appears in HighLevel, go to cause 4.
- If times are shifted by an hour or more, go to cause 6.
| Symptom | Likely cause | Where to fix it |
|---|---|---|
| Red tile or “Reconnect” banner | Password change, revoked access, expired token | Settings → Calendars → Connections |
| Google account missing from the list | Wrong Google account signed in | Log out of Google, reconnect |
| HighLevel bookings never reach Google | No Linked Calendar selected | Connections → Linked Calendar |
| “Writer access” error | Linked calendar shared as view-only | Google Calendar → Settings and sharing |
| Google events block time but aren’t appointments | One-way sync | Sync mode → two-way |
| Double-bookings | Calendar not a Conflict Calendar, or event set to Free | Conflict Calendars, event Busy/Free |
| Appointments at the wrong time | Time zones don’t match | User, calendar and Google time zones |
| Keeps disconnecting on Workspace | Admin restricts third-party apps | Google Admin console → API controls |
Cause 1: the Google connection has broken
HighLevel’s own explanation of why the integration breaks lists four triggers: the Google password was changed, HighLevel’s access was revoked in Google, Google blocked connected apps after suspicious activity, or the OAuth token expired or was invalidated. None of them shows up as an error in your booking widget — the calendar just stops syncing.
Fix:
- Log in to HighLevel as the user whose calendar is broken (not via “login as”).
- Go to Settings → Calendars → Connections. Under Connected Calendars, delete the Google account, tick the acknowledgement box in the pop-up and click Confirm.
- In the same browser, open Google and sign out of every Google account. HighLevel suggests this because a different signed-in profile is the usual reason the wrong account — or no account — appears.
- Back in HighLevel, click + Add New, choose Google and sign in with the correct account.
- On Google’s consent screen, tick every permission. HighLevel warns that not granting writer access causes sync issues; if you skipped one, look for a missing-permissions warning under Settings → Integrations → Google and click Reconnect.
- Re-select the Linked Calendar and Conflict Calendars (causes 2 and 5) and save.
HighLevel says appointments created while disconnected sync automatically once you reconnect, so check a few recent bookings have arrived in Google.
Cause 2: no Linked Calendar, or the wrong one
If HighLevel is connected but bookings never reach Google, the usual reason is that no Linked Calendar is selected, or a calendar nobody looks at (often a shared or holiday calendar) is selected. HighLevel only writes to the one calendar set as the Linked Calendar.
Fix:
- Go to Settings → Calendars → Connections.
- Under Linked Calendar, choose the Google account and the exact calendar where bookings should appear — usually the user’s main calendar, which carries their email address as its name.
- Save. HighLevel notes that switching the selected calendar resyncs upcoming appointments.
- If the right calendar isn’t in the list, temporarily select a different calendar, save, then select the right one and save again to force the list to refresh.
Cause 3: the writer access error
HighLevel needs writer access to use a calendar as the Linked Calendar; read-only access is only enough for fetching events. If the calendar belongs to someone else — a shared clinic or office calendar — and was shared as view-only, you’ll see the Google Calendar writer access error.
Fix — done by the calendar’s owner in Google:
- Open calendar.google.com signed in as the calendar’s owner.
- Next to the calendar in the left sidebar, click the three dots and choose Settings and sharing.
- Under Share with specific people or groups, add the email address of the Google account connected to HighLevel.
- Set the permission to Make changes to events and click Send.
- In HighLevel, re-select that calendar as the Linked Calendar and save.
If the error persists, check for a duplicate copy of the calendar in the connected account that only has “See all event details” — select the copy with edit rights.
Cause 4: one-way sync when you wanted two-way
This is the cause behind most “I added it in Google but it’s not in HighLevel” complaints. According to HighLevel’s sync options:
- One-way (default): Google events come into HighLevel only as blocked slots. No contact is created for guests and no workflows fire.
- Two-way: HighLevel bookings go to Google, and events created in Google come back as appointments, with a contact created for each guest and workflows able to fire.
Fix:
- Open the Linked Calendar settings in Settings → Calendars → Connections and find the sync option (under advanced settings).
- Choose two-way if you want Google events as real appointments; keep one-way if you only want Google to block time.
- Save, then create a test event in Google with a guest email and check it appears as an appointment.
Cause 5: double-bookings — conflicts not checked
If people can book over time you’re busy in Google, HighLevel isn’t reading that busy time. HighLevel checks both linked and conflict calendars on each booking request, and a synced event marked Busy blocks the slot. So there are three things to check.
Fix:
- In Settings → Calendars → Connections, open Conflict Calendars and tick every Google calendar that holds real commitments (main, family, a second business account). The linked calendar should be there too.
- In Google, open an event that was double-booked, click the pencil to edit, and set the Busy/Free dropdown to Busy. Calendly’s guide describes the same setting; all-day events in particular are often set to Free.
- Open the HighLevel calendar being booked and confirm the user is assigned as a team member — a user who isn’t assigned has no availability for HighLevel to check.
- Open the calendar’s Troubleshoot tool (below) on the double-booked day and confirm the slot now shows as unavailable.
Cause 6: appointments at the wrong time
A shifted appointment is a time zone mismatch. HighLevel’s missing-slots guide says the user’s time zone in HighLevel, the calendar settings and the connected Google account all need to match. A HighLevel ideas thread also shows users reporting that the time zone picked at booking doesn’t carry into the Google event, so reminder texts quote the wrong time.
Fix:
- In HighLevel, open Settings → My Profile and check the user’s time zone.
- Open the calendar’s settings and check its time zone.
- In Google Calendar, open Settings → General → Time zone and check the primary time zone, then the time zone of the linked calendar itself under Settings and sharing.
- Make all of them the same, book a test appointment and check the time in Google, the confirmation and the reminder.
Cause 7: Google Workspace blocks the app
On a company Google Workspace account, the admin decides which apps can reach Calendar. Under Google’s app access controls, an admin can set the Calendar service to Restricted, so only Trusted apps get in, and apps with no policy can be blocked.
Fix — done by the Workspace admin:
- Sign in to the Google Admin console and go to Menu → Security → Access and data control → API controls.
- Open Manage Third-Party App Access and find HighLevel’s app (it can take 24–48 hours to appear after a user first authorises it).
- Set its access to Trusted and save.
- Ask the user to reconnect as in cause 1.
Use the troubleshooting tool to see why a slot is blocked
HighLevel has a calendar troubleshooting tool: open the calendar, click the three dots in the header and choose Troubleshoot Calendar. It lists every potential slot, and each unavailable one shows a code with the reason. The codes below are as described in Growthable’s walkthrough of the tool; check the wording in your account.
| Code | What it means | What to do |
|---|---|---|
| CONFLICT | A Google (third-party) event blocks the slot | Correct — or set that event to Free |
| USER | The user is busy or outside their availability | Check the user’s working hours |
| BOOKED | An existing appointment fills the slot | Correct behaviour |
| BLOCKED | A blocked-off time covers the slot | Remove the block if it’s wrong |
| NOTICE | Inside the minimum scheduling notice | Shorten the notice period |
| BUFFER | A buffer before or after another booking | Reduce the buffer |
| DAYLIMIT / SLOTMAX | Daily or per-slot limit reached | Raise the limit |
If a slot you expected to be free shows CONFLICT, the sync is working — the busy event is in Google. If a slot you expected to be blocked shows as free, go back to cause 5.
Confirm it is fixed: the five-minute test
Common mistakes to avoid
- Reconnecting through “login as”. It won’t work; the Google account’s owner must do it.
- Skipping permissions on Google’s consent screen. Missing writer access breaks the sync quietly.
- Linking a shared calendar that’s view-only. Share it with “Make changes to events” first.
- Expecting one-way sync to create appointments. It only blocks time.
- Leaving all-day events as Free. Holidays and “clinic closed” days won’t block bookings.
- Changing your Google password without reconnecting. Reconnect straight away after any password reset or security alert.
Keep your calendar and CRM in step
A calendar that silently stops syncing costs you double-bookings and missed appointments, and nobody notices until a customer turns up at the wrong time. If you’d rather hand it over, I set up and test calendars, sync and reminders as part of a GoHighLevel CRM setup, and can add a Voice AI agent that books callers straight into the synced calendar. While you’re checking, make sure your missed call text back is firing too.
References
- How to Integrate Google Calendar with HighLevel — HighLevel Support Portal
- Setting Up Linked Calendars & Conflict Calendars — HighLevel Support Portal
- Why Google Calendar Integration Breaks — HighLevel Support Portal
- How to Re-Integrate Google Calendar for a User — HighLevel Support Portal
- Fix a Missing Google Calendar Account in HighLevel — HighLevel Support Portal
- Google Calendar Writer Access Error — HighLevel Support Portal
- Fix Missing Appointment Slots in HighLevel Calendar — HighLevel Support Portal
- Share & Troubleshoot from Calendar Header — HighLevel Support Portal
- Troubleshooting Tool for Calendar in GoHighLevel — Growthable
- Manage connections between your Google Account & third parties — Google Account Help
- Control which apps access Google Workspace data — Google Workspace Admin Help
- How to manage “Busy” vs. “Free” calendar settings — Calendly Help Center
- HL Calendar Timezone sync to Google Calendar — HighLevel Ideas





