🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

GoHighLevel + Slack: smarter lead scoring and routing

Lisa Granqvist Partner Workflow Automation Expert

Your pipeline shouldn’t feel like a guessing game. But when new GoHighLevel contacts come in, someone still has to check profiles, skim activity, decide if they’re serious, tag them, then figure out who should own the follow-up.

This GoHighLevel Slack automation hits sales managers first, because speed-to-lead becomes a daily fire drill. Agency operators feel it when multiple client funnels run at once. And if you’re the marketing lead handing off MQLs, you already know how messy “ownership” can get.

This workflow scores every new contact with GPT-4, categorizes them (Hot/Warm/Cold), tags and assigns them automatically, then alerts Slack only when it actually matters. You’ll see how the whole thing works, what you need, and where teams usually trip up.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: GoHighLevel + Slack: smarter lead scoring and routing

The Problem: Lead qualification slows down follow-up

New leads arrive when they arrive. Sometimes it’s one at a time. Sometimes it’s a burst after an ad starts spending or a form gets shared. The painful part is what happens next: someone has to open the record, look for context, guess intent, and decide what to do with it. And if that person is busy (they are), “quick check” turns into “I’ll get to it later.” Meanwhile, the hot prospect who was ready to talk cools off, and the team wastes energy chasing people who were never a fit.

It adds up fast. Here’s where it breaks down in real life.

  • Reps work the inbox in different ways, so two identical leads get totally different treatment.
  • Tags get applied late or not at all, which makes reporting and follow-up sequences unreliable.
  • Ownership gets fuzzy when more than one person can claim a lead, and the prospect notices.
  • Slack notifications become noise if every lead triggers one, so the team stops trusting alerts.

The Solution: AI lead scoring, tagging, and routing (with Slack only for Hot)

This workflow watches for new contacts added to GoHighLevel, then pulls the full contact profile and recent engagement activity so the decision isn’t based on a blank form submission. It packages that context into a clear AI prompt, and GPT-4 returns a score from 1–100, a category (Hot, Warm, or Cold), plus a short explanation your team can actually understand. From there, n8n applies the right tag back in GoHighLevel and assigns the lead to the right person or team. Only Hot leads generate a Slack message, which means Slack stays high-signal instead of becoming another feed everyone mutes. Finally, the workflow returns a clean webhook response so you can confirm it ran successfully.

The workflow starts at an inbound webhook tied to “new contact.” Next, it enriches the lead with profile and engagement details, then has GPT-4 evaluate intent and fit. After that, simple threshold checks route the lead: tag it, assign it, and notify Slack only when it’s truly urgent.

What You Get: Automation vs. Results

Example: What This Looks Like

Say your team gets 20 new contacts a day. Manually, a rep might spend about 5 minutes per lead checking the profile, scanning engagement, tagging, and deciding who owns it, which is roughly 100 minutes daily. With this workflow, the only “human time” is zero: the webhook triggers instantly, GPT scoring runs in the background, and Slack only pings for Hot leads. You’re back to selling instead of sorting, and the follow-up happens while the prospect is still paying attention.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • GoHighLevel to create, tag, and assign contacts
  • Slack to notify your team about Hot leads
  • OpenAI API key (get it from your OpenAI dashboard)

Skill level: Intermediate. You’ll connect accounts, paste API credentials, and adjust a few IDs and thresholds.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A new GoHighLevel contact hits the webhook. The workflow begins as soon as a contact is created, so you’re not waiting on a daily batch job or a manual export.

Contact and engagement data get pulled in. n8n uses HTTP requests to retrieve the full profile and recent activity, then normalizes the fields so the AI sees consistent inputs (names, source, notes, engagement signals).

GPT-4 scores and explains the lead. An AI agent evaluates the context and returns a score (1–100), a category, and a short rationale. Then the workflow interprets that output so your thresholds can work reliably.

Tagging, assignment, and Slack routing happen automatically. Hot leads get tagged and assigned to your top rep, plus a Slack alert for fast follow-up. Warm leads go to a secondary rep. Cold leads get tagged and routed to your nurture path, and the workflow returns the result without bothering Slack.

