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.
On this page
- What SourceLoop captures from GoHighLevel Chat
- Before you start
- Step 1: Install the SourceLoop snippet on the client site
- Step 2: Confirm the GoHighLevel chat widget is live on tracked pages
- Step 3: Run a verification chat
- Where to see GoHighLevel chat conversations in SourceLoop
- Contacts Hub
- Attribution dashboard
- Funnel reports
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)
- 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.
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)
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. Drill into a contact for the visitor’s complete pre-chat browsing history, useful context before the rep (or automation) replies.
Attribution dashboard
For the cross-channel view, 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.
Funnel reports
In 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.
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 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.