Start Your Agency Starting an agency? Get 90 days free on Business, plus training to land your first client New agency? 90 days free on Business · 90 days
UTM Parameters Explained: How to Build, Name and Track Them
|
12 min read
|

UTM Parameters Explained: How to Build, Name and Track Them

A UTM parameter is a tag you add to the end of a URL so your analytics tool knows exactly where a visit came from. Get the five standard ones right and every channel report, from GA4 to your CRM, tells you which campaigns actually bring people in. Get them wrong, mix up the case, or let a redirect strip them, and you end up with "(not set)" rows and guesswork.

This guide covers the standard parameters, the newer GA4-only ones, how to build a tagged link for each channel, naming conventions, GA4's channel grouping rules, and the mistakes that quietly break tracking.

The short answer

Question Answer
What are the five standard UTM parameters? utm_source, utm_medium, utm_campaign, utm_term, utm_content.
Are there more than five now? GA4 also reads utm_id, utm_source_platform, utm_creative_format and utm_marketing_tactic. The last two aren't shown in GA4 reports yet.
Are UTM values case sensitive? Yes. "Facebook" and "facebook" are recorded as two different sources. GA4's channel grouping rules, however, are not case sensitive.
Does Google Ads need UTMs? No, if auto-tagging is on. Auto-tagging adds a gclid instead, which GA4 reads directly. Add UTMs only if you need the data outside Google's own reporting, for example in a CRM.
What happens if I put UTMs on an internal link? Visiting your own site with a UTM link resets the session's source to that UTM, overwriting how the person actually arrived. This is one of the most common tracking mistakes.
Will a redirect keep my UTMs? Only if the redirect passes the query string through. Many link shorteners, landing page builders and "www" redirects drop it by default.
Where do I see UTM data? In GA4 under Reports > Acquisition, or Explore with source/medium as a dimension. In most CRMs, UTMs are saved on the lead or contact record itself.

What each UTM parameter does

A UTM is just a query string parameter appended to a URL with ? and chained with &. For example:

https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale

The five standard parameters

  • utm_source: where the traffic comes from, for example google, newsletter, facebook, instagram.
  • utm_medium: the marketing medium, for example cpc, email, social, organic.
  • utm_campaign: the name of the specific campaign or promotion, for example spring_sale or webinar_oct.
  • utm_term: usually the paid keyword in search advertising. Rarely used outside search ads.
  • utm_content: tells apart different creatives, buttons or links pointing to the same destination within the same campaign, for example hero_banner vs footer_link.

GA4's extra parameters

GA4 recognises a few more, documented on Google's UTM parameter help page:

Parameter What it's for Status in GA4
utm_id A campaign ID, used to identify a specific campaign or promotion, often matched to an ad platform's own campaign ID. Reported.
utm_source_platform The platform that directed the traffic, for example which ad platform or tool generated the click. Reported.
utm_creative_format The type of creative, for example display, native, video or search. Accepted in the URL but not currently shown in GA4 reports.
utm_marketing_tactic The targeting approach used, for example remarketing or prospecting. Accepted in the URL but not currently shown in GA4 reports.

All UTM parameter values are case sensitive, per Google's documentation, so decide on a case convention and stick to it everywhere.

  1. Pick the destination URL. The page you want the click to land on, with no existing query string if you can help it.
  2. Decide on utm_source and utm_medium first. These two drive most reporting decisions, including GA4's channel grouping (see below), so get them consistent across every campaign before you worry about the rest.
  3. Name the campaign in utm_campaign using a convention you'll still recognise in six months, not just today.
  4. Add utm_term and utm_content only where they add information. Don't tag every link with every parameter out of habit; empty conventions create noise.
  5. Lowercase everything, join words with underscores or hyphens (pick one), and keep the same spelling every time, for example always black_friday, never blackfriday or Black-Friday on different links.
  6. Test the link before it goes live: paste it in a browser, confirm it loads the right page, and check the parameters show up correctly in GA4's DebugView or your CRM's test lead.

If you're using auto-tagging, Google Ads appends its own gclid parameter automatically and GA4 reads that directly through the Google Ads link, filling in source, medium, campaign, ad group and keyword without you writing a single UTM. Manual UTMs are only needed if that data has to reach a system outside the Google Ads to GA4 link, for example a CRM. When you do add manual UTMs on a Google Ads URL, put them in the Final URL suffix field rather than the Final URL itself, and don't duplicate source, medium or campaign values that auto-tagging already supplies, since Google's own guidance warns that mixing manual campaign tags with an existing gclid can cause data to be misattributed to the manual values.

Meta ads (Facebook and Instagram)