You can easily modify the scoring thresholds to match your pipeline stages based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Webhook Trigger

Set up the inbound webhook that starts the workflow when a new contact is created.

  1. Add or open Inbound Contact Webhook and set HTTP Method to POST.
  2. Set Path to ghl-new-contact.
  3. Set Response Mode to lastNode so Return Webhook Result sends the response.
  4. Copy the generated webhook URL and use it in your lead capture form or GoHighLevel webhook configuration.
Tip: Trigger testing works best when you send a real webhook payload that includes body.contact_id, since downstream nodes depend on it.

Step 2: Connect GoHighLevel and Set Config Variables

Configure the GoHighLevel API variables used across the HTTP request nodes.

  1. Open Config Variables Setup and replace each placeholder in the assignments:
  2. Set ghlApiBaseUrl to your base URL, for example https://rest.gohighlevel.com/v1.
  3. Set ghlApiKey to your GoHighLevel API key.
  4. Set topRepUserId, secondaryRepUserId, and nurtureTeamUserId to the correct user IDs for assignment.
  5. Set slackChannel to the channel ID for alerts, e.g. #sales.
  6. Verify Retrieve Contact Profile uses the URL ={{ $('Config Variables Setup').first().json.ghlApiBaseUrl }}/contacts/{{ $('Inbound Contact Webhook').first().json.body.contact_id }} and sets the Authorization header to ={{ 'Bearer ' + $('Config Variables Setup').first().json.ghlApiKey }}.
  7. Verify Pull Engagement Activity uses the URL ={{ $('Config Variables Setup').first().json.ghlApiBaseUrl }}/contacts/{{ $('Inbound Contact Webhook').first().json.body.contact_id }}/activities and the same Authorization header expression.
⚠️ Common Pitfall: Leaving placeholder values in Config Variables Setup will cause all GoHighLevel HTTP requests to fail with authentication errors.

Step 3: Normalize Data and Assemble the AI Input

Map raw contact data into a consistent structure that the AI model can score reliably.

  1. In Normalize Contact Info, confirm the field mappings use expressions like ={{ $('Retrieve Contact Profile').first().json.name || 'Unknown' }} and ={{ $('Pull Engagement Activity').first().json }} to standardize the contact data.
  2. In Assemble AI Payload, set leadData to ={{ { "demographics": { "name": $json.name, "email": $json.email, "phone": $json.phone, "source": $json.source }, "behavior": { "tags": $json.tags, "customFields": $json.customFields, "engagementData": $json.engagementData } } }}.
  3. Confirm the execution flow: Retrieve Contact ProfilePull Engagement ActivityNormalize Contact InfoAssemble AI Payload.

Step 4: Set Up AI Lead Scoring

Configure the LLM to score the lead based on the assembled payload and parse the result.

  1. Open AI Lead Evaluation and set Model to gpt-4o.
  2. Ensure the prompt instructions define scoring and output in JSON format (as provided in the node).
  3. Set the input content to ={{ JSON.stringify($json.leadData) }} in responses.
  4. Credential Required: Connect your openAiApi credentials to AI Lead Evaluation.
  5. Keep Interpret Score Output as-is to parse the AI response and normalize score, category, and contact details.
Tip: Interpret Score Output is resilient to non-JSON replies, so it will still categorize leads even if the model returns text.

Step 5: Configure Routing, Tagging, Assignments, and Slack Alerts

