·
Syncly Affiliate Program
Earn 30% Refer Syncly to your audience and earn every time they subscribe or renew.
Share a tool you already trust. Get rewarded when they buy.
Become an affiliate
All docs
Gohighlevel WooCommerce Integration

Getting Started

What Is Syncly for GoHighLevel? System Requirements Installation Guide Quick Start: Setup Wizard Plugin Dashboard Overview Free vs Pro: Feature Comparison White-Label Domain Setup WordPress Multisite Setup

Connection & Authentication

Connecting via OAuth2 API Scope Detection Multi-Location and Agency Setup Disconnecting and Reconnecting Security Best Practices Connection Troubleshooting

Field Mapping

How Field Mapping Works Setting Up Field Mapping Sync Direction: To GHL, From GHL, Both Ways Computed and Virtual Fields Extended Field Mapping (Pro) AI-Assisted Field Suggestions (Pro)

User Sync & Tag Management

Tag Impact: Preview What a Tag Will Do Before You Apply It Tag Rules: See Every Tag Automation in One Place How User Sync Works Configuring User Sync Settings Bulk User Sync Login Tracking Ping-Pong Prevention Role-Based Tagging System Global Tags (Pro) Sync Preview and Dry Run (Pro) User Profile GHL Section

Content Restrictions

How Tag-Based Restrictions Work Page and Post Metabox Setup [syncly_restrict] Shortcode Gutenberg Restricted Content Block Elementor Widget Conditions (Pro) Archive and REST API Protection (Pro) Admin Bypass and Override Rules (Pro)

Forms & Shortcodes

Gravity Forms — Conditional Sync & Automation Embedding Syncly Forms: Overview [syncly_form] Shortcode [syncly_user_meta] Shortcode Syncly Form Gutenberg Block Syncly Form Elementor Widget Per-Form Submission Limits (Pro) Form Autofill and Logged-In-Only Mode Contact Form 7 Integration

Webhooks & Bulk Import

Setting Up Inbound Webhooks Webhook Event Types Bulk Import from GoHighLevel Webhook Troubleshooting Ping-Pong Prevention and Guards

Gohighlevel WooCommerce Integration

WooCommerce Auto-Book Calendar Appointments (Pro) WooCommerce Purchase Workflow Enrollment (Pro) WooCommerce Memberships: Grant Plans Automatically from a GHL Tag (Pro) WooCommerce Subscriptions: Grant Access Automatically from a GHL Tag (Pro) WooCommerce Integration Overview Per-Product GHL Tags (Pro) Abandoned Cart Tracking (Pro) Lead-to-Customer Conversion (Pro) WooCommerce Extended Field Mapping (Pro)

LearnDash Integration

LearnDash Integration Overview (Pro) Course Enrollment and Completion Tags (Pro) Tag-Based Auto-Enrollment (Pro) Quiz Score-Based Threshold Tagging (Pro) Lesson and Topic Completion Tags (Pro) Syncing Course Progress to GHL (Pro) LearnDash Group Sync (Pro) LearnDash Extended Field Mapping (Pro)

BuddyBoss Integration

BuddyBoss Group Sync to GHL Custom Objects BuddyBoss Group Admin Metabox Bulk Group Sync BuddyBoss XProfile Field Mapping (Pro) Family BuddyBoss Groups (Pro)

Pro Features

Gravity Forms — Conditional Sync & Automation Custom Objects: Overview (Pro) Mapping Post Types to GHL Custom Objects (Pro) Custom Object Contact Associations (Pro) Family Relationships: Overview (Pro) Managing Family Members and Invitations (Pro) Family Tag Inheritance (Pro) Conditional Navigation Menus (Pro) [syncly_family_manager] Shortcode (Pro) Analytics Dashboard (Pro) Public REST API Endpoints (Pro)

Sync Engine & Troubleshooting

How the Sync Queue Works Sync Logs and Reading Them Enhanced Sync Logs (Pro) Rate Limits and API Quotas Auto-Login Links Email Notifications Setup Advanced Settings (Cache, Batch Size, Retention) Common Issues and Solutions Frequently Asked Questions Uninstalling the Plugin

Gohighlevel WooCommerce Integration

WooCommerce Auto-Book Calendar Appointments (Pro)

5 min read Updated Aug 28, 2026

WooCommerce Auto-Book Calendar Appointments

Automatically book a GoHighLevel appointment when a WooCommerce product is purchased. Syncly uses the product’s assigned GHL calendar, finds the first available slot, and creates a confirmed appointment for the customer.

The booking runs through Syncly’s background queue, so API calls benefit from the same retry, rate-limit, authentication, and Sync Logs infrastructure used by other Syncly sync operations.

How It Works

  1. A WooCommerce product is assigned to a GHL calendar.
  2. The product is configured with one or more order-status triggers.
  3. When the order reaches a trigger status, Syncly prepares the booking.
  4. If the customer’s GHL contact is available, the booking is added to the background queue.
  5. Syncly finds the first available calendar slot and creates the appointment.
  6. The appointment is created as confirmed with GHL notifications enabled.

