Agency GoHighLevel Configuration
Setting up agency-level GoHighLevel integration for client sync and field mapping
Overview
The Agency GHL configuration is a platform-level GoHighLevel connection that handles:
- Custom field bootstrap — Creates standardized custom fields across all client GHL locations
- Client contact sync — Pushes client business data into GHL as agency-level contacts
- Token management — Manages the agency GHL OAuth token for bulk operations
This is separate from per-client GHL connections (which each client authorizes individually).
Setting Up Agency GHL
- Navigate to Settings → Agency GHL
- Enter your agency GHL OAuth credentials:
- Access Token — From your GHL agency OAuth flow
- Refresh Token — For automatic token renewal
- Location ID — Your agency's GHL location ID
- Click Save
Getting Your Agency OAuth Token
- Create a GHL Marketplace app (see the deployment guide for full setup)
- Use the OAuth flow with your agency's GHL account
- Copy the resulting access and refresh tokens into the Agency GHL settings
Bootstrapping Custom Fields
When you connect GHL for a new client, the platform needs certain custom fields to exist in that client's GHL location — for example, fields to store call summaries, outcomes, and recording URLs.
Bootstrap Fields creates these fields automatically:
- Go to Settings → Agency GHL
- Click Bootstrap Fields
- The system creates the standard set of custom fields in all connected GHL locations:
- Call datetime
- Call outcome
- Call summary
- Call duration
- Recording URL
- Transcript
- Sentiment
- Qualification status
- And more (12 fields total)
You only need to run this once per client, but it's safe to re-run — existing fields are detected and skipped.
Syncing Client Data
Sync All pushes your client records into GHL as contacts:
- Go to Settings → Agency GHL
- Click Sync All
- Each active client is created or updated as a contact in your agency's GHL location
For individual clients:
- Open the client detail page
- In the Agency GHL section, click Sync
- Only that client's data is pushed
What Gets Synced
| Platform Field | GHL Contact Field |
|---|---|
| Business Name | Company name |
| Contact Name | First/Last name |
| Phone | Phone |
| Service Type | Tags |
| Client Status | Custom field |
Token Health
GHL access tokens expire periodically. The platform automatically refreshes them using the stored refresh token. To check token health for a specific client:
- Open the client detail page
- Look for the GHL Token Status indicator
- Green = healthy, Yellow = expiring soon, Red = expired
If a token expires and can't be refreshed, you'll need to re-authorize that client's GHL connection.
Troubleshooting
| Issue | Cause | Fix |
|---|---|---|
| Bootstrap fails with "field already exists" | Fields were created manually | Safe to ignore — existing fields are skipped |
| Sync creates duplicates | Client was previously synced as a different contact | Merge duplicates in GHL, then re-sync |
| Token expired | GHL token TTL exceeded | Re-authorize the client's GHL connection |
| Missing custom fields on new client | Bootstrap wasn't run for this location | Run Bootstrap Fields again |
Related
- Connecting GoHighLevel — Per-client GHL OAuth setup
- Agent Tools — How agents use GHL tools during calls
