UTM parameters that actually matter for short links
Five UTM fields exist; only four matter. Honest naming patterns that keep your campaign data clean for short links across email, social, and print.
UTMs are the small text additions glued onto the end of a URL — ?utm_source=newsletter&utm_medium=email&utm_campaign=spring-launch — that tell your analytics tool where a click came from. Five UTM fields exist in the standard. Most posts on the topic explain all five with equal weight, which is misleading because in practice only four matter, two carry almost all the information, and one is universally misused.
This post covers what each parameter is actually for, the naming patterns that keep multi-channel data clean, the mistakes that quietly corrupt your reports, and the patterns that make UTMs useful with short links specifically. By the end you'll know how to tag a campaign once and have the data still make sense six months later when you've forgotten what utm_content=v3 meant.
What each UTM parameter is for
UTM stands for Urchin Tracking Module, named after Urchin Software — the analytics company Google bought in 2005 to build what became Google Analytics. The five fields, in priority order:
- utm_source — where the link is shared. Examples:
newsletter,twitter,linkedin,partner-blog,print-magazine. - utm_medium — the type of channel. Examples:
email,social,cpc,print,referral. - utm_campaign — the marketing initiative the link is part of. Examples:
spring-launch,q2-pricing-test,affiliate-2026. - utm_content — distinguishes between multiple links inside the same campaign — usually for A/B tests or different placements. Examples:
header,footer,red-button,variant-b. - utm_term — paid search keyword (legacy). Used almost exclusively by Google Ads.
The order matters because it reflects how analytics tools group data. Source plus medium together becomes the "channel" dimension in Google Analytics. Campaign overlays a time-bounded view. Content gives you variant-level attribution inside that. Term gives you paid-search keyword granularity if (and only if) you run paid search.
What to fill in and what to skip
The honest list, by use case:
Always fill in: utm_source, utm_medium, utm_campaign. These three are the minimum that makes the click attribution meaningful. Skip any of them and the click ends up in your "(not set)" or "direct" bucket, which is the data graveyard. If your tags survive the redirect but the destination still reports "(direct)" traffic, the short link debug guide on UTM stripping walks through the apps and extensions that quietly drop query parameters between the click and the page view.
Fill in for tests: utm_content. Use this when you have two or more links in the same campaign, in the same source, in the same medium, and you want to tell them apart. Header vs footer link in the same email. Red button vs blue button in the same ad. Article variant A vs variant B in the same A/B test.
Skip unless paid search: utm_term. The original definition was the keyword someone searched for. Modern paid platforms autopopulate this from the keyword that triggered your ad. Setting it manually for non-paid-search clicks just confuses the data. Leave the field empty for organic, social, email, and print.
Naming patterns that keep data clean
The single biggest mistake teams make is inconsistent naming. The same medium gets typed three ways — email, Email, and e-mail — and the analytics tool treats all three as separate channels. Six months later your "email" report shows 30% of the traffic because the other 70% is hiding under capitalisation variants.
Three rules that solve 90% of this:
- Lowercase everything. Always. UTM values are case-sensitive on the analytics side.
Twitterandtwitterare different channels. - Use hyphens, not spaces.
spring-launchnotspring launch(the URL encoder will turn the space into%20and the value reads asspring%20launchin reports — ugly, but more importantly, prone to typos). - Pick one vocabulary and stick with it. Either
socialorsocial-media, never both. Eitherpaidorcpc, never both. Eitherlinkedinorli, never both.
The second-biggest mistake is putting variable data into utm_campaign. Your campaign is the marketing initiative — spring-launch, q2-pricing-test. It is not the date you ran the link, the customer's email address, or a session ID. UTM values become permanent dimensions in your analytics database. Putting unique values in there blows up your dashboard with millions of one-click "campaigns".
UTMs and short links specifically
Here's where short links matter to UTM hygiene. A short link redirects from linked.codes/p/sale to whatever long URL you set, and the long URL can carry UTMs. There are two patterns:
Pattern A — UTMs on the long URL only. The short link is clean (/p/sale); the redirect destination has the UTMs (https://example.com/landing?utm_source=...). Pros: the printed or shared short link looks clean and shareable. Cons: every click on a given short link gets the same UTMs, so you can't differentiate by where the short link was shared.
Pattern B — UTMs on the short link's query string. The short link picks up UTMs from the inbound URL and forwards them to the destination. Same /p/sale short link, but linked.codes/p/sale?utm_source=twitter vs ?utm_source=newsletter lets the same short link carry different attribution per share. Pros: one short link, many channels. Cons: the URL is ugly to share manually.
For most marketing use, Pattern A wins for printed and broadcast channels (one channel = one set of UTMs = one short link), and Pattern B wins for digital share where the URL gets shared by multiple parties. Linked.Codes supports both — set UTMs on the destination URL via the link editor, or pass them in the inbound short URL and they'll forward through. If your site runs WordPress, double-check the parameter-passing settings: the URL shortener for WordPress comparison covers a Pretty Links default that quietly strips inbound UTMs unless you flip a checkbox.
A short link without UTMs is a measurement decision, not a default. Decide deliberately whether the click counts as channel-attributed or just "direct".
A UTM URL builder
Plug in your channel details. The widget produces a clean URL with the right encoding so you can paste it into your link editor or shorten it.
The widget normalises capitalisation and replaces spaces with hyphens — both common manual mistakes. If you're tagging more than a handful of URLs in a week, set up the same normalisation in your link tool's defaults so the team can't fight the convention.
Tag your campaigns once. Use the same short link across email, social, and print, with channel-aware redirects.
See how short links handle UTMsCommon mistakes that quietly corrupt data
Five issues that show up in almost every UTM audit:
- Inconsistent capitalisation.
Emailvsemail. Fix at the source — normalise on tag-creation. - Spaces in values.
spring launchbecomesspring%20launch. Fix by hyphenating. - Date or session data in utm_campaign.
q2-pricing-test-2026-05-15-bob@example.comis not a campaign; it's a unique row. Use date prefixes only when needed for grouping (q2-spring-launch). - Missing utm_medium. Causes Google Analytics to report the click as "(not set)" — the data hole everyone ignores until they realise it's 25% of their traffic.
- Tagging your own internal links. A click from your homepage to your pricing page does not need UTMs; tagging it overwrites the original referrer attribution and hides the actual source. Only tag external-to-internal traffic.
The audit tool: open Google Analytics, look at the Source/Medium report, and scroll through the values. Anywhere you see two variants of the same name (twitter and Twitter, email and e-mail) is a corruption point. Fix the templates that are producing them; you can't retroactively merge the old data without exporting and reprocessing.
When NOT to use UTMs
Three cases where adding UTMs hurts:
- On organic-search click destinations. Your ranking pages should not carry UTMs in their canonical URL — Google indexes the URL with parameters, you create duplicate-content issues, and the resulting clicks get attributed as "campaign" rather than "organic search". Strip UTMs from canonical URLs.
- On internal navigation. Already covered above — UTMs are for external-to-internal attribution.
- On forms or paywall checkout pages. UTM-tagged URLs in form actions can interfere with form submission and analytics integrations that expect a clean POST URL. Pass UTMs as hidden form fields if you need to track form-completion attribution.
Attribution windows and last-click bias
UTMs encode a single click moment, but most analytics tools attribute conversions on a last-click basis by default — so the conversion that happened a week after the email click gets credited to whatever click happened immediately before the conversion, which might be a direct visit. Two implications worth knowing.
First, UTMs only capture the first interaction. If a reader clicks your newsletter link, browses for a few minutes, leaves, and returns later via a Google search, the second visit overwrites the email attribution in last-click models. The fix isn't UTM-side — it's switching to a multi-touch attribution model in your analytics tool, or accepting that single-touch UTM data is a directional signal rather than ground truth.
Second, the default 30-day attribution window in Google Analytics 4 means UTM tags from a click 31 days ago no longer get credit for the conversion. For B2B campaigns with long sales cycles, the GA4 default underreports your top-of-funnel UTM channels. Extend the window to 90 days if your customers take a month or more to buy.
For short links specifically, the click-to-conversion gap is where attribution gets thin. The short link knows the click happened; the destination's analytics either credit it correctly (if the UTMs forward) or lose it (if the user navigated away and returned later). Belt-and-braces tagging — UTMs on the short link's destination plus a campaign-specific landing page that sets a tracking cookie — is the most defensible setup for cross-session attribution.
Related reading
- Tracking links in email — how email-specific tracking layers on top of UTMs
- Branded short links — why the domain matters — why your short-link domain affects click rate, alongside UTMs that affect attribution
- Vanity short URL strategies — naming patterns that work alongside UTM tagging
- Time-limited short links — expiring URLs done right — how to retire campaign-tagged links cleanly when the campaign ends
What's the difference between utm_source and utm_medium?
utm_source is where the link is shared (newsletter, twitter, partner-blog). utm_medium is the type of channel (email, social, referral). One news website is a source; the medium it sits in is referral. Don't put the same value in both.
Are UTM parameters case-sensitive?
Yes. Google Analytics treats Email and email as two separate values. Standardise on lowercase across all your tagging — the easiest convention to remember and the one most analytics dashboards already assume.
Will UTMs in my URLs affect my SEO?
Only if you fail to set canonical tags. Search engines index the URL with parameters; if your canonical points to the unparameterised URL, the parameters become harmless. If you don't set canonicals, you risk duplicate-content treatment.
Can I use a fifth UTM parameter for something custom?
The standard defines five fields and most analytics tools only recognise those five. Adding a custom utm_xyz field works in Google Analytics 4 if you configure a custom dimension to capture it, but it won't show up in default reports. Easier to use utm_content for the secondary attribute.
How do UTMs interact with link shorteners?
The shortener stores the destination URL (with UTMs) and redirects to it. The UTMs reach the destination as if the user had typed them. Some shorteners also let you pass UTMs through the short URL itself, which forwards them dynamically — useful when one short link gets shared across multiple channels.
Do I need utm_term anymore?
Almost never. utm_term was for paid-search keyword attribution and Google Ads autopopulates it now. Setting it manually for organic, social, or email links creates noise without value. Leave it empty unless you run paid search and have a reason to override autopopulation.
What's the maximum length of a UTM URL?
HTTP URLs have no hard maximum, but most browsers and servers handle URLs up to about 2,000 characters reliably. UTMs typically add 100 to 200 characters total — well under any practical limit. The bigger issue is shareability; long URLs are uglier in print or social. That's where short links earn their keep.
Sourcesshow citations
- Google Analytics 4 — Custom URL builder for campaigns — https://support.google.com/analytics/answer/10917952
- Wikipedia: Urchin (software) — https://en.wikipedia.org/wiki/Urchin_(software)
- IETF RFC 3986: Uniform Resource Identifier (URI) Generic Syntax — https://www.rfc-editor.org/rfc/rfc3986
- MDN: encodeURIComponent — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
- Google Search Central: rel="canonical" — https://developers.google.com/search/docs/crawling-indexing/canonicalization
- Google Ads auto-tagging documentation — https://support.google.com/google-ads/answer/3095550
Try it on your own domain
Branded short links and dynamic QR codes, on your subdomain or your own domain. One-time purchase, no per-click fees.