Typical flow: Purchase → Trigger status → Queue → First available slot → Confirmed GHL appointment

Requirements

  • WooCommerce must be active.
  • Syncly Pro WooCommerce integration must be enabled.
  • A GHL OAuth connection and location must be configured.
  • The selected GHL calendar must exist in that location.
  • The customer must be available as a GHL contact before the appointment can be created.

Configure a Product

1. Select a GHL Calendar

Choose the GHL calendar that should receive appointments for this product. Syncly loads calendars from the connected GHL location and stores the selected calendar ID.

The calendar list is cached for one hour. If a newly created calendar is missing, refresh the cached options before configuring the product.

2. Choose Booking Trigger Statuses

Select the WooCommerce order status or statuses that should start automatic booking. The configuration is per product, so different products can use different triggers.

For example, a service product could trigger booking when an order reaches Processing or Completed.

3. Set an Optional Booking Delay

You can delay when Syncly starts looking for an appointment. A delay of 3 days, for example, means availability is searched starting approximately three days after the trigger.

This is useful when customers should not receive an appointment immediately after purchase.

How the Slot Is Selected

Syncly asks GHL for available slots instead of calculating availability itself. It searches two consecutive 15-day windows and selects the first available slot in chronological order.

A roughly three-hour buffer is added before the search begins. This allows GHL’s minimum scheduling notice and calendar rules to influence the available results.

When GHL does not return an end time, Syncly sends only the start time and lets the calendar’s configured appointment duration determine the end time.

What Gets Created in GHL?

The appointment includes:

  • GHL calendar ID
  • Customer contact ID
  • Selected start time
  • Product name(s)
  • WooCommerce order number
  • appointmentStatus: confirmed
  • toNotify: true

The appointment title uses:

Product name(s) — #Order Number

Because notifications are enabled, the selected GHL calendar’s normal confirmation and reminder automations can run for the appointment.

Multiple Products and Calendars

An order can contain multiple products mapped to different calendars. Syncly creates one booking per calendar.

If several products use the same calendar, they are combined into a single booking. Their product names are combined, and the largest configured delay is used for that calendar.

Duplicate Protection

Syncly records successful appointments on the WooCommerce order, including the appointment ID, start time, end time when available, and title.

If a calendar already has a recorded appointment for the order, Syncly skips it. This protects against duplicate bookings when WooCommerce fires the same status transition again or a queue item is retried.

Customers Without a GHL Contact

If the customer’s GHL contact does not exist yet, Syncly does not discard the booking request. It stores the pending booking on the order.

When normal contact synchronization later confirms the GHL contact, Syncly moves the pending booking into the background queue. The queue worker can also fall back to finding the contact by email.

Background Processing

Appointment creation and cancellation use Syncly’s queue item type wc_purchase_calendar.

  • book — finds a slot and creates the appointment.
  • cancel — cancels an appointment previously created by the purchase flow.

This keeps GHL API mutations out of the WooCommerce status request and provides background processing, retry handling, rate limiting, authentication handling, and Sync Logs visibility.

Cancellation and Refunds

Products can define order statuses that should cancel appointments. When one of those statuses is reached, Syncly queues cancellation for the appointments created from the order.

Appointments are cancelled, not deleted. This preserves the appointment in GHL history while releasing the calendar slot.

Cancellation uses toNotify: false, so Syncly does not send another appointment notification for the cancellation request.

If a status is configured as both a booking trigger and cancellation status, cancellation takes priority.

Safety and Error Handling

Before processing a queued booking, Syncly checks the current WooCommerce order status. If the order has already been cancelled or refunded, the booking is skipped.

Booking errors are stored against the order with the relevant calendar ID. Successful retries clear the corresponding error.

If several calendars are being booked, successful bookings are kept even when another calendar fails. If every booking fails, the queue operation fails so the normal retry mechanism can run.

Troubleshooting

Calendar is missing

Check the GHL OAuth connection, connected location, and calendar. Refresh the cached calendar list if the calendar was recently created.

No appointment was created

Confirm that the product has a calendar, the order reached a configured trigger status, the customer has a billing email, and the booking appears in Sync Logs.

No free slot was found

Syncly searches approximately 30 days of availability across two 15-day windows. Check the calendar’s working hours, availability, scheduling rules, and any configured booking delay.

Appointment was cancelled but still appears in GHL

This is expected. Syncly changes the appointment status to cancelled rather than deleting the appointment, keeping the booking history intact.

Quick Setup

  1. Open the WooCommerce product.
  2. Select the GHL calendar.
  3. Select the order-status trigger.
  4. Optionally set a booking delay.
  5. Select cancellation/refund statuses.
  6. Save the product.
  7. Place a test order and verify the appointment in GHL and the Sync Logs.

Important

Syncly selects the first free slot returned by GHL. The actual appointment time therefore depends on the GHL calendar’s availability, working hours, scheduling rules, minimum notice, and configured duration.

What are your Feelings