Meta's ad builder has a "Build a URL parameter" field under the website URL on the ad level, which supports dynamic parameters in double curly braces that Meta fills in automatically at the moment someone clicks. The commonly used ones are {{campaign.name}}, {{campaign.id}}, {{adset.name}}, {{adset.id}}, {{ad.name}}, {{ad.id}}, {{placement}} and {{site_source_name}}.

A typical template:

utm_source={{site_source_name}}&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_term={{adset.name}}&utm_content={{ad.name}}

Two things worth knowing before you rely on the name-based ones: you can't combine two dynamic parameters in a single field (so {{campaign.name}}_{{adset.name}} won't resolve), and if you rename a campaign after it's published, the dynamic value keeps resolving to whatever the name was at click time, which can desync historical rows. The ID-based parameters ({{campaign.id}}, {{adset.id}}, {{ad.id}}) stay stable through renames, so use those if you expect to rename things later.

Email

Most email platforms let you set a default UTM template once, so you don't type it per send. A simple pattern:

utm_source=newsletter&utm_medium=email&utm_campaign=2026_10_product_update

If a single email has more than one link to the same page, for example a "Read more" link and a button pointing at the same article, use utm_content to tell them apart, such as utm_content=top_button vs utm_content=bottom_link.

An Instagram bio only holds one link (or a link-in-bio page with several). Tag it so clicks from the bio don't get lumped in with everything else labelled "instagram":

https://example.com/offer?utm_source=instagram&utm_medium=social&utm_campaign=bio_link

If you run a link-in-bio page with multiple destinations, tag each destination separately with its own utm_content so you know which tile on the page gets clicked, not just that someone came from Instagram.

QR codes

A QR code just encodes a URL, so build the UTM link first, then generate the code from the finished, tagged URL. Because QR codes often end up on physical material you can't easily change, use utm_medium=qr_code (or similar) rather than lumping every print and digital piece under the same medium, and keep utm_campaign specific to the piece, for example storefront_window vs event_flyer, so you can tell which placement is actually driving scans.

Naming conventions

Pick a convention before you tag the first link, not after you have fifty inconsistent ones.

Element Convention Example
Case All lowercase utm_source=facebook, not Facebook
Word separator Pick one and never mix: underscore or hyphen black_friday_sale
Source The platform or publisher name, not a department google, facebook, newsletter, linkedin
Medium A small, fixed list you reuse everywhere cpc, paid_social, email, organic, referral, qr_code
Campaign Date or launch plus a short descriptor 2026_q4_webinar, not webinar2
Content What distinguishes this link from others in the same campaign hero_cta, footer_link, variant_b

Write the list down somewhere the whole team can see it. A shared sheet or a note in your CRM beats everyone inventing their own values, which is how "fb", "Facebook", "facebook_ads" and "FB Ads" end up as four different sources for the same channel.

GA4 default channel grouping: how utm_medium maps to a channel

GA4 assigns every session to a default channel using source, medium and campaign together, documented on Google's channel definitions page. The matching itself is not case sensitive, even though the stored values are. The rules that matter most for utm_medium:

  • Paid Search: source matches a known search engine and medium matches a "paid" pattern (contains "cp", or is "ppc", "retargeting", or starts with "paid").
  • Paid Social: source matches a known social platform (facebook, instagram, linkedin, and so on) and medium matches that same "paid" pattern.
  • Organic Social: medium is one of social, social-network, social-media, sm, or the source matches a known social platform with no paid medium.
  • Organic Search: source matches a known search engine, or medium is exactly organic.
  • Display: medium is one of display, banner, expandable, interstitial, cpm.
  • Email: source or medium matches email, e-mail, e_mail or e mail.
  • Affiliates: medium is exactly affiliate.
  • Referral: medium is one of referral, app, link.
  • SMS: source or medium is exactly sms.
  • Audio: medium is exactly audio.
  • Direct: source is (direct) and medium is (not set) or (none), meaning no UTM and no referrer at all.

The practical takeaway: if you want a campaign to land in Paid Social rather than Organic Social, utm_medium has to actually contain a paid signal like paid_social or paid, not just social. GA4 will happily file a paid Instagram click under Organic Social if the medium just says social.

Common mistakes

  • Tagging internal links. A UTM link clicked from one page of your own site to another resets attribution to that UTM, overwriting whatever brought the visitor there in the first place. UTMs are for links you share externally, never for your own navigation, buttons or internal campaigns.
  • Inconsistent case. Facebook, facebook and FACEBOOK are three different values in GA4's raw source field, even though channel grouping itself ignores case. That splits your acquisition reports and makes totals look lower than they are.
  • Redirects stripping the query string. Link shorteners, "www to non-www" redirects, and some page builders drop everything after the ? by default. Always click your own tagged link through to the final page and check the parameters are still there before it goes live.
  • Reusing a UTM across campaigns. If two different campaigns both use utm_campaign=promo, you can't tell them apart later, no matter how carefully you tagged source and medium.
  • No shared naming list. Without one, the same channel ends up logged under several different spellings, and nobody notices until a report looks wrong.
  • Treating utm_term and utm_content as mandatory. They add noise when there's nothing to distinguish. Use them when you actually have two things to tell apart, not on every link out of habit.
  • Forgetting UTMs don't survive every click chain. If a link goes through a third-party redirect, an app's in-app browser, or a URL shortener that doesn't pass parameters through, the UTM can be lost before GA4 ever sees it.

