GHL CRM Mastery — GoHighLevel API v2 Skill
What This Does
Gives your agent full operational access to GoHighLevel — read, write, and real-time conversation management. Designed for CRM automation agents (appointment setting, lead qualification, pipeline management).
Contact Operations
- contacts list — List contacts with pagination
- contacts get — Full contact record by ID (name, email, phone, company, tags, custom fields)
- contacts search — Find contact by email
- contacts search-phone — Find contact by phone number
- contacts update — Update any contact field (company, tags, custom fields, etc.)
- contacts add-tags — Apply tags to a contact
- contacts remove-tag — Remove a tag from a contact
Conversation Operations (Real-Time)
- conversations list — List recent conversations
- conversations get — Full conversation history for a contact (last 20 messages with direction, type, timestamp)
- conversations send — Send SMS, email, or DM reply through GHL. This is how the agent responds to leads.
Notes
- notes add — Add research notes, call summaries, or interaction logs to a contact record
- notes list — Read existing notes for a contact
Pipeline & Opportunities
- opportunities list — List pipeline items
- opportunities get — Full opportunity details
- opportunities update — Move opportunity to a different pipeline stage
Calendars
- calendars list — List available calendars
- calendars events — List events for a calendar
Tags, Forms, Workflows
- tags list — List all tags in the location
- forms list — List forms
- forms submissions — Get submissions for a specific form
- workflows list — List workflows (read-only)
- workflows trigger — Trigger a workflow for a contact (NEVER create/edit/delete)
System
- health — Test GHL API connection
Real-Time Conversation Pattern
The agent uses this skill for instant lead response. The pattern:
First touch (new lead, no prior research):
contacts search-phoneorcontacts search— find the contactcontacts get— pull full recordnotes list— check for existing research- If no research notes → run identity verification (separate skill/process)
conversations get— read conversation history- Craft personalized response
conversations send— reply via GHLnotes add— log research findings + what was sent
Follow-up messages (contact already researched):
contacts get— pull record (already has research in notes)conversations get— read latest messages- Craft contextual reply (15-30 second target)
conversations send— replynotes add— brief log of interaction
Key principle: Research happens ONCE per contact. After that, the agent reads its own notes and the conversation history, then replies fast. The goal is real-time chat feel — under 30 seconds for follow-ups.
Prerequisites
Required environment variables (must be set in your .env file):
GHL_API_KEY=your-private-integration-token
GHL_LOCATION_ID=your-location-id
Required runtime: python3 (ships with macOS; verify with python3 --version).
Getting Your GHL Credentials
- Log into GoHighLevel → Settings → Integrations → Private Integrations → Create New
- Name it appropriately for your deployment
- Enable all required scopes:
- contacts.readonly, contacts.write
- conversations.readonly, conversations.write
- conversations/message.readonly, conversations/message.write
- opportunities.readonly, opportunities.write
- calendars.readonly, calendars.write
- calendars/events.readonly, calendars/events.write
- locations/tags.readonly, locations/tags.write
- locations/tasks.readonly, locations/tasks.write
- forms.readonly, workflows.readonly
- payments/transactions.readonly, locations.readonly
- invoices.readonly, invoices.write, users.readonly
- Copy the Private Integration Token →
GHL_API_KEYin.env - Settings → Business Info → copy Location ID →
GHL_LOCATION_IDin.env
Usage
All commands are run via the included Python CLI at {baseDir}/scripts/ghl_api.py:
export GHL_API_KEY=$(grep GHL_API_KEY ~/.openclaw/.env | cut -d= -f2)
export GHL_LOCATION_ID=$(grep GHL_LOCATION_ID ~/.openclaw/.env | cut -d= -f2)
# Test connection
python3 {baseDir}/scripts/ghl_api.py health
# Test contact lookup
python3 {baseDir}/scripts/ghl_api.py contacts list --limit 1
# Test conversation read
python3 {baseDir}/scripts/ghl_api.py conversations get --contact-id "YOUR_CONTACT_ID"
# Send a message
python3 {baseDir}/scripts/ghl_api.py conversations send --contact-id "CONTACT_ID" --message "Hello" --type sms
# Add a note
python3 {baseDir}/scripts/ghl_api.py notes add --contact-id "CONTACT_ID" --body "Research findings..."
Safety Guardrails (Non-Negotiable)
- Never create contacts — GHL creates contacts automatically when forms are submitted, SMS received, or DMs received. Creating contacts manually risks duplicates. If a contact doesn't exist, flag to the appropriate channel.
- Never delete contacts without explicit human confirmation in Slack
- Never send bulk SMS without human approval
- Never modify workflows — trigger only, never create/edit/delete
- Log every write operation — every
conversations sendandnotes addprints a timestamped log line - TCPA compliance — no SMS between 9PM and 8AM in the recipient's time zone (enforced by TCPA handler layer, not this skill)
Network Endpoints
This skill connects exclusively to the GoHighLevel API:
https://services.leadconnectorhq.com— GHL API v2 (all operations)
No other external endpoints are contacted. All credentials are read from local environment variables only.
Changelog
v1.3.0 (March 2026)
- Added
metadata.openclawfrontmatter declarations (requires.env, requires.bins, primaryEnv) for ClawHub security compliance - Added
{baseDir}references for portable skill paths - Added explicit network endpoint documentation
- Updated _meta.json with runtime and credential requirements
- Generalized agent references for broader deployment compatibility
v1.2.0 (March 2026)
- Added conversations send, notes list, contacts search-phone
- Real-time conversation pattern documentation
v1.0.0 (March 2026)
- Initial release: 24 endpoints covering contacts, conversations, notes, opportunities, calendars, tags, forms, workflows