Skip to content

After this module you can extend GoHighLevel with n8n: receive every new lead from a GHL workflow, qualify it with rules + AI, and write the result back to the contact as tags and a note.

What it does

A GoHighLevel workflow (trigger: Contact Created or Form Submitted) sends the lead to POST /webhook/ghl/lead. n8n:

  1. Normalizes either GHL webhook shape (Custom Webhook or standard Webhook with customData).
  2. Scores the lead instantly with transparent rules (business email, phone, detail, source, budget, urgency).
  3. Asks OpenAI how well the lead fits your offer (fit score, intent, budget, summary, next step).
  4. Blends both (40/60) into hot / warm / cold, then adds the tag (ai-hot, ai-warm, ai-cold, plus ai-qualified) and a qualification note to the contact via the LeadConnector API.
  5. Responds with the result and branches hot leads to a sales alert.

?dry_run=true runs only steps 1–2 and writes nothing, so the module is fully testable without GHL or OpenAI.

GHL can then use the tags to trigger its own follow-up: hot leads into a "call now" pipeline stage, cold leads into a nurture sequence.

Flow

GHL Lead Webhook → Settings → Normalize GHL Payload → Has Contact ID? ─no→ 400
                                                          └yes→ Rule Score → Dry Run? ─yes──────────────┐
                                                                                      └no→ AI Qualify ──┴→ Combine Scores → Write to GHL? ─no→ Respond
                                                                                                                              └yes→ Add Tag → Add Note → Respond + Hot Lead? → Alert Sales

Verification status (n8n 2.43.6)

  • Dry run: 14/14 checks without credentials (hot/warm/cold tiers, both GHL payload shapes, normalization, missing-id 400).
  • GHL write-back: verified against a mock GoHighLevel API in n8n (AI step replaced by a fixed answer). It received POST /contacts/{id}/tags {"tags":["ai-hot","ai-qualified"]} and POST /contacts/{id}/notes {"body": …} with Version: 2021-07-28 and the Bearer token. The blended score was correct (0.4·90 + 0.6·85 = 87).
  • Not tested against real GoHighLevel or OpenAI. Endpoints follow third-party API references (no official page found in research); confirm with one real contact: WITH_CREDS=1 GHL_CONTACT_ID=… ./test/test.sh.

Files

File Tier Purpose
lesson.md Free Step-by-step build + GHL setup
workflow/starter.json Free Webhook, normalizer and rule scoring
workflow/learner.json Learner Finished bridge
workflow/code/ Learner Readable copies of the Code nodes
exercises.md Learner Practice tasks (incl. building a mock GHL API)
solutions.md Learner Exercise solutions
notes.md Private Learning log
sell/ Private Offer, video script, blog post