What is a UTM parameter?
A UTM parameter is a tag added to a URL to tell analytics tools where a click came from. Each parameter has a name (like utm_source) and a value (like newsletter). When someone clicks the link, your analytics platform records those values and attributes the visit to the right campaign, channel, and creative.
UTMs originated with Urchin, the analytics company Google acquired in 2005 to build what became Google Analytics. The parameter names have not changed since.
How to build a UTM URL
- Paste your destination URL — the page you want users to land on.
- Set the campaign source — where the traffic is coming from (e.g.,
newsletter,linkedin). - Set the campaign medium — the channel type (e.g.,
email,cpc,social). - Name the campaign — a unique identifier you will recognize in reports (e.g.,
q2_product_launch). - Add term and content if needed — only for paid search keywords (
utm_term) or A/B test variants (utm_content). - Click Build URL, copy, and use it in your campaign.
A correctly built UTM looks like this:
https://example.com/landing?utm_source=newsletter&utm_medium=email&utm_campaign=q2_launch
UTM parameters explained
utm_source, utm_medium, and utm_campaign are mandatory in Google Analytics 4. Without them, sessions get lumped into "direct" or "(not set)" and your attribution is gone.
The 5 UTM mistakes that break campaign attribution
Note for implementation: This is the unique angle of the page. If Trackingplan has internal stats on the most common UTM errors seen across customer accounts, replace the placeholder percentages below with real numbers. Even rough numbers like "in roughly 1 in 4 client implementations we audit" are stronger than generic best-practice lists.
1. Inconsistent capitalization
Email and email are two different sources to Google Analytics. Mixing them splits one campaign across two rows in your reports, and neither row tells the full story.
Fix: Lowercase everything. Set a rule and enforce it.
2. Spaces and special characters
A space inside utm_campaign becomes %20 in the URL. Some platforms strip it, some don't, and the result is silent data corruption.
Fix: Use hyphens or underscores. Never spaces. No &, ?, #, or accented characters.
3. Swapping source and medium
We see this constantly: utm_source=email&utm_medium=newsletter. It's backwards. Source is where specifically (a vendor, a partner, a publication). Medium is what type of channel (email, cpc, social).
Fix: Source answers "from whom?". Medium answers "through what?".
4. UTMs on internal links
Tagging links inside your own site with UTMs overwrites the original session attribution. A user who arrived from a paid ad ends up credited as internal_promo once they click the homepage banner.
Fix: UTMs are for inbound traffic only. For internal CTAs, use a different mechanism (custom event, button click tracking).
5. One-off naming
spring-promo, Spring_Promo_2025, springpromo25 — three campaigns or one campaign tracked three different ways? In your analytics dashboard, three rows. In reality, the same effort.
Fix: Define a naming convention before the first campaign goes out. Document it. Validate against it automatically if you can.
UTM naming convention cheat sheet
A workable convention has four properties: lowercase, no spaces, descriptive, and consistent across the team.
Recommended structure:
Rules to enforce:
- Always lowercase.
- Hyphens between words, underscores between concepts (
black-friday_2025-sale). - Use a fixed vocabulary for
utm_medium— don't invent new mediums per campaign. - Date-stamp campaigns that recur seasonally so historical data stays separable.
When a UTM builder is not enough
A free builder works for a solo marketer building five links a month. It stops working when:
- Multiple people on multiple teams generate UTMs (consistency drifts within weeks).
- Agencies and freelancers build links on your behalf without seeing your conventions.
- Paid platforms auto-generate UTMs that don't match your taxonomy.
- A typo from three months ago is fragmenting last quarter's attribution and nobody noticed.
At that point, the bottleneck is not URL generation — it's validation and monitoring. Trackingplan watches every UTM hitting your analytics in real time and alerts you when one breaks your convention, before it pollutes the report your CMO sees.
See how Trackingplan validates UTMs
Frequently asked questions
What does UTM stand for?
UTM stands for Urchin Tracking Module. The name comes from Urchin Software, the analytics company Google acquired in 2005 to build what is now Google Analytics. The parameters added to URLs (utm_source, utm_medium, utm_campaign, etc.) carry that name today, even though the original Urchin product no longer exists.
Are UTM parameters case-sensitive?
Yes. Google Analytics treats Email and email as different sources, splitting your campaign data across multiple rows. The UTM parameter names (utm_source) are not case-sensitive, but the values you assign to them are. Use lowercase consistently across every campaign to avoid fragmented reports.
Do UTM parameters affect SEO?
No. Search engines understand that UTM parameters are for tracking and ignore them when indexing. Pages with UTMs are not penalized, deduplicated, or treated as separate URLs for ranking purposes. The canonical version of the page still receives all SEO signals.
Can I edit a UTM parameter after sharing the link?
No. Once a URL with UTM parameters has been distributed, the parameters cannot be changed without breaking the link. Editing them server-side does not retroactively fix the data already collected. The only fix is to generate a new URL and replace the old one wherever you can.
What is the difference between utm_source and utm_medium?
utm_source identifies who sent the traffic (a specific platform, partner, or publication: linkedin, the-verge, acme-newsletter). utm_medium identifies how the traffic was delivered (the channel type: social, referral, email, cpc). Source is granular; medium is the category that source belongs to.
Should I use UTMs on internal links?
No. Adding UTMs to links inside your own website overwrites the original attribution stored in the user's session. A visitor who arrived from a paid Google ad will be re-attributed as the internal campaign the moment they click an internal link. Use UTMs only on inbound external links.
Why do my UTM campaigns show as "(not set)" in Google Analytics?
This usually means one of the three required parameters (utm_source, utm_medium, or utm_campaign) is missing or malformed. Check that all three are present, that there are no spaces or special characters, and that the URL uses ? for the first parameter and & between subsequent ones.
Is there a maximum length for a UTM URL?
There is no formal UTM-specific limit, but browsers and platforms enforce general URL length limits (typically 2,048 characters). Long parameter values rarely cause issues in practice. If a URL gets unwieldy, use a link shortener after generating the UTM, not before.





