Once your sales team grows past two reps, individual booking links stop working. Leads pick their favorites, reps get double-booked during doctor appointments, and managing team availability turns into a guessing game.
Here is how to set up a GoHighLevel round robin calendar with true two-way Google Calendar synchronization for every team member. We’ll configure rep weighting, handle multi-calendar conflict checking, and make sure HighLevel actually respects personal busy blocks before serving slots to leads.

Why Round Robin Calendars Break Without Two-Way Sync
A standard booking system only checks its internal database. If Rep A books a dentist appointment directly in Google Calendar, a basic one-way setup has no idea. It still marks that slot open. A lead books, and Rep A ends up double-booked.
Two-way sync fixes this by reading external events in real time. HighLevel pulls the “busy” status from Google Calendar and strips those blocks from the public widget. When a prospect books on your funnel, HighLevel writes the appointment back to the assigned rep’s Google Calendar with meeting links and contact details attached.
If you’re already seeing slots vanish without an obvious reason, check our guide on fixing GoHighLevel calendar availability slots to make sure global working hours aren’t overriding your team rules.
Step 1: Connect Each Team Member’s Google Account
The most common mistake here: connecting Google accounts under location-level Integrations. Don’t do that for round robin. Sub-account integrations connect one global calendar for the whole location. For a team setup, every rep needs to connect their own Google account inside their personal profile.
- Head into your HighLevel sub-account.
- Go to Settings > My Staff.
- Click Edit on the rep you’re configuring.
- Scroll down to User Calendar Configuration.
- Click Connect next to Google Calendar and complete the OAuth flow.
Make sure your reps grant full calendar permissions during the OAuth prompt. If they uncheck the permission to edit events, HighLevel can’t write bookings or read conflicting busy blocks.
Step 2: Configure Conflict Calendars and Primary Calendar Writes
Connecting the account is step one. Next, you have to tell HighLevel which sub-calendars inside that Google account should block availability, and where new leads should be written.
Under the user’s User Calendar Configuration in My Staff, pay attention to these two settings:
- Primary Calendar (Sync to Calendar): Where HighLevel writes newly booked appointments. Point this to the rep’s main work calendar.
- Check for Conflicts: Check every sub-calendar that should block booking slots. If your rep puts doctor appointments on a separate “Personal” or “Family” Google calendar under the same account, select those too.
For more edge cases around overlapping calendars across large teams, see our deep-dive on fixing GoHighLevel team calendar sync conflicts.
If you manage users via the HighLevel API v2, you’ll see this exact setup returned in the user calendar configuration payload:
{ "userId": "usr_8839201a9f", "calendarSync": { "provider": "google", "primaryCalendarId": "rep.alex@example.com", "conflictCalendarIds": [ "rep.alex@example.com", "alex.personal@gmail.com", "company-holidays@group.calendar.google.com" ], "syncTwoWay": true }
}Notice the multiple entries in conflictCalendarIds. HighLevel queries all of them before rendering open slots on your booking widget.
Step 3: Create the Round Robin Team Calendar
Once every rep has connected their Google account and selected their conflict calendars, build the actual round robin calendar.
- Go to Calendars > Calendar Settings.
- Click Create Calendar and choose Round Robin.
- Add a name, description, and custom URL slug.
- Under Team Members, click Add User and select your reps.
Now pick your distribution logic:
- Optimize for Availability: Shows prospects all available slots across the team. If three reps are free at 2:00 PM, HighLevel offers the slot and routes the lead to the rep with the highest priority or lightest meeting load.
- Optimize for Equal Distribution: Balances appointments over a rolling window. If Rep A has 10 calls this week and Rep B has 6, Rep B gets incoming bookings until workloads even out—assuming Rep B is free.
You can also set priority weights (High, Medium, Low) per rep if you have senior closers who should take calls first whenever they’re open.
Check the HighLevel official round robin documentation for the fine print on distribution weighting.
Step 4: Set Slot Duration, Buffers, and Lookahead Limits
Without strict slot settings, round robin calendars will run reps into the ground with back-to-back calls. Under the Availability tab, configure these parameters:
- Slot Duration: Meeting length (e.g., 30 minutes).
- Slot Interval: How often slots show up on the picker (e.g., every 15 or 30 minutes).
- Buffer Time: Add 10–15 minutes After the slot so reps have time to write CRM notes before their next call.
- Minimum Scheduling Notice: Set this to at least 2 to 4 hours so reps don’t get ambushed by instant bookings while on a break.
- Date Range: Cap bookings at 5–7 days out. Booking windows beyond a week tank your show-up rates.
If your calendar widget shows an empty grid even when reps are wide open, check out our guide on fixing calendar no available times.
Step 5: Testing the Two-Way Sync in Real Conditions
Do not send real traffic to a new round robin calendar without testing it first. Here is the exact test sequence I run on every new build:
- Open Rep A’s Google Calendar at
calendar.google.com. - Add an event called “Test Busy Block” from 2:00 PM to 3:00 PM tomorrow. Confirm the event status is set to Busy (not Free).
- Open Rep B’s Google Calendar and leave that 2:00 PM to 3:00 PM window open.
- Open your HighLevel round robin link in an incognito window.
- Check tomorrow’s 2:00 PM slot. It should still be available because Rep B is open.
- Book that 2:00 PM slot with test data.
- Open HighLevel Contacts—the new contact must be assigned to Rep B.
- Open Rep B’s Google Calendar. The appointment should appear within 30 seconds.
As noted in the Google Calendar documentation, events marked “Free” do not broadcast a busy state via API. If reps block out focus time as “Free”, HighLevel will book right over it.
Automating Post-Booking Workflows and Rep Notifications
Once a lead books, HighLevel assigns the contact automatically. You need a workflow to trigger confirmations and alert the assigned rep immediately.
Create a workflow with an Appointment Status trigger where Event Type = Normal and In Calendar = [Your Round Robin Calendar].
Use custom merge fields to pull in the dynamic meeting link and the assigned rep’s details:
Hi {{contact.first_name}},
Your strategy session is confirmed for {{appointment.start_time}}.
You will be speaking with {{user.name}}.
Join the meeting here: {{appointment.meeting_location}}
For more on building dynamic email templates that don’t break when a field is missing, read our guide on GoHighLevel merge fields and fallback values.
Frequently Asked Questions
What happens if a rep deletes the meeting from Google Calendar?
With two-way sync enabled, deleting or declining the event in Google Calendar pushes back to HighLevel. The appointment status flips to “Cancelled” in the CRM, and that time slot reopens on your round robin link for other leads.
Can some reps use Google Calendar while others use Outlook?
Yes. Calendar integrations live on the user profile level. Rep A can connect Google Calendar while Rep B syncs Microsoft Outlook. The round robin engine evaluates conflicts across both providers .
Why are all my leads getting assigned to only one rep?
This usually happens if distribution is set to “Optimize for Availability” and one rep has wide-open hours while others have restrictive schedules. It also happens when other reps haven’t connected their Google account properly, causing HighLevel to bypass them entirely due to unverified availability.
Does round robin work across different timezones?
Yes. The booking widget auto-detects the prospect’s timezone and converts slot times on the fly. When the booking writes back to the rep’s Google Calendar, Google stores it in the rep’s local timezone.
Next Steps
Now that your round robin calendar distributes leads cleanly without double-booking, make sure your downstream automations are dialed in. Read our walkthrough on using custom values in GoHighLevel funnels and workflows to keep confirmation templates dynamic across all your client accounts.

