GoHighLevel

SalesMarketing New

Connect a GoHighLevel sub-account and Preb keeps your CRM in sync with every booking automatically. Leads, booked calls, reschedules, cancellations, no-shows, and call outcomes all flow into GoHighLevel as contacts, appointments, notes, and pipeline opportunities — and changes you make in GoHighLevel flow back to Preb, so the two stay in agreement without anyone copying data by hand.

It's a two-way, native integration: no Zapier, no CSV exports. Preb becomes the scheduling engine in front of your GoHighLevel pipeline, and — because Preb is where your ad-click IDs live — a deal you mark won anywhere fires the Purchase conversion back to your ad platforms, closing the attribution loop.

Adding the app

Prerequisites

  • A GoHighLevel sub-account (location) you can install a marketplace app into. Agency owners install it into the specific sub-account they want synced.
  • A Preb workspace where you are an admin — connecting and configuring GoHighLevel is an admin-only action.

Connect your GoHighLevel sub-account

Open Integrations → GoHighLevel

In Preb, go to Integrations → GoHighLevel and click Connect GoHighLevel.

Choose the location and authorize

GoHighLevel asks which sub-account to connect and shows what Preb may access — contacts, calendars, opportunities, and conversations. Choose the location and click Allow. You're returned to Preb with GoHighLevel shown as connected.

Preb sets things up for you

On connect, Preb creates a dedicated "Preb Bookings" calendar in your sub-account and matches your Preb team members to their GoHighLevel users by email. You can review both on the settings page.

One sub-account per workspace

Each Preb workspace connects to exactly one GoHighLevel location. To move to a different location, disconnect first, then connect the new one — Preb resets the location-specific settings (calendar, pipeline, host mapping) so nothing points at the old sub-account.

Set up what syncs

After connecting, open Integrations → GoHighLevel to configure the sync. Each card is optional — turn on only what you need:

Contact sync

Choose the tags Preb adds at each stage, map your hosts to their GoHighLevel users, and pick a default assigned user for hosts who aren't matched.

Field mapping

Map Preb data (meeting time, scheduling status, deal value, ad-click IDs, booking-form answers, and your CRM custom fields from Global Data) to GoHighLevel custom fields. Preb can create a matching custom field for you from the same screen.

Appointments, pipeline & workflows

Pick which calendar appointments land on, map each lifecycle stage to a pipeline stage, and enroll contacts into GoHighLevel workflows at chosen moments.

Sync-back & conversation logging

Turn on two-way sync for contacts, appointments, and opportunities, and choose whether Preb mirrors the emails and texts it sends into the GoHighLevel conversation thread.

You can also override any of these per event type from the GoHighLevel tab in the event-type editor (it appears once a connection is active).

Troubleshooting

ProblemWhat to do
Authorization didn't finish — you clicked Allow but Preb doesn't show GoHighLevel as connectedMake sure pop-ups aren't blocked and that you're an admin in the Preb workspace, then try Connect GoHighLevel again.
"This location is already connected"The GoHighLevel sub-account is connected to a different Preb workspace. Disconnect it there first, or pick a different location.
Contacts sync but appointments don't show an assigneeMap the host to their GoHighLevel user under Contact sync — Preb adds mapped users to the "Preb Bookings" calendar so appointments show who they're assigned to.
"Reconnect GoHighLevel" appearsThe connection was uninstalled or its access expired. Open Integrations → GoHighLevel and connect again — your calendar, mappings, and settings are preserved.

Still stuck? See our contact & support guide and we'll help you sort it out.

Using the app

Once GoHighLevel is connected, these features work automatically based on what you enabled. Each one lists what it does and what needs to be in place first.

