Skip to main content

What You Get

  • Contact sync — Import GHL contacts into Tuco with deduplication
  • Owner mapping — Map GHL users to Tuco team members
  • Tag sync — GHL contact tags imported automatically
  • Custom field sync — Map GHL custom fields to Tuco custom fields or tags
  • Campaign conditions — Use GHL tags in campaign branching and stop conditions

Connecting GoHighLevel

  1. Go to Integrations → CRM
  2. Enter your GHL API key and Location ID
  3. Click Test & Connect
  4. A full sync starts automatically
Only one CRM can be connected at a time. Disconnect HubSpot before connecting GHL.

Required API scopes

  • Location access
  • Contacts: search and read
  • Tags: read location tags
  • Users: read (for owner mapping)
  • Custom fields: read (for field mapping)
  • Contact tags: add/remove (for campaign automation)
  • Conversations: create (for activity logging)

Contact Sync

How it works

  • First sync — imports all GHL contacts into a “GHL Import” list
  • Incremental sync — every 15 minutes, syncs recently modified contacts
  • Deduplication — matched by phone number
  • Tags — GHL contact tags are imported into Tuco’s tag system

What syncs

GHL FieldTuco Field
firstNameFirst Name
lastNameLast Name
emailEmail
phonePhone
companyNameCompany
tagsTags
assignedToOwner (via mapping)

Owner Mapping

Same as HubSpot — map GHL users to Tuco members.
  1. Integrations → CRM → Owner Mapping
  2. Map each GHL user to a Tuco member
  3. Save & Re-sync

Custom Field Mapping

Map GHL custom fields to Tuco tags or custom fields.
  1. Integrations → CRM → Property Mapping
  2. Select a GHL custom field
  3. Choose Tag or Custom Field target
  4. Save & Re-sync

Channel control with tags

Use a GHL contact tag to control which channel a lead’s outbound messages go out on. Tags are read live on every send (workflow action and conversation-provider / CloseBot), so they take effect immediately — no sync, no custom field, no reinstall.
Tag on the contactEffect
forcefallbackSkip the iMessage check and send via the workspace’s configured fallback (SMS — Twilio / GHL / custom webhook). Use it for leads you already know aren’t on iMessage, or that you simply want on SMS.
(no tag)Normal flow — try iMessage first, fall back only if the contact isn’t reachable on iMessage.
The tag name is matched loosely (case-insensitive, ignoring spaces/dashes/underscores), so forcefallback, force-fallback, force_fallback, and Force Fallback all work.
forcefallback only changes the channel, not delivery. The lead must have a fallback configured (Settings → When iMessage isn’t available). With no fallback set up the send returns an error instead of silently delivering over iMessage. Add or remove the tag any time to flip a lead between iMessage-first and SMS-only.

Using GHL Data in Campaigns

Stop conditions

  • GHL tag — stop if contact has/doesn’t have a tag (live API call)

Branching

  • GHL has tag — branch based on GHL tags (live API call)
  • GHL property — branch on custom field values
All GHL checks call the live GHL API, not cached data.

Available operators

When comparing GHL property values in stop conditions or branches, all standard operators are supported:
OperatorLabelUse case
eqequalsExact match
neqnot equalsExclude a value
containscontainsPartial text match
not_containsdoes not containExclude partial match
starts_withstarts withPrefix match
gt / gtegreater than (or equal)Numeric comparison
lt / lteless than (or equal)Numeric comparison
gt_date / lt_dateafter / before dateDate comparison
exists / not_existsexists / is missingCheck if field has a value

Goal Bot integration

GHL tags and custom fields can be used as advance or exit conditions in Goal Bots. When a Goal Bot checks GHL data, it calls the live API — the same way campaigns do.