Operations Intermediate

How do we set up GoHighLevel workflows that do not double-book or double-send?

Stop GoHighLevel double bookings and duplicate messages: one appointment per slot, conflict calendars, the right appointment trigger, deliberate re-entry settings, one owner per message and Stop on Response.

Time needed
1 hour
Steps
6
Level
Intermediate

Octacer Team

October 1, 2026 Updated

LinkedIn Post on X
An Octacer team member at a desk reviewing a GoHighLevel workflow and calendar settings audit on a monitor, with appointments per slot, re-entry and Stop on Response checks.

In short: Most GoHighLevel double bookings come from calendar settings, and most double sends come from overlapping automations. Set appointments per slot to 1, connect each team member's Google or Outlook calendar as a conflict calendar, and pick the appointment trigger that matches how bookings are actually made. Then give every customer message one owner (a calendar notification or a workflow, not both), set re-entry deliberately, turn on Stop on Response for follow-up, and test with a fresh contact while reading Enrollment History.

What causes doubles

Symptom Usual cause Where to fix it
Two people booked the same time Appointments per slot above 1, or no conflict calendar connected Calendar availability settings and calendar connections
Booked over a meeting in Google or Outlook The outside event is marked Free, or the user never connected that calendar Connect the calendar as a conflict calendar; mark events Busy
Two confirmations or reminders A calendar notification and a workflow both send the same message Pick one owner per message
Same lead gets the sequence twice Two workflows with overlapping triggers, or re-entry on when it should be off Workflow triggers and Settings tab
One contact gets two sets of emails Allow multiple Opportunities is on and the contact has two deals Workflow Settings tab
Reminder for the old time after a reschedule The workflow only listens to Customer Booked Appointment Use the Appointment Status trigger
Follow-up keeps going after the lead replied Stop on Response is off Workflow Settings tab

Prerequisites

  • Admin access to the sub-account, including Calendars and Automation.
  • A list of every calendar in use and who is assigned to each.
  • A list of every workflow that sends messages about leads or appointments.
  • A test contact that has never entered these workflows, with an email and phone number you control.

Step 1: Make the calendar refuse double bookings

  1. Open the calendar's availability settings and set Appointments per Slot to 1, unless the calendar is meant for groups or classes. HighLevel's help center notes that a value above 1 lets several people book the same slot.
  2. Have each team member connect their own Google or Outlook calendar and add it as a conflict calendar. Only events marked Busy block a slot; events marked Free do not.
  3. Add a buffer after appointments if your team needs travel or prep time.
  4. For team calendars, use a round robin calendar. HighLevel checks each assigned member's availability and only offers times when someone is free.

Step 2: Choose the trigger that matches how bookings are made

Trigger Fires when Watch out for
Customer Booked Appointment A customer books through a booking link or widget Does not fire for appointments your team books manually, or for recurring appointments
Appointment Status An appointment's status changes (for example confirmed, cancelled, showed, no-show) Filter by status and calendar so one change does not start several workflows

If your team also books for customers, a workflow that only uses Customer Booked Appointment will miss those bookings, and someone tends to add a second workflow to cover them. That second workflow is a common source of duplicates. Use one workflow with clear filters instead.

Step 3: Set re-entry on purpose

Open the workflow's Settings tab:

  • Allow Re-entry: on for processes that should repeat for the same person (for example a monthly check-in), off for one-time journeys such as a welcome sequence. HighLevel's documentation notes an exception: appointment and invoice triggers let a contact enter once per appointment or invoice whatever this setting says, so one person with two appointments gets two sets of reminders. That is correct behaviour; design the messages for it.
  • Allow multiple Opportunities: on only if each deal should run its own sequence. When it is on, a contact with two opportunities can receive two separate sets of messages.
  • Stop on Response: on for lead follow-up and reactivation. It removes only the contact who replied, so your team takes over the conversation.

Step 4: Give every message one owner

Calendars can send their own confirmations and reminders from their notification settings. Workflows can send the same messages. Write a short table of every customer message (confirmation, reminder, reschedule, no-show, follow-up) and assign each one to exactly one place. Turn off the duplicate in the other place.