Leads and contacts sync as they come in

  • Use case: A visitor completes the first step of your booking form. Preb upserts them as a GoHighLevel contact (deduped by email or phone), adds your configured tags, sets the source, and fills any mapped custom fields.
  • Prerequisites: Contact sync is on. Tags are added, never overwritten, so your existing GoHighLevel tags are safe.
  • Optional — unfinished leads too: Workspace owners can additionally turn on Send unfinished leads to your connected CRM (Settings → Data retention). Visitors who started typing into the form but never submitted are then pushed to GoHighLevel about two hours later. Leads synced this way are kept (they're in your pipeline now) instead of being auto-deleted after 30 days — and they're your responsibility under privacy law like any other CRM contact.

Bookings become appointments

  • Use case: A call is booked. Preb creates a GoHighLevel appointment on the chosen calendar, assigned to the mapped host, with the meeting link as the location. Reschedules update the same appointment in place; cancellations and no-shows update its status.
  • Prerequisites: A calendar is selected (Preb's auto-created "Preb Bookings" calendar is the default).

The pipeline follows the call

  • Use case: As a lead moves from booked to showed to won, Preb moves a single opportunity through your pipeline stages and records the deal value on a sale. There's always one opportunity per contact per pipeline — no duplicates.
  • Prerequisites: A pipeline is selected and its stages are mapped to Preb's lifecycle stages. Unmapped stages are simply skipped.

Two-way sync keeps both sides honest

  • Use case: Someone edits a contact, moves an opportunity, or cancels an appointment in GoHighLevel — Preb picks it up and updates its own records, without echoing the change back and causing a loop.
  • Prerequisites: The relevant sync-back toggles are on. Contact merges take name and phone from GoHighLevel (your CRM of record) and never touch a contact's ad-attribution data.

Won in GoHighLevel fires your ad conversion

  • Use case: You drag an opportunity to won in GoHighLevel. Preb records the sale and fires the Purchase conversion to your connected ad platforms — using the ad-click IDs it captured at booking time — so revenue is attributed even when the deal closes in the CRM. It fires exactly once, whether you close the deal in GoHighLevel or in Preb.
  • Prerequisites: Opportunity sync-back is on, and you've connected an ad platform (e.g. Meta) in Preb's tracking settings.

Availability respects GoHighLevel calendars

  • Use case: A host already has appointments or blocked time on their GoHighLevel calendar. Preb treats that time as busy so it's never offered as a bookable slot — no double bookings across the two systems.
  • Prerequisites: The host is mapped to their GoHighLevel user and the Use GoHighLevel calendars for availability toggle is on for them.

Owner-based routing

  • Use case: A returning lead who already has an assigned owner in GoHighLevel books again. Preb offers only that owner's availability, so the relationship stays with the person who owns it. If the owner isn't available or isn't mapped, Preb falls back to normal round-robin.
  • Prerequisites: Owner routing is enabled on a round-robin event type, and the host is mapped to their GoHighLevel user.

Conversations logged in one thread

  • Use case: Every confirmation, reminder, reschedule, and cancellation email or text Preb sends to the invitee is mirrored into that contact's GoHighLevel conversation, so your team sees the full history where they already work. Preb stays the sender — this only records a copy.
  • Prerequisites: Conversation logging is on (it's on by default for newly connected workspaces).

Permissions Preb requests (and why)

When you connect, GoHighLevel asks you to authorize a set of scopes. Preb requests only what the features above need — nothing is used for advertising, resale, or profiling, and Preb never reads data it doesn't act on. Here is every permission and exactly what it's for.

PermissionWhy Preb needs it
Contacts (read/write)Create and update the contact for each lead and booking, and add lifecycle tags. Tags are only ever added, never replaced.
Opportunities (read/write)Keep one opportunity per contact moving through your pipeline as they book, show up, and buy; read it back to avoid duplicates and echo loops.
Calendars (read/write)Auto-create the dedicated "Preb Bookings" calendar on connect, and read your calendar list so you can point event types at a specific calendar.
Calendar events (read/write)Create and update the appointment for each booking, and read a host's existing appointments/blocked time so Preb never offers a slot that's already taken.
Locations (read)Read the sub-account's name to show it on the connection screen.
Custom fields (read/write)List your custom fields for the field-mapping picker, and — only when you click "Create field" — add a field so Preb can write mapped data to it.
Tags (read)List your existing tags so you can pick them in the tag editor.
Users (read)List the sub-account's users so Preb can match them to your team members (host mapping).
Workflows (read)List your workflows so you can choose which one to enroll a contact into at a given moment.
Conversations & messages (read/write)Find or create the contact's conversation and log a copy of the emails/texts Preb sends the invitee, so your team sees the full thread. Preb records into the conversation — it does not send on your behalf.
OAuth (read/write)Manage the connection's own access tokens (refresh them before they expire).

Data & privacy

  • What Preb stores: the connection's encrypted access/refresh tokens, the location id, and the mapping choices you configure (which calendar, pipeline, fields, and team members to use). It does not copy your GoHighLevel contact database into Preb.
  • Direction of data: Preb writes booking and outcome data into GoHighLevel, and reads back only the specific changes it needs to stay in sync (a contact edit, an opportunity status, an appointment change). A contact's ad-attribution data is never overwritten by a sync-back.
  • Removing your data: disconnecting from Preb, or uninstalling the app in GoHighLevel, stops all syncing immediately and removes the stored connection and its tokens. Records already written to your GoHighLevel account are yours and are left in place.

Removing the app

You can disconnect from either side.

From Preb

Go to Integrations → GoHighLevel and click Disconnect. Preb stops syncing and removes the stored connection.

From GoHighLevel

Uninstall the Preb app from your sub-account's marketplace/installed-apps screen. GoHighLevel notifies Preb, which immediately marks the connection as needing a reconnect and stops syncing.

What removing the app does

  • Preb stops creating and updating GoHighLevel contacts, appointments, and opportunities for future bookings, and stops accepting changes from GoHighLevel.
  • Contacts, appointments, and opportunities already in GoHighLevel stay there — disconnecting doesn't delete anything in your CRM.
  • Your Preb-side settings (calendar, host mapping, field and pipeline mapping) are kept, so reconnecting the same location picks up exactly where you left off — the "Preb Bookings" calendar is reused rather than recreated.

Tags are always additive

Preb only ever adds tags to a GoHighLevel contact — it never replaces a contact's existing tags. Your tag data is safe throughout.