Running this through Inflowave

If your forms run through Inflowave, UTM tracking is handled automatically on submission: when someone fills in a form, Inflowave reads utm_source, utm_medium, utm_campaign, utm_term and utm_content from the page the form was on and saves them straight onto the lead record, along with Meta's fbclid, fbc and fbp identifiers where present. You don't need to configure anything for this to happen, and it works the same way for both full and partial form submissions.

That means every lead in your CRM already carries the campaign it came from, not just a generic "website" source, so you can see which specific campaign, not just which channel, produced a given lead without exporting anything to a spreadsheet.

Inflowave also has a tracked links feature for building shortened URLs, useful for an Instagram bio, a QR code, or any place a long tagged URL is awkward. You give it a destination URL (which can already include your UTM parameters) and it returns a short link with click analytics, including the utm_source, utm_medium and utm_campaign recorded against each click.

Related guides: Connect Facebook lead ads to your CRM, Meta conversion leads explained, Event Match Quality and Lead scoring.

Questions people ask

What is a UTM parameter versus a URL?

A URL is the full web address. A UTM parameter is extra information tacked onto the end of a URL, after a ?, that doesn't change which page loads but tells your analytics tool where the click came from. The page itself is identical whether or not the UTM is there.

How can I check my UTM parameters are working?

Click the finished link yourself and check the full URL still shows the parameters after the page loads, since a redirect can silently drop them. Then check the visit appears correctly in GA4's Realtime report or DebugView, or as a new lead with the right source in your CRM.

How do I make a UTM parameter?

Append ? to your URL, then add each parameter as key=value, joining extra ones with &. For example: https://example.com?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale. Several free UTM builder tools will assemble this for you if you'd rather not type it by hand.

Does Google Ads automatically add UTM parameters?

No. Google Ads auto-tagging adds a gclid parameter instead, which GA4 decodes through the Google Ads link to fill in source, medium and campaign automatically. Google Ads does not write utm_source or utm_campaign to the URL unless you add them yourself.

Are UTM parameters case sensitive?

Yes, the values themselves are. email and Email are recorded as two separate values in GA4's raw data. GA4's channel grouping rules that decide things like Paid Social versus Organic Social are not case sensitive, but your raw reports still split by exact case, so lowercase everything for consistency.

You can, but you shouldn't. A UTM on a link between two pages on your own site overwrites the visitor's original source with that UTM the moment they click it, destroying the attribution you were trying to protect. Reserve UTMs for links you share outside your own site.

Why does GA4 show "(not set)" for source or medium?

That usually means the visit arrived with no UTM parameters and no referrer header, for example from a bookmark, a typed URL, some apps' in-app browsers, or a link where a redirect stripped the query string along the way.

What's the difference between utm_campaign and utm_content?

utm_campaign names the overall promotion or initiative. utm_content tells apart two different links or creatives that point to the same destination inside that same campaign, for example two buttons in the same email.

Do UTM parameters affect SEO or page ranking?

No. Search engines generally treat a URL with UTM parameters as the same page as the one without, and UTMs don't influence rankings. They're purely for your own analytics.

What are utm_id, utm_source_platform, utm_creative_format and utm_marketing_tactic?

Four newer parameters GA4 recognises alongside the original five. utm_id and utm_source_platform are reported in GA4 today. utm_creative_format and utm_marketing_tactic are accepted in the URL but, per Google's own documentation, aren't currently shown in GA4 reports.

How do I see UTM parameters in my CRM?

That depends on the CRM. In Inflowave, UTM values submitted with a form are saved directly on the lead record, so you can see the exact source, medium and campaign for that lead alongside its other details, without running a separate report.

Only links you share outside your own website: ads, emails, social bio links, QR codes, partner placements. Links within your own site should never carry UTMs, since the visit was already attributed when they first arrived.

Matt Kielbasa

MATT KIELBASA

Instagram automation experts and Official Graph API Accesss

2026 OPERATOR REPORT

The Agency Profit Playbook Is In

How do 80+ agency operators rate their own pricing, retention, and margin? The Agency Profit Playbook has the benchmarks.

You can unsubscribe in one click. Privacy Policy

The Agency Profit Playbook 2026 cover