Route leads by score, apply tags, assign reps, and notify Slack for hot leads.

  1. In Branch Hot Threshold, verify conditions include ={{ $json.score }} gte 80 for hot leads.
  2. In Branch Warm Threshold, verify conditions include ={{ $json.score }} gte 40 for warm leads; the false branch routes to cold.
  3. In Apply Hot Lead Tag, set Method to PUT and JSON Body to { "tags": ["Hot Lead"] } with Authorization header ={{ 'Bearer ' + $('Config Variables Setup').first().json.ghlApiKey }}.
  4. In Apply Warm Lead Tag and Apply Cold Lead Tag, set the same endpoint pattern ={{ $('Config Variables Setup').first().json.ghlApiBaseUrl }}/contacts/{{ $json.contactId }} and update JSON Body to the matching tag.
  5. In Assign Top Rep, Assign Secondary Rep, and Assign Nurture Team, set JSON Body to ={{ { "userId": $('Config Variables Setup').first().json.topRepUserId } }}, ={{ { "userId": $('Config Variables Setup').first().json.secondaryRepUserId } }}, and ={{ { "userId": $('Config Variables Setup').first().json.nurtureTeamUserId } }} respectively.
  6. Configure Slack Hot Lead Alert to post to Channel ={{ $('Config Variables Setup').first().json.slackChannel }} and keep the provided alert message.
  7. Credential Required: Connect your slackApi credentials to Slack Hot Lead Alert.
  8. Confirm the action flow: Apply Hot Lead TagAssign Top RepSlack Hot Lead AlertReturn Webhook Result, while warm and cold branches end at Return Webhook Result.

Step 6: Test and Activate Your Workflow

Run a manual test to validate the scoring and routing logic, then activate the workflow for production.

  1. Click Execute Workflow and send a sample webhook request with a valid contact_id to Inbound Contact Webhook.
  2. Confirm a successful run: Return Webhook Result should return JSON like {"success": true, "message": "Lead scored and tagged successfully"}.
  3. Verify in GoHighLevel that the correct tag was applied and the contact was assigned to the proper user based on the score.
  4. For hot leads, verify the Slack notification posted with the lead details.
  5. Toggle the workflow to Active so it runs automatically on new inbound contacts.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • GoHighLevel API credentials can expire or lack permissions. If things break, check the API key and base URL in your “Config Variables Setup” node first.
  • If you’re processing bursts of contacts, OpenAI requests can get rate-limited or take longer than expected. When the AI output comes back empty, slow the flow down with batching or increase your timeout before downstream tagging runs.
  • The default AI prompt is rarely “your” prompt, honestly. Add your definition of Hot/Warm/Cold early (and include a couple real examples), or you’ll keep overriding scores and the team will stop trusting the routing.

Frequently Asked Questions

How long does it take to set up this GoHighLevel Slack automation?

About 30 minutes if your API keys and Slack access are ready.

Do I need coding skills to automate lead scoring and routing?

No. You will mostly copy credentials, paste IDs, and tweak the score thresholds.

Is n8n free to use for this GoHighLevel Slack automation workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API usage, which is usually a few cents per lead scoring run.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this GoHighLevel Slack automation workflow for different lead stages?

Yes, but keep it simple at first. You can change the Hot/Warm/Cold cutoffs in the “Branch Hot Threshold” and “Branch Warm Threshold” IF nodes, then adjust which GoHighLevel tagging HTTP request runs. Common tweaks include adding a “Super Hot” tier, routing by pipeline/source, or sending Warm leads to a nurture owner instead of a rep.

Why is my GoHighLevel connection failing in this workflow?

Usually it’s the API key or base URL in your configuration node. Regenerate the GoHighLevel API key if you suspect it’s been rotated, then update every HTTP request that uses it. Also check the assigned user IDs: invalid IDs can make the “assign” call fail even if tagging works. If it fails only during busy periods, you may be hitting rate limits and need batching.

How many leads can this GoHighLevel Slack automation handle?

A lot, as long as your n8n plan and API limits match your volume. On n8n Cloud, your monthly execution cap depends on your plan, and each lead usually consumes multiple executions because of enrichment, AI scoring, and tagging. If you self-host, there’s no platform execution limit, but your server resources and GoHighLevel/OpenAI rate limits still apply. In practice, most small teams run hundreds to thousands of leads a month without changing much.

Is this GoHighLevel Slack automation better than using Zapier or Make?

Often, yes, especially once you add enrichment plus AI plus multi-branch routing. n8n handles complex logic cleanly, and you don’t pay extra just because you used a few IF branches and HTTP requests. Self-hosting is a big deal if your lead volume spikes. Zapier or Make can still be fine for a lightweight “tag then notify” setup, but this workflow benefits from flexibility. If you want help deciding, Talk to an automation expert.

Once this is live, every new lead gets the same fast, consistent treatment. The workflow handles the sorting and routing so your team can focus on conversations that turn into revenue.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal