Skills ghl-crm
GoHighLevel CRM integration — manage contacts, pipelines, conversations (SMS/email/WhatsApp), calendars, appointments, and workflows through the GHL API v2. The definitive GHL skill for OpenClaw. Use when managing leads, booking appointments, sending follow-ups, or automating your CRM.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/aiwithabidi/ghl-crm" ~/.claude/skills/openclaw-skills-ghl-crm && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/aiwithabidi/ghl-crm" ~/.openclaw/skills/openclaw-skills-ghl-crm && rm -rf "$T"
manifest:
skills/aiwithabidi/ghl-crm/SKILL.mdsource content
GHL CRM — GoHighLevel Integration for OpenClaw
Complete GoHighLevel CRM integration. Manage contacts, pipelines, conversations, appointments, and workflows through the GHL API v2.
Quick Start
export GHL_API_KEY="your-private-integration-token" export GHL_LOCATION_ID="your-location-id" python3 {baseDir}/scripts/ghl_api.py contacts search "john@example.com"
Authentication
GHL uses Private Integration Tokens (API v2). Get yours from:
- Go to Settings → Integrations → Private Integrations in your GHL sub-account
- Create a new integration, enable the scopes you need
- Copy the API key — this is your
GHL_API_KEY
The
GHL_LOCATION_ID is your sub-account/location ID (found in Settings → Business Info or the URL).
Base URL:
https://services.leadconnectorhq.com
Auth header:
Authorization: Bearer <GHL_API_KEY> + Version: 2021-07-28
Available Commands
Contact Management
# Search contacts by email, phone, or name python3 {baseDir}/scripts/ghl_api.py contacts search "query" # Get contact by ID python3 {baseDir}/scripts/ghl_api.py contacts get <contactId> # Create a new contact python3 {baseDir}/scripts/ghl_api.py contacts create '{"firstName":"John","lastName":"Doe","email":"john@example.com","phone":"+15551234567"}' # Update contact python3 {baseDir}/scripts/ghl_api.py contacts update <contactId> '{"tags":["vip","hot-lead"]}' # Delete contact python3 {baseDir}/scripts/ghl_api.py contacts delete <contactId> # List contacts (with optional limit) python3 {baseDir}/scripts/ghl_api.py contacts list --limit 20
Pipeline & Opportunity Management
# List all pipelines python3 {baseDir}/scripts/ghl_api.py pipelines list # List opportunities in a pipeline python3 {baseDir}/scripts/ghl_api.py opportunities list <pipelineId> # Get opportunity details python3 {baseDir}/scripts/ghl_api.py opportunities get <opportunityId> # Create opportunity python3 {baseDir}/scripts/ghl_api.py opportunities create '{"pipelineId":"...","stageId":"...","contactId":"...","name":"Deal Name","monetaryValue":5000}' # Update opportunity (move stage, update value) python3 {baseDir}/scripts/ghl_api.py opportunities update <opportunityId> '{"stageId":"new-stage-id","status":"won"}' # Delete opportunity python3 {baseDir}/scripts/ghl_api.py opportunities delete <opportunityId>
Conversations (SMS, Email, WhatsApp)
# List recent conversations python3 {baseDir}/scripts/ghl_api.py conversations list # Get conversation messages python3 {baseDir}/scripts/ghl_api.py conversations get <conversationId> # Send SMS python3 {baseDir}/scripts/ghl_api.py conversations send-sms <contactId> "Hello! Following up on our call." # Send email python3 {baseDir}/scripts/ghl_api.py conversations send-email <contactId> '{"subject":"Follow Up","body":"<p>Hi there!</p>","emailFrom":"you@domain.com"}'
Calendar & Appointments
# List calendars python3 {baseDir}/scripts/ghl_api.py calendars list # Get free slots python3 {baseDir}/scripts/ghl_api.py calendars slots <calendarId> --start 2026-02-16 --end 2026-02-17 # Create appointment python3 {baseDir}/scripts/ghl_api.py appointments create '{"calendarId":"...","contactId":"...","startTime":"2026-02-16T10:00:00Z","endTime":"2026-02-16T10:30:00Z","title":"Discovery Call"}' # List appointments python3 {baseDir}/scripts/ghl_api.py appointments list <calendarId> # Update appointment python3 {baseDir}/scripts/ghl_api.py appointments update <appointmentId> '{"status":"confirmed"}' # Delete appointment python3 {baseDir}/scripts/ghl_api.py appointments delete <appointmentId>
Workflows
# Add contact to workflow python3 {baseDir}/scripts/ghl_api.py workflows add-contact <workflowId> <contactId> # Remove contact from workflow python3 {baseDir}/scripts/ghl_api.py workflows remove-contact <workflowId> <contactId>
Key API Endpoints Reference
| Resource | Method | Endpoint |
|---|---|---|
| Search contacts | GET | |
| Get contact | GET | |
| Create contact | POST | |
| Update contact | PUT | |
| List pipelines | GET | |
| List opportunities | GET | |
| Create opportunity | POST | |
| List conversations | GET | |
| Send message | POST | |
| List calendars | GET | |
| Get free slots | GET | |
| Create appointment | POST | |
Rate Limits
GHL API v2 enforces rate limits:
- General: 100 requests/10 seconds per location
- Bulk operations: 10 requests/10 seconds
- The script auto-retries on 429 with exponential backoff (up to 3 retries)
Integration Patterns
Lead Capture → CRM Pipeline
- Capture lead via form/chatbot
with lead datacontacts create
to add to pipelineopportunities create
to trigger nurture sequenceworkflows add-contact
Appointment Booking Flow
to find the right calendarcalendars list
to get availabilitycalendars slots
to book the slotappointments create- GHL auto-sends confirmation via configured workflow
Follow-Up Automation
to find unresponded conversationsconversations list
for contextcontacts get- Generate follow-up with AI
orconversations send-smssend-email
Credits
Built by M. Abidi | agxntsix.ai YouTube | GitHub Part of the AgxntSix Skill Suite for OpenClaw agents.
📅 Need help setting up OpenClaw for your business? Book a free consultation