Tracking lead sources in GoHighLevel is incredibly useful if you can actually see where your leads are coming from. With just a few tweaks, you can pass UTM parameters like utm_source, utm_medium, and utm_campaign into your GoHighLevel forms and store them directly inside each contact record. This gives you a clear picture of what’s working so you can optimize your ad spend, funnels, and campaigns with confidence.

Prerequisite

Before you dive into this tutorial, make sure your website or landing page is set up to preserve UTM parameters. If you’re using a dedicated landing page with a form on it, you may not need to do anything extra. But if users click around to different pages before converting, you’ll want to follow my Persistent UTM Tracking Guide to keep those parameters intact. Once that’s done, I’ll walk you through how to capture that UTM data inside GoHighLevel forms, pass it into custom fields, and connect it directly to each new contact so you never have to guess where a lead came from again.

How to Implement

Step 1: Create UTM Custom Fields

  1. Log in to your GoHighLevel account and navigate to the Settings page

  2. In the left-hand menu, click Custom Fields

  3. In the top right-hand corner click New Folder

  4. Name the folder Attribution

  5. For the object type, select Contact

  6. Now within that folder click Add Field

  7. Choose Single Line and click Next

  8. Name the field utm_source

  9. Make sure the group is set to Attribution

  10. Click Save

Repeat steps 6–10 for the following UTM parameters (or just the ones you plan to track):

  • utm_source (we created this one together)

  • utm_campaign

  • utm_medium

  • utm_term

Step 2: Add Hidden Fields to Your Form

  1. Go back to your GoHighLevel homepage

  2. On the left-hand menu, click Sites

  3. In the top navigation, select Forms

  4. Find the form you want to use and open it in the editor

  5. In the form builder, go to the Custom Fields tab

  6. Locate the Attribution group

  7. Drag each UTM field into your form

  8. Set each one to Hidden so users don't see them

  9. Click Save 🎉

That's It

GoHighLevel will automatically populate those hidden fields with UTM values, as long as the parameter names match the field names exactly. Once a lead submits the form, their contact record will include all the UTM data passed through the URL, giving you clean, reliable attribution.

Keep Reading