GoHighLevel lead source showing as direct

Short answer
GoHighLevel shows a lead as direct when there was no referring site and no tracking link. That usually means links without UTM tags or click IDs, a website without HighLevel's external tracking script, forms embedded in an iframe (not supported), UTM values that don't match HighLevel's paid rules, or leads created by hand or through another tool.
How to fix it
- See a lead's attribution. Open the contact's Activity tab: first and latest attribution are at the bottom.
- Tag your links. HighLevel counts paid search from utm_source=adwords or a Google or Microsoft click ID, and paid social from values like fb_ad. Then organic, social, referral and direct.
- Install external tracking. Settings > External Tracking > Copy Script, and paste it on your own website before the closing body tag.
- Use real forms, not iframes. External tracking needs an HTML form with named fields; iframe and widget forms aren't supported.
- Report by source. Add the Lead Source Report widget to a dashboard. Opportunities without a source show as N/A.
- Filter widgets. Add attribution and UTM filters to custom dashboard widgets.
Common questions
- Why do Google Ads leads show as organic?
- HighLevel's reporting counts Google Ads leads from first attribution as paid search, with utm_source=adwords and a click ID.
- Leads I added by hand say CRM. Is that right?
- Yes; leads created in the app or through another tool get that kind of source.
Rather we set it up?
We set this up for you as part of a done-for-you package, quoted on a free call.
Revenue dashboard
One screen that shows where your leads come from, how many book and show, and what they turn into, by source and service.
More reporting fixes
GoHighLevel call reporting missing calls
Usually the date range or filter, the wrong report, your own Twilio number's webhooks, or forwarded calls all marked completed.
Related fixes
GoHighLevel form not submitting, or not creating a contact
Check Submissions first. Then deduplication settings, an out-of-date embed code, sticky contact on shared devices, or a form HighLevel didn't build.
Read the fixGoogle lead form leads not syncing to GoHighLevel
Check the right Google Ads account is connected, the form is enabled and mapped, and sync shows Active. Local Services Ads leads don't sync.
Read the fix
Want GoHighLevel set up and running for you?
Book a free 15-minute call. Tell us what you sell and where your leads come from, new account or the one you have, and we'll tell you what we'd set up, how long it takes and what it costs.