Expert architect for GoHighLevel CRM with security-by-design, workflow architecture, and integration engineering. Use for: (1) API integration (OAuth2, scoping, key rotation, webhook verification), (2) Workflow architecture (error handling, idempotency, rollback, naming), (3) n8n ↔ GHL integration (webhooks, HTTP nodes, credentials), (4) Custom field/pipeline design, (5) Agency white-label (snapshots, sub-account isolation), (6) Security hardening (RBAC, least-privilege, Loi 25/PIPEDA), (7) GHL API v2 usage. Trigger on 'GoHighLevel', 'GHL', 'LeadConnector', 'HighLevel API', 'GHL workflow', 'GHL webhook', 'GHL n8n', 'GHL security', 'GHL custom fields', 'GHL snapshot', 'GHL OAuth', or any GHL architecture/integration/security task.
Expert system for designing secure, production-grade GoHighLevel implementations with emphasis on architecture patterns, security-by-design, and integration engineering.
| If the question is about… | Use this skill instead |
|---|---|
| n8n workflow design, architecture, MCP tools | n8n-workflow-architect |
| n8n node config, expressions, validation | n8n-node-expert |
| n8n Code node processing of GHL payloads (JS/Python) | n8n-code-nodes |
This skill uses a progressive-disclosure approach. The SKILL.md covers decision-making, architecture principles, and quick-reference patterns. For deep implementation details, read the appropriate reference file:
| Topic | Reference File | Read When |
|---|
| OAuth2, API keys, RBAC, webhook verification, data protection | references/security_patterns.md | Any security, auth, or compliance question |
| Workflow error handling, idempotency, rollback, naming | references/workflow_architecture.md | Building or debugging GHL workflows |
| n8n ↔ GHL webhook pipelines, HTTP nodes, credentials | references/n8n_integration.md | Any n8n + GHL integration work |
| API v2 endpoints, payloads, rate limits, pagination | references/api_reference.md | API calls, endpoint specifics, error codes |
| Snapshot governance, sub-account isolation, agency ops | references/agency_governance.md | White-label, multi-tenant, agency architecture |
Context7:resolve-library-id → libraryName: "GoHighLevel"
Context7:query-docs → query: "<specific question>"
marketplace.gohighlevel.com/docs/ and help.gohighlevel.comWhen a user asks to build something in GHL, follow this decision sequence:
Before designing any workflow, API integration, or customization:
| Need | Pattern | Security Implication |
|---|---|---|
| Real-time event processing | GHL Webhook → n8n | Verify signatures, validate payloads |
| Scheduled data sync | n8n Cron → GHL API | Use OAuth2 with auto-refresh or PIT, not legacy keys |
| User-triggered action | GHL Workflow → Custom Webhook → n8n | Authenticate the webhook endpoint |
| Bi-directional sync | GHL Webhook + n8n HTTP Request | Idempotency keys on both sides |
| Bulk data operations | n8n scheduled batch → GHL API | Burst rate limit awareness (100/10s), pagination |
Every GHL implementation should satisfy these before going live:
Authentication & Authorization
Data Protection
Workflow Security
Audit & Monitoring
https://services.leadconnectorhq.comVersion: 2021-07-28 headerstartAfter parameter), max 100 per pageGHL's visual workflow builder supports triggers (form submit, tag added, pipeline stage change, appointment events, custom webhook inbound) and actions (send SMS/email, add tag, create opportunity, HTTP webhook out, conditional branch, wait, math operations on custom fields).
Key constraint: Workflows are per-location (sub-account). Agency-level automation requires cross-location patterns — see references/agency_governance.md.
Custom fields are the backbone of any serious GHL implementation. They store lead scores, lifecycle stages, compliance flags, and integration sync IDs.
Field types: text, number, date, dropdown, checkbox, textarea, phone, monetary, file upload.
Naming convention (enforced in this skill):
{domain}_{entity}_{attribute}
Examples:
security_consent_date — when the contact gave marketing consentintegration_n8n_sync_id — unique ID for n8n dedupscoring_lead_score — behavioral lead scorecompliance_dsar_requested — DSAR flag for Loi 25GHL supports both inbound (external → GHL via Custom Webhook trigger) and outbound (GHL → external via Custom Webhook action) webhooks.
Outbound webhook payloads include contact data plus trigger-specific data (appointment, opportunity, etc.). The payload structure uses {{contact.field}} template variables — see references/api_reference.md for full payload schemas.
Inbound webhooks require the workflow to have a Custom Webhook trigger, which generates a unique URL. External systems (n8n, Zapier) POST JSON to this URL to trigger the workflow.
GHL Workflow Trigger (e.g., Opportunity Stage Change)
↓
Custom Webhook Action → POST to n8n webhook URL
Headers: X-GHL-Signature (Ed25519 — see security_patterns.md)
Body: { contact, opportunity, location, timestamp }
↓
n8n Webhook Node receives POST (native webhook auth or header validation)
↓
n8n Code Node: Process payload (no crypto in v2.0 sandbox — signature verified at webhook level)
↓
n8n processes data (enrich, route, sync to external system)
↓
(Optional) n8n HTTP Request → GHL API to update contact/tag
n8n receives data from external source
↓
Generate deterministic sync_id (hash of source + external_id)
↓
GHL API: Search contact by custom field "integration_n8n_sync_id"
↓
If exists → PUT /contacts/{id} (update)
If not → POST /contacts/ (create with sync_id in custom fields)
↓
Log operation for audit trail
GHL Form: "Data Access Request" submitted
↓
Workflow: Tag contact "compliance_dsar_pending"
↓
Custom Webhook → n8n
↓