GoHighLevel UTM Tracking: How to Capture Lead Source, Medium and Campaign in the CRM
When lead source data disappears in GoHighLevel, the cause is usually in how UTM parameters travel from the landing page to the form to the contact record. UTM tracking does not give you perfect attribution, but it does give you a reliable picture of where your leads come from when it is set up correctly.
Table of Contents
- 01.What UTM tracking actually captures
- 02.The journey the data has to survive
- 03.What to check first
- 04.Hidden fields on the form
- 05.Mapping form fields to contact fields
- 06.Common reasons UTM data disappears
- 07.Testing UTM tracking
What UTM tracking actually captures
UTM parameters are tags you add to a link. They record the source, medium and campaign that brought a visitor to your site. When those parameters are passed into GoHighLevel and stored on the contact, you can see which marketing effort produced each lead. It is not perfect attribution, because a visitor can come from multiple sources before they convert, but it is far better than no source data at all.
The journey the data has to survive
For UTM data to reach the CRM, it has to survive a chain. The traffic source sends the visitor to a landing page with UTM parameters in the URL. The landing page has to capture those parameters. The form has to pass them through. GoHighLevel has to store them on the contact. If any link in that chain breaks, the data is lost and the contact arrives with no source information.
- 1.Traffic source sends the visitor with UTM parameters in the URL.
- 2.The landing page captures the parameters from the URL.
- 3.The form passes the parameters into hidden fields.
- 4.GoHighLevel maps the form fields to contact custom fields.
- 5.The contact record stores the source, medium and campaign.
What to check first
- Confirm the landing page URL actually carries the UTM parameters.
- Confirm the form has hidden fields to receive the UTM values.
- Confirm those form fields map to contact custom fields.
- Check a real test lead to see what landed on the contact.
- Confirm the custom fields exist and are named consistently.
Hidden fields on the form
The form needs hidden fields for UTM source, medium and campaign. These fields are not visible to the visitor, but they receive the values from the URL when the form loads. If the hidden fields are missing, the parameters have nowhere to go and are dropped. Confirm each UTM parameter you want to track has a matching hidden field on the form.
Mapping form fields to contact fields
A hidden field on the form only helps if it maps to a custom field on the contact. If the mapping is missing or points to the wrong field, the value never reaches the contact record. Confirm each hidden UTM field maps to the correct contact custom field and that the custom field exists in your account.
Common reasons UTM data disappears
The most common loss points are a landing page that strips the parameters, a form without hidden fields, a missing field mapping or a redirect between the ad and the form that drops the query string. A visitor who types your URL directly will never carry UTM data, which is expected. The problem is when paid traffic that should carry the data arrives without it.
- A redirect between the ad click and the landing page drops the query string.
- The form has no hidden fields to receive the parameters.
- The hidden fields exist but are not mapped to contact fields.
- The contact custom fields do not exist or were renamed.
- The visitor navigated to the form from another page and lost the URL parameters.
Testing UTM tracking
Test with a real link that carries UTM parameters. Click the link, fill out the form and open the contact that is created. Check the custom fields for source, medium and campaign. If they are populated, the chain works. If they are empty, walk back through the chain to find where the data dropped.
Frequently Asked Questions
How do I capture UTM data in GoHighLevel?
Add hidden fields to your form for UTM source, medium and campaign, map each to a contact custom field and make sure the landing page URL carries the parameters through to the form. Test with a real tracked link and confirm the values land on the contact.
Why is my UTM data missing from GoHighLevel contacts?
The most common causes are a redirect that drops the query string, a form without hidden fields, a missing mapping between the form field and the contact field or a custom field that does not exist. Walk back through the chain from the ad click to the contact to find where the data dropped.
Need help applying this to your business?

PPC, Conversion Tracking, CRM and Automation Specialist. Helping businesses generate qualified leads with Google Ads, accurate tracking and automated follow-up.
Related Guides
GoHighLevel Google Ads Lead Tracking: How to Preserve Lead Source and Campaign Data
Losing Google Ads lead source data in GoHighLevel usually comes from missing GCLID capture, broken field mapping or no attribution fields. This guide covers how to keep campaign data intact.
GoHighLevel Webhooks Not Working: How to Troubleshoot Failed Data Transfers
A webhook failure can be inside GoHighLevel or at the receiving endpoint. This guide covers how to use the workflow history and the HTTP response to find which side is failing.
GoHighLevel Forms Not Creating Contacts or Opportunities: What to Check
When a form submission does not create a contact or an opportunity, the gap is usually in the form settings, the workflow or the field mapping. This guide covers how to trace a form that silently fails.