GHL CRM for Realtors
Scanned@danielfoch
npx machina-cli add skill @danielfoch/ghl-crm-for-realtors --openclawGHL CRM for Realtors
Use this skill when a user wants realtor CRM actions in GoHighLevel (GHL), including lead follow-up, pipeline movement, appointment booking context, and messaging workflows.
Required Environment
Set these variables before running the scripts:
HIGHLEVEL_TOKEN(Private Integration token)HIGHLEVEL_LOCATION_ID(sub-account location ID)
Optional runtime variables:
PYTHONUNBUFFERED=1
Setup
If the user asks to connect or set up GHL, run:
python3 scripts/setup-wizard.py
The wizard validates credentials and tests API connectivity.
Primary Script
Use the helper script for direct actions:
python3 scripts/ghl-api.py <command> [args...]
Common commands for realtor workflows:
test_connectionsearch_contacts [query]get_contact [contact_id]create_contact [json]update_contact [contact_id] [json]list_opportunitieslist_pipelineslist_conversationssend_message [contact_id] [message]list_calendarsget_free_slots [calendar_id] [start_date] [end_date]list_workflowsadd_to_workflow [contact_id] [workflow_id]
Realtor-Focused Playbooks
New Lead Intake
search_contactsto prevent duplicates.- If not found,
create_contactwith source tags (for example:buyer,zillow,open-house). - Add next-step task/note using supported contact endpoints.
Pipeline Progress
list_opportunitiesto inspect active deals.- Move stage using the opportunity update command path in
ghl-api.py. - Confirm stage and status in response payload.
Follow-Up Messaging
- Resolve contact first (
search_contactsorget_contact). - Send message with
send_message. - Re-check conversation history with
list_conversations.
Appointment Assist
list_calendarsget_free_slotsfor date range.- Use the calendar endpoints in script for appointment creation if requested.
Safety Rules
- Never print or echo raw tokens in chat output.
- Prefer dry informational reads before write actions when intent is ambiguous.
- Validate contact/opportunity IDs from GHL responses instead of guessing.
- If an API error returns 401/403, stop and ask for corrected scopes or token.
References
Load these only as needed:
references/contacts.mdreferences/opportunities.mdreferences/conversations.mdreferences/calendars.mdreferences/troubleshooting.md
Overview
Enables realtor CRM actions in GoHighLevel (GHL) via API v2, including contact lookup and updates, opportunity/pipeline management, messaging, calendar slots, and workflow enrollment. It helps automate lead follow-ups, move deals through the pipeline, and coordinate appointments with precision.
How This Skill Works
The skill uses HIGHLEVEL_TOKEN and HIGHLEVEL_LOCATION_ID for authentication and exposes actions through the ghl-api.py script. Commands like search_contacts, update_contact, list_opportunities, send_message, and add_to_workflow perform targeted CRM tasks. A setup wizard validates credentials and tests API connectivity before use.
When to Use It
- Prevent duplicate leads by running search_contacts before creating a new contact during New Lead Intake.
- Update a contact record after a call or meeting with notes, stage tags, and next steps.
- Inspect and move opportunities through stages in the pipeline during Pipeline Progress.
- Send follow-up messages after outreach and then re-check conversation history with list_conversations.
- Coordinate appointments by listing calendars and retrieving free slots for scheduling.
Quick Start
- Step 1: Set HIGHLEVEL_TOKEN and HIGHLEVEL_LOCATION_ID (optionally PYTHONUNBUFFERED=1).
- Step 2: Run the setup wizard to validate credentials: python3 scripts/setup-wizard.py.
- Step 3: Use the primary script to perform actions, e.g. python3 scripts/ghl-api.py search_contacts <query> or python3 scripts/ghl-api.py create_contact [json].
Best Practices
- Always validate contact/opportunity IDs from GHL responses before performing updates.
- Run test_connection first to confirm API connectivity and token validity.
- When creating contacts, include source tags (e.g., buyer, zillow, open-house) to aid later segmentation.
- Use get_free_slots and list_calendars to avoid double bookings and ensure availability.
- If you encounter 401/403 errors, stop and update scopes or token before retrying.
Example Use Cases
- A realtor searches for a lead to prevent duplicates, then creates a new contact with source tags like buyer and open-house.
- After a listing presentation, update_contact adds notes and moves the contact to the next step in the pipeline.
- During pipeline review, list_opportunities to inspect deals and update_stage to advance the opportunity.
- Following a call, send_message delivers a tailored follow-up and list_conversations retrieves the latest chat history.
- An agent schedules a showing by listing calendars and getting free slots for the desired date range.