UTM parameters are short tags added to the end of a link, such as ?utm_source=facebook&utm_medium=paid_social&utm_campaign=spring_offer, that tell your analytics and your CRM where a visitor came from. To track lead sources properly, tag every link you control with at least utm_source, utm_medium and utm_campaign, use one lowercase naming convention across the team, capture the values in hidden fields when a form is submitted, and store both the first and the latest source on each contact. Then report on booked calls, deals and revenue by source, not just clicks, so budget moves to the campaigns that actually produce customers.
Why most businesses cannot say where their customers come from
Ask most small businesses which campaign brought in last month's best customer and the answer is a guess. Analytics shows visits by channel, the ad platforms each claim credit for the same sale, and the CRM has a lead source field that either says Website for everyone or holds whatever the lead typed into a How did you hear about us box.
The fix is not a new tool. It is a simple discipline: every link that brings people to your site carries a tag saying where it came from, and every form passes that tag into the contact record. Once the source travels with the lead, you can follow it through your pipeline stages to a booked call, a deal and revenue.
What UTM parameters are
UTM parameters are standard query-string tags that analytics tools read automatically. Google Analytics recommends always setting the first three below, and warns that missing ones show up as (not set) in reports. Values are case sensitive, so Google, google and GOOGLE are counted as three different sources.
- utm_source: where the click came from, such as google, facebook, newsletter or partner-name
- utm_medium: the type of traffic, such as cpc, paid_social, email, organic or referral
- utm_campaign: the campaign or offer, such as spring_offer or free_audit
- utm_content: which ad, creative or link was clicked, useful for comparing versions
- utm_term: the paid keyword, mostly used for search ads
- utm_id: an optional campaign ID that can be used to join cost data from other systems
A naming convention that survives a busy team
UTMs only work if everyone writes them the same way. One person typing Facebook and another typing fb splits the same channel in two, and a report that cannot be trusted is soon ignored. Write the rules down once, keep them in a shared sheet or link builder, and make it the only place links are created.
Choose medium values that match the default channel rules in Google Analytics, so the same traffic lands in the right channel in both GA4 and your CRM. Our guide to tracking AI search traffic in GA4 shows how those channel groups work.
- Lowercase everything and use hyphens or underscores, never spaces
- Keep a fixed list of sources and mediums, and add to it rather than inventing new spellings
- Name campaigns by offer and date, such as free-audit-2026-11, so they sort and stay unique
- Use utm_content for the ad or creative name, so you can see which version brought the lead
- Never put personal data such as names or email addresses in a URL
How to tag each channel
Most of the work is done once per channel, using each platform's own settings, so new ads and emails are tagged automatically.
On Google Ads, keep auto-tagging switched on, because the gclid it adds powers conversion tracking and GA4 reporting. Google Analytics uses the auto-tagged values for source and medium when both are present, so adding UTMs through a final URL suffix does not break anything, and it gives your CRM a readable campaign name. Google's ValueTrack parameters such as {campaignid} and {keyword} fill in the details automatically.
On Meta, add UTMs in the ad's URL parameters field using dynamic values such as {{campaign.name}}, {{adset.name}} and {{ad.name}}. Meta fills these from a snapshot of the names when the ad is first published, so rename campaigns before launch, not after.
- Email: most email platforms can add UTMs to every link automatically; set source to your list or newsletter name and medium to email
- Google Business Profile: tag the website button with source google, medium organic and a campaign such as gbp, so map traffic is not lumped in with search, as in our Google Business Profile guide
- Social profiles and link-in-bio pages: one tagged link per profile
- Partners, directories and sponsorships: a unique tagged link for each, so referral value is visible
- Offline: tagged links behind QR codes on print, signage and events
- Internal links on your own site: never tag them, because a new UTM overwrites the visitor's real source
Getting the source into your CRM
This is where most setups break. UTMs sit in the address of the page a visitor lands on, but the form is often on another page, filled in minutes later, or on a booking widget. Unless something carries the values across, the CRM never sees them.
The reliable pattern is to read the UTMs and click IDs such as gclid when the visitor first lands, keep them in a first-party cookie or browser storage, and write them into hidden fields on every form, chat and booking widget. Store two sets on the contact: the first source, which never changes, and the latest source, which updates on each new conversion. First touch tells you what creates demand, and latest touch tells you what converts it.
Some CRMs do this for you. GoHighLevel records a first and a latest attribution on each contact from its own forms, surveys, calendars and chat widget, and its external tracking script can capture the same data from third-party forms. If you use another CRM or a custom site, an automation tool such as n8n can collect the values and update the contact, as covered in our guide to connecting your CRM with n8n.
- Capture utm_source, utm_medium, utm_campaign, utm_content and utm_term, plus the landing page and referrer
- Store click IDs such as gclid and fbclid, which you will need for offline conversion tracking
- Keep first-touch fields read-only once they are set
- Test every form and booking path with a tagged link before trusting the data
Leads that never visit your website
Instant forms on Meta and lead form assets on Google Ads collect the lead inside the platform, so there is no landing page and no UTM. For these, the integration that sends the lead to your CRM should also send the campaign, ad set and ad names, and map them into the same source fields your web forms use. Our guide to Meta lead ad quality covers the trade-offs of instant forms in more detail.
Phone calls and walk-ins need the same thinking. Use tracking numbers per channel where the volume justifies it, and give staff a short, fixed picklist for the source on manual entries rather than a free-text box.
Reports that change where the budget goes
With the source stored on every contact, the useful reports are simple. Group leads by source, medium and campaign, then follow them down the pipeline. A campaign with cheap leads and no booked calls is a cost, not a win, and you can only see that in the CRM.
The next step is sending those outcomes back to the ad platforms, so their bidding optimises for customers rather than form fills. Our guide to offline conversion tracking explains how to do that with Google Ads and Meta, using the click IDs you are now storing. If you need help with the campaigns themselves, our media buying service covers setup, tracking and optimisation.
- Leads, booked calls, deals won and revenue by source and medium
- Cost per booked call and cost per customer by campaign, not just cost per lead
- First-touch versus latest-touch source, to see which channels start and which close
- Share of leads with no source, which should fall towards zero as tagging improves
Mistakes that quietly break lead source tracking
Most broken setups fail in the same few ways. Check for these before you trust any source report.
- Mixed capitalisation and spellings that split one channel into several
- UTMs on internal links, which overwrite the real source mid-visit
- Forms on a different page or domain that never receive the stored values
- Redirects or link shorteners that strip the query string
- Lead form integrations that send the contact but not the campaign
- A free-text lead source field that staff fill in differently every time
Frequently asked questions
What are UTM parameters?
UTM parameters are tags added to the end of a URL that tell analytics tools and CRMs where a visitor came from. The main ones are utm_source, utm_medium and utm_campaign, with utm_content and utm_term for extra detail. They do not change the page, only what is recorded about the visit.
Which UTM parameters are required?
Google Analytics recommends always using utm_source, utm_medium and utm_campaign. Missing values appear as not set in reports, which makes the data harder to use. Add utm_content when you want to compare ads or links within the same campaign.
Are UTM parameters case sensitive?
Yes. Google Analytics treats Facebook and facebook as two different sources, so mixed capitalisation splits your data. The simplest rule is to write every UTM value in lowercase and keep a fixed list of approved values.
How do I get UTM data into my CRM?
Capture the UTM values when a visitor lands, keep them in a cookie or browser storage, and pass them into hidden fields on your forms, chat and booking tools. Store both the first and the latest source on the contact. Some CRMs, including GoHighLevel, capture this automatically from their own forms and widgets.
Should I add UTM parameters if Google Ads auto-tagging is on?
You can. Keep auto-tagging on, because it powers conversion tracking, and Google Analytics uses the auto-tagged values when both are present. Adding UTMs through a final URL suffix gives your CRM readable campaign and keyword names that it cannot get from the click ID alone.
Do UTM parameters affect SEO?
Not when used correctly. UTMs belong on links from ads, emails and other sites, not on internal links within your own website. Make sure your pages have a canonical tag pointing to the clean URL, so search engines do not treat tagged versions as separate pages.
Sources
- URL builders: Collect campaign data with custom URLs, Google Analytics Help
- Traffic-source dimensions, manual tagging, and auto-tagging, Google Analytics Help
- Use URL Tags for Tracking, Meta for Developers
- Understanding Attribution Source, HighLevel Support Portal