Also look for older workflows that still send the same message. Search Automation for workflows that use the same trigger and the same calendar, and archive or merge them.

Step 5: Time reminders from the appointment, not the booking

In the reminder workflow, use a Wait step based on the upcoming appointment rather than a fixed delay from when the contact entered. Then decide what happens when the appointment is booked inside the reminder window, so a booking made 30 minutes ahead does not get a "see you tomorrow" message. Note that editing a Wait step does not change the timing for contacts who are already waiting in it.

Step 6: Test with a fresh contact and read the logs

  1. Book a test appointment through the booking link with a contact that has never entered the workflow.
  2. Book a second one for the same contact, then reschedule and cancel one.
  3. Open the workflow's Enrollment History and Execution Logs. Check how many times the contact entered, which actions ran and why any were skipped.
  4. Check the contact's conversation for duplicate messages and their timestamps.

Reusing the same test contact gives misleading results, because re-entry rules and earlier runs change what happens.

Checklist

  • [ ] Appointments per slot is 1 on one-to-one calendars
  • [ ] Every assigned user has a conflict calendar connected
  • [ ] One workflow per appointment journey, with calendar filters
  • [ ] Re-entry and multiple-opportunity settings chosen on purpose
  • [ ] Stop on Response on for follow-up sequences
  • [ ] Each customer message has one owner
  • [ ] Reminders timed from the appointment
  • [ ] Tested with a fresh contact, including a reschedule and a cancellation

FAQ

Why does GoHighLevel let two people book the same slot?

Usually because the calendar allows more than one appointment per slot, or the team member's outside calendar is not connected as a conflict calendar. Events marked Free in Google or Outlook do not block time either.

Why did a contact get the same reminder twice?

The most common reasons are a calendar notification and a workflow sending the same reminder, two workflows listening to the same booking, or the contact having two appointments. Enrollment History shows how many times the contact entered each workflow.

Should Allow Re-entry be on or off?

Off for one-time journeys and on for processes that should repeat. Appointment and invoice triggers ignore it and allow one entry per appointment or invoice, according to HighLevel's documentation.

Does Customer Booked Appointment catch every booking?

No. It fires when the customer books through a booking link. Appointments your team creates and recurring appointments do not trigger it, so use the Appointment Status trigger when you need to cover those.

How do we stop follow-up when a lead replies?

Turn on Stop on Response in the workflow settings. It removes the contact who replied from that workflow, not anyone else.

Related reading

How Octacer helps

Octacer sets up and repairs GoHighLevel calendars and workflows, including booking flows, reminders and CRM sync. See our GoHighLevel services.

Next step

List every workflow and calendar notification that messages a lead about an appointment, and mark which ones overlap. Book a call if you want help untangling them.

Sources

  • HighLevel Support Portal, Workflow Settings overview: https://help.gohighlevel.com/support/solutions/articles/48001239875-workflow-settings-overview
  • HighLevel Support Portal, Workflow Trigger: Customer Booked Appointment: https://help.gohighlevel.com/support/solutions/articles/155000002675-workflow-trigger-customer-booked-appointment
  • HighLevel Support Portal, Appointment scenarios in Workflow: https://help.gohighlevel.com/support/solutions/articles/155000002697-appointment-scenarios-in-workflow
  • HighLevel Support Portal, Understanding Calendar Availability Settings: https://help.gohighlevel.com/support/solutions/articles/48001155718-adjusting-availability-settings-for-individual-calendars
  • HighLevel Support Portal, Round Robin Calendars setup guide: https://help.gohighlevel.com/support/solutions/articles/155000001485-round-robin-calendars-setup-distribution-availability-explained
  • HighLevel Support Portal, Multiple Opportunities toggle in workflows: https://help.gohighlevel.com/support/solutions/articles/155000003440-multiple-opportunities-toggle-in-workflows
Topics #GoHighLevel workflows #GHL automation #GoHighLevel workflow triggers #GoHighLevel double booking #GoHighLevel duplicate messages #HighLevel calendars

Finished the guide? Share it with your team.

LinkedIn Post on X
From guide to production

Want it running on your stack?

We implement this guide for clients, tailored to your stack, your data, and your team's workflow, and handed over documented.