SalesCal Docs
Integrations

GoHighLevel CRM Integration

Connect GoHighLevel (GHL) to automatically sync leads and booking data to your CRM.

Benefits

  • Automatic Lead Sync: Leads pushed to GHL automatically
  • Status Updates: Booking status synced in real-time
  • Custom Field Mapping: Form responses sync to GHL fields
  • Workflow Triggers: Trigger GHL automations from bookings

Connecting GoHighLevel

  1. Go to Settings > Integrations
  2. Find GoHighLevel
  3. Click Connect
  4. Enter your GHL API credentials or authorize via OAuth
  5. Select your GHL location/sub-account
  6. Save the connection

API Credentials

You'll need from GoHighLevel:

  • API Key or OAuth Connection
  • Location ID (sub-account)

Finding Your API Key

  1. Log into GoHighLevel
  2. Go to Settings > API
  3. Generate or copy your API key

Location ID

Find your Location ID in GHL settings or the URL when viewing your sub-account.

How Sync Works

Lead Creation

When a lead is captured in SalesCal:

  1. Contact created in GHL
  2. Contact data mapped to GHL fields
  3. GHL contact ID stored in SalesCal
  4. Future updates use this ID

Sync Triggers

EventGHL Action
Step 1 CompleteContact created (status: incomplete)
Qualification PassContact updated (status: qualified)
Qualification FailContact updated (status: disqualified)
Booking CompleteContact updated (status: booked)

Data Synced

SalesCal FieldGHL Field
First NameFirst Name
Last NameLast Name
EmailEmail
PhonePhone
Custom FieldsCustom Fields (mapped)
Lead ScoreCustom Field (optional)
Lead GradeCustom Field (optional)
Event NameTag or Custom Field

Custom Field Mapping

Map SalesCal form fields to GHL custom fields:

  1. Go to integration settings
  2. Find Field Mapping
  3. For each SalesCal field:
    • Select the corresponding GHL field
    • Or create a new GHL field
  4. Save mappings

Mapping Best Practices

  • Match field types (text to text, dropdown to dropdown)
  • Use consistent naming
  • Map all important fields
  • Test with a sample lead

One Saved Question, One GHL Field

Form fields come from your team's shared question library, so a question reused across several events still maps to a single GHL field — you won't get duplicate fields for the same question. Archived questions (from Settings → Questions) can't be picked for a new mapping, but a mapping created before the question was archived keeps working and still shows in your mapping list.

Tag Mapping

GHL has no "lead status" concept, so SalesCal applies tags as a contact moves through each stage. In Tag Mapping, map any of these stages to one or more GHL tags:

StageMeaning
NewStarted form, didn't finish
QualifiedForm completed, passed qualification rules
DisqualifiedFailed qualification rules
BookedCall is scheduled
RescheduledCall time changed
CancelledBooking cancelled
CompletedCall completed with an outcome

When you add a tag, the field suggests tags that already exist in your connected GHL location, so you can pick an existing tag or type a brand-new one. If you type a new name, SalesCal creates the tag in GHL immediately — it shows up in your GHL tag list (and as a workflow trigger option) as soon as the mapping is saved, before any contact reaches that stage.

Tags are applied to a contact at the moment they enter a stage. Adding a mapping doesn't retroactively tag contacts that already passed that stage. If a contact syncs but its tags can't be applied, the sync appears as partial in the Sync Log with the reason, instead of reporting a clean success.

GHL Automations

Trigger Ideas

On Incomplete Lead:

  • Send follow-up email
  • Add to nurture sequence
  • Notify sales rep

On Qualified Lead:

  • Send confirmation
  • Assign to rep
  • Add to hot lead list

On Disqualified Lead:

  • Send polite decline
  • Add to long-term nurture
  • Log for analysis

On Booking:

  • Send preparation email
  • Create task for rep
  • Add calendar reminder

Setting Up Automations

  1. In GHL, create a workflow
  2. Set trigger: "Contact Tag Added" or "Custom Field Changed"
  3. Use the SalesCal status values
  4. Add your automation steps

Duplicate Handling

When a lead already exists in GHL:

  • By Email: Existing contact updated
  • New Contact: Created if no match found
  • Merge Settings: Follow your GHL duplicate settings

Troubleshooting

"Failed to Connect"

  • Verify API key is correct
  • Check Location ID is valid
  • Ensure API access is enabled in GHL
  • Try regenerating API key

Leads Not Syncing

  • Verify connection is active
  • Check for sync errors in settings
  • Confirm GHL location is correct
  • Test with a new lead

Custom Fields Not Mapping

  • Verify field mapping is saved
  • Check field types match
  • Ensure GHL field exists
  • Test the specific field

Can't Create Fields in GHL ("not authorized" / permission error)

Creating custom fields needs write permission that older connections didn't grant. Disconnect and reconnect GoHighLevel to refresh permissions, then try again.

Duplicate Contacts

  • Review GHL duplicate settings
  • Check if email matching is enabled
  • Consider merging duplicates manually

Status Not Updating

  • Verify webhook/trigger is active
  • Check GHL automation is running
  • Look for GHL error logs

Viewing Sync Status

In SalesCal lead records:

  • GHL Contact ID: Shows if synced
  • GHL Synced At: Last sync timestamp
  • Sync Status: Success or error

Disconnecting GoHighLevel

To remove the connection:

  1. Go to Settings > Integrations
  2. Find GoHighLevel
  3. Click Disconnect
  4. Confirm

Note: Existing GHL contacts remain, but new leads won't sync.

Data Privacy

  • Only lead data is sent to GHL
  • Follows your GHL privacy settings
  • You control what fields sync
  • Can disconnect at any time

Best Practices

Clean Setup

  • Map all fields before going live
  • Test sync with sample leads
  • Set up automations for each status

Consistent Data

  • Use same field names when possible
  • Keep custom fields organized
  • Document your mapping

Monitor Syncs

  • Check sync status regularly
  • Address errors promptly
  • Review automation performance

Leverage Automations

  • Automate follow-ups
  • Create tasks for sales team
  • Segment leads by status/grade

Advanced: Webhook Mode

For more control, use webhooks:

  1. Enable webhook mode in integration settings
  2. SalesCal sends events to your webhook
  3. Your system processes and syncs to GHL
  4. More flexibility for custom logic