# How to track lead source in GoHighLevel Chat

Bring real source attribution into your GoHighLevel chat workflow so each conversation surfaces which campaign or channel actually drove the lead.

Source: https://sourceloop.ai/help/track-lead-source-in-gohighlevel-chat/
Updated: 2026-05-28

---

GoHighLevel Chat is the messaging surface tied into the rest of the GHL stack, pipelines, automations, SMS, email, calendar. The whole ecosystem leans on conversations as the entry point. The marketing piece, knowing which campaign sourced each chat, isn't in GoHighLevel's reporting. SourceLoop fills it in.

Three steps, about ten minutes, and every GHL chat afterwards carries the attribution context behind it.

## What SourceLoop captures from GoHighLevel Chat

Each chat conversation routed through GoHighLevel lands in SourceLoop with:

- **The visitor's marketing source** (organic, paid, referral, social, direct)
- **UTM parameters** captured from the landing URL
- **Pages visited** in chronological order before the chat
- **Time on site** ahead of the conversation
- **Number of distinct sessions** before they reached out
- **Email + name** captured during the conversation
- **First-touch landing page** of the visitor's journey
- **Source of the converting session** that produced the chat
- **Device, country, browser**

## Before you start

You'll need:

- A **SourceLoop workspace** ([free trial](https://app.sourceloop.ai/sign-up))
- **Edit access** to the site (or GHL funnel) hosting your chat widget
- A **GoHighLevel sub-account** with the chat widget installed on the client site

## Step 1: Install the SourceLoop snippet on the client site

Inside SourceLoop, head to **Setup -> Tracking code** in the sidebar and copy the snippet.

![SourceLoop Setup page with the tracking code snippet ready to copy](/help/screenshots/sourceloop-tracking-code-script.png)

Add the snippet to the `<head>` of the client's site:

- **GoHighLevel funnel / website**: open the funnel or site builder, click the page's gear icon, and paste the snippet into the **Head Tracking Code** field
- **WordPress**: a header-injection plugin or `header.php`
- **Other CMS / static site**: the global layout template

Wherever the GHL chat widget appears, the SourceLoop snippet needs to load alongside it.

## Step 2: Confirm the GoHighLevel chat widget is live on tracked pages

GoHighLevel's chat widget doesn't need any per-account configuration to play nicely with SourceLoop. Once the snippet runs on the same page as the widget, chat conversations from that page get attributed.

Quick verification:

- The GHL chat widget is **active** in your sub-account settings (Sites -> Chat Widget)
- The widget code is **embedded** on the client site, alongside SourceLoop
- Your chat flow **captures email** at some point (pre-chat survey, mid-conversation, or post-conversation summary)

> **Chats from GoHighLevel-hosted booking URLs and outbound texts aren't attributable**
> Conversations that start through GoHighLevel's direct widget URLs, outbound SMS, or hosted forms skip your tracked site, so SourceLoop has no marketing journey to attach. Route campaigns to a page on the client's site that loads the GHL chat widget.

## Step 3: Run a verification chat

Visit the client site in an **incognito tab** with `?utm_source=test&utm_medium=verify&utm_campaign=ghl-chat-check` glued to the URL. Open the GHL chat widget and start a conversation, sharing an email you can access.

Within seconds of the email being captured, the conversation should appear at the top of the **Contacts Hub** in SourceLoop with the three test UTM values stamped on the record.

## Where to see GoHighLevel chat conversations in SourceLoop

### Contacts Hub

Each GHL chat that captures an email becomes a contact row at [app.sourceloop.ai/contacts](https://app.sourceloop.ai/contacts). Drill into a contact for the visitor's complete pre-chat browsing history, useful context before the rep (or automation) replies.

![SourceLoop Contacts Hub showing a GoHighLevel chat lead with the visitor's full pre-chat journey](/help/screenshots/sourceloop-lead-journey-demo.webp)

### Attribution dashboard

For the cross-channel view, [app.sourceloop.ai/dashboards/traffic](https://app.sourceloop.ai/dashboards/traffic) groups GHL chat conversations by source, medium, and campaign. Particularly useful for agencies reporting to clients on which channels are pulling weight.

![SourceLoop attribution dashboard with GoHighLevel chat conversations grouped by source and campaign](/help/screenshots/sourceloop-attribution-dashboard.webp)

### Funnel reports

In [app.sourceloop.ai/funnels](https://app.sourceloop.ai/funnels/), build a funnel ending in "GoHighLevel chat". Slice by source, landing page, or device to find the highest-converting routes from first visit to chat start.

![SourceLoop funnel report ending in a GoHighLevel chat conversion step](/help/screenshots/sourceloop-funnel.png)

For paid acquisition feeding the chat queue, mirror GHL conversations back to **Google Ads, Meta, and LinkedIn as offline conversions** so the bidding algorithms train on actual qualified conversations instead of vanity clicks. [Connect your Google Ads account](/help/connect-google-ads/) covers the wiring.

## Frequently Asked Questions

### Does this work on every GoHighLevel plan?

Yes. The GoHighLevel chat widget loads the same way across Starter, Unlimited, and SaaS Mode tiers, and SourceLoop attaches attribution to conversations regardless of which GoHighLevel plan you (or your sub-account clients) are on.

### I'm an agency running multiple GoHighLevel sub-accounts. Can I track each client separately in SourceLoop?

Yes. Create a separate website/workspace in SourceLoop for each sub-account, install that workspace's snippet on the corresponding client site, and the conversations stay isolated per client.

### GoHighLevel chat captures phone, email, or both. Will SourceLoop attach attribution either way?

SourceLoop uses email as the primary lead identifier. If your chat captures email (even via the post-conversation summary), attribution attaches. Phone-only conversations stay as phone leads inside GoHighLevel.

### Will my GoHighLevel automations and pipeline stages still update when SourceLoop is added?

Yes. SourceLoop runs in parallel on its own side, capturing attribution. GoHighLevel's automations, pipeline updates, SMS follow-ups, and email sequences continue to fire exactly as configured.

### I send SMS replies through GoHighLevel. Is the original chat still attributed?

Yes. The chat conversation is when SourceLoop attaches the source. Subsequent channels (SMS replies, follow-up emails, calls) all hang off the same contact record in GoHighLevel, and SourceLoop's attribution stays attached.
