What are UTM parameters?

UTM parameters are tags added to a link so analytics shows where each visit came from. What the five tags mean, and how to name them.

The short answer: UTM parameters are short tags added to the end of a link. When someone clicks it, analytics tools such as GA4 read the tags and record which source, medium and campaign the visit came from. Always set source, medium and campaign, use lowercase, and keep one naming standard.

What UTM parameters are

Without them, much of your traffic from email, social posts, partner links and ads other than Google arrives as "direct" or "referral", and you cannot tell which campaign earned it. A tagged link looks like this:

https://example.com/pricing?utm_source=linkedin&utm_medium=paid-social&utm_campaign=q4-demo-offer

Everything after the ? is the tags, joined with &. The page loads exactly as normal. To add them to a URL, put a ? at the end, then each tag as name=value, joined with &. Or use the free UTM builder.

The five UTM parameters

  • utm_source: where the click comes from, such as linkedin, newsletter or google.
  • utm_medium: the type of traffic, such as cpc, paid-social or email.
  • utm_campaign: the campaign name, such as q4-demo-offer.
  • utm_term: optional, usually the keyword or audience.
  • utm_content: optional, which ad or link was clicked, useful for testing two versions.

Source, medium and campaign are the three to always set. GA4 uses the medium to place each visit into a channel group such as Paid Search, Paid Social or Email, so a medium GA4 does not recognise can leave visits unassigned.

Naming rules that keep reports clean

  • Use lowercase. UTMs are case-sensitive, so Facebook and facebook report as two different sources.
  • Use hyphens, not spaces. Spaces become %20 and are easy to mistype.
  • Pick one spelling per source, and use it everywhere.
  • Set source to the platform (linkedin, google, newsletter) and medium to the type of traffic (cpc, paid-social, email), so channel reports group correctly.
  • Write the names down. A shared list stops each person inventing their own.

The builder flags capitals, spaces and variants as you type, and its naming checker finds duplicate spellings in your existing reports.

Where to see UTMs in GA4

In GA4, open the traffic acquisition report under Reports, then Acquisition, and change the first column's dimension to Session source / medium or Session campaign. Menus and labels change from time to time, so look for those dimension names. Visits with no tags appear under direct or the default channel group, which is why consistent tagging matters.

UTMs in Google Ads

You do not need manual UTMs for GA4 to attribute Google Ads clicks when auto-tagging is on, because Google Ads passes campaign data to GA4 itself. Mixing the two can confuse reports, so choose deliberately. Manual UTMs are still useful when you want the same names to reach your CRM and other tools.

To add parameters to many ads at once, use the final URL suffix in Google Ads. Google says it can be set at account level (Admin, Account settings, Tracking template, Final URL suffix) and also at campaign, ad group, ad and keyword level. Lower levels override higher ones, so a suffix on a campaign silently replaces the account one. Google recommends the final URL suffix for parameters that should reach the landing page, and the tracking template for third-party trackers. {campaignid} is a documented ValueTrack parameter that fills in the campaign ID.

An example suffix: utm_source=google&utm_medium=cpc&utm_campaign={campaignid}. This example is ours, not Google's; test it before rolling it out.

Getting UTMs into your CRM

UTMs only help sales reporting if they reach the CRM. The usual way is hidden fields on your forms that capture the tags (and the ad click ID) when a visitor submits, and save them on the lead record. Without that step, the lead's source is "unknown" in the CRM even though GA4 knew it, which is one reason GA4 and CRM numbers never match.

  • 1. Create a field for each tag in the CRM (utm_source, utm_medium, utm_campaign, utm_term, utm_content, plus gclid).
  • 2. Add a hidden input with the same name to every form, including multi-step and embedded forms.
  • 3. Fill the hidden inputs from the address the visitor arrived on. The script below does that, and keeps the values for the rest of the visit so they survive navigation to a form page.
  • 4. Map the form fields to the CRM fields in HubSpot, Zoho, Salesforce or GoHighLevel, and carry them through lead or contact conversion into the deal.
  • 5. Test with a real submission from a tagged link.

Hidden fields only work if the input's name matches. A starting script (it needs your own testing, and should run only where your consent set-up allows it):

<script>
(function () {
  var keys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'gclid', 'gbraid', 'wbraid'];
  var q = new URLSearchParams(location.search), saved = {};
  try { saved = JSON.parse(sessionStorage.getItem('lead_src') || '{}'); } catch (e) {}
  keys.forEach(function (k) { if (q.get(k)) saved[k] = q.get(k); });
  try { sessionStorage.setItem('lead_src', JSON.stringify(saved)); } catch (e) {}
  document.addEventListener('DOMContentLoaded', function () {
    document.querySelectorAll('form').forEach(function (f) {
      keys.forEach(function (k) {
        var i = f.querySelector('[name="' + k + '"]');
        if (i && saved[k]) i.value = saved[k];
      });
    });
  });
})();
</script>

Some CRMs and form tools capture UTMs and click IDs on their own when their tracking code is installed. HubSpot, for example, says it fills a Google ad click id property from the GCLID. Check your tool first, and use the script for forms it does not cover. It saves values for the tab's visit only; for returning visitors you need a cookie, which brings consent into play. See POPIA and marketing tracking.

Once the click ID is captured, check how many leads keep it with the GCLID coverage checker. Setting this up is part of our GA4 and Tag Manager work.

Common mistakes

  • Tagging links between pages on your own site. It can overwrite where the visit really came from.
  • Mixed case and spelling variants that split one source into several.
  • Spaces and special characters in values.
  • Tagging Google Ads links by hand without deciding how they relate to auto-tagging.
  • Never reaching the CRM. Perfect GA4 tagging does not help if the lead record has no source.

Questions people ask

What does UTM stand for?

Urchin Tracking Module. Urchin was the analytics product Google bought that became Google Analytics.

How do I add UTM parameters to a URL?

Add a question mark to the end of the URL, then each tag as name=value, joined with ampersands. Always set utm_source, utm_medium and utm_campaign, use lowercase, and keep to one naming standard.

Are UTM parameters case-sensitive?

Yes. GA4 treats Facebook and facebook as two different values, so use lowercase consistently.

Do UTM parameters affect SEO?

Not directly. They change the link's address but not the page, and a canonical tag on the page tells search engines which version to index.

How do I get UTM parameters into my CRM?

Add hidden fields named after each tag to your forms, fill them from the address the visitor arrived on, and map them to CRM fields. Test with a real submission from a tagged link.

Find out what your UTMs are breaking.

The audit checks your tracking, UTMs and CRM source fields together.

Get the free audit