How to Create UTM Tags: A Step-by-Step Guide
Last updated:
ShortPen University

LucaG is the co-founder of ShortPen. Before that, he built Guadagnissimo from scratch, a personal finance blog that reached hundreds of thousands of readers per year and was later acquired. That experience is where he learned SEO and marketing attribution hands-on. He also runs NTSOT, a newsletter on tools for work and life. His background spans product design, growth, and building online businesses.
Show more
You're running a newsletter, a LinkedIn ad, and a partner promotion this week. All three point to the same landing page. Open GA4 a few days later, and most of that traffic shows up as (direct) / (none) or Unassigned. You can't tell which campaign worked.
UTM tags fix this. They're small text snippets you add to the end of a URL so analytics tools can attribute every click to the right source, channel, and campaign.
Creating one takes about 30 seconds. Creating one that's still useful three months from now takes a small amount of upfront thought.
This guide covers what UTM tags are, the five parameters, how to think about tagging before you build the URL, three ways to actually create UTM tags, the naming rules that keep your data clean, where to use them by channel, the mistakes that quietly break analytics, and how to bridge tagged links to real conversions instead of just sessions.
By the end, you'll have a workflow you can run today.
What UTM tags are (the short version)

A UTM tag is a piece of text added to the end of a URL that tells your analytics tool where the click came from. The tag lives in the URL's query string, after a question mark.
The format is simple. The ? opens the parameter string. Each parameter is a key=value pair. The & joins multiple parameters together.
Here's a tagged URL with one parameter per line for clarity:
When someone clicks that link, the parameters travel with them to your site. GA4, HubSpot, Mixpanel, and most analytics tools read those values automatically and group the visit under the right source, medium, and campaign in your reports.
The reason this matters in one sentence: without UTM tags, traffic from your email, ads, and partnerships all appears identical in your dashboard, which makes it nearly impossible to defend marketing spend or decide what to scale.
According to the HubSpot State of Marketing 2025, only 44% of marketers consistently use UTMs across all campaigns, meaning more than half are making budget decisions based on incomplete attribution data.
The 5 UTM parameters, with examples
There are five standard UTM parameters. Three are the working minimum, two are situational.
utm_source identifies who sent the traffic. The specific platform or referrer. Examples:
google,linkedin,newsletter,partner-acme.utm_medium identifies the channel type. Categorical, not platform-specific. Examples:
cpc,email,social,qr.utm_campaign identifies the initiative. The promotion, launch, or program the link belongs to. Examples:
spring-sale-2026,product-launch,q2-demo-push.utm_content differentiates variants of the same campaign. Different ad creatives, button placements, or A/B test versions. Examples:
hero-cta,video-ad-a,sidebar-link.utm_term captures the paid search keyword. Usually populated automatically by ad platforms via dynamic parameters. Example:
marketing-automation.
The working rule: source, medium, and campaign are required for meaningful tracking.
Add content for A/B tests and creative comparisons. Add term only for paid search.
The most common confusion is mixing up source and medium. Source is the specific platform (linkedin). Medium is a kind of marketing (paid-social).
If you put LinkedIn in utm_medium, your analytics tool will likely categorize the visit as "Other" rather than "Paid Social," and your channel reports will fragment.
Maintaining a standardized naming convention for UTM parameters helps to ensure consistency among all users.
Think before you tag (the step everyone skips)
Most guides jump straight from "here's what UTMs are" to "now fill in this form."
That's how teams end up with utm_campaign=launch, utm_campaign=promo1, and utm_campaign=test_email cluttering their reports, every one of them useless three months later.
Before you create a tag, answer three questions:
What decision will this data inform?
Should we double down on this channel? Cut this ad creative? Renew this partnership? If the answer is "I just want to see if anyone clicks," you don't need a custom UTM, the default referrer data will tell you that. UTMs earn their place when you need to compare something against something else.What dimension do I need to compare on?
Channel performance, creative performance, audience segments, partner contribution, geographic regions. Whatever the dimension is, that's the parameter you need to vary. If you're comparing two ad creatives, vary utm_content. If you're comparing partners, vary utm_source.Who else on the team will read this report?
A future you. A teammate. A manager. If they can't tell what q2_promo means at a glance, neither will you in 90 days. Names should be readable to anyone with basic context, not just the person who typed them.
Compare a vague tag with a structured one for the same campaign:
Vague | Structured |
|---|---|
utm_campaign=email1 | utm_campaign=q2-product-launch |
utm_content=test | utm_content=hero-cta |
Both work. Only one tells you anything useful when you open the report next quarter.
Once you know what you need to measure, the actual creation step takes 30 seconds.
How to create UTM tags, step by step
There are three practical ways to create UTM tags. The right one depends on whether this is a one-off link or part of an ongoing workflow.
Option 1: Build the URL by hand
Useful when you want to understand the underlying mechanics. Take your destination URL and append the parameters:
This is fine for a single test. It's a bad idea for anything you'll do twice. One missing &, one extra ?, or one space in the wrong place breaks the URL or the tracking.
Builders exist precisely to remove these failure modes.
Option 2: Use Google's Campaign URL Builder

Google's Campaign URL Builder is free, browser-based, and takes about 30 seconds:
Paste your destination URL.
Fill in source, medium, and campaign (term and content are optional).
Copy the generated URL.
What this gets you: a correctly formatted URL, fast. What it doesn't get you: any record of what you tagged, who tagged it, or how to find it again later.
For solo work it's fine. For teams running campaigns at any scale, you'll want a paper trail.
Option 3: Create tagged links inside a link manager

When you're already creating a branded short link for a campaign (which most marketers are, especially for ads, social posts, QR codes, and printed materials), the UTM tags belong inside that same form.
That way, the tag and the link live together, the team can find them again, and there's an automatic audit trail.
In ShortPen, the workflow looks like this:
Go to Links → New Link.
Paste your destination URL.
Choose your domain. The default is
shr.pn, or you can use your own custom domain likego.yourbrand.com(the free plan includes one custom domain).Set a short, readable slug, for example
spring-launch.Expand the UTM Parameters section and fill in source, medium, and campaign. Add term and content if useful.
Preview the final URL to catch typos before you save.
Click Create Link.
Your branded short URL is ready to share, and the UTM parameters are embedded in the destination URL. Future visits are attributed correctly in your analytics. If you change a UTM later, future clicks will use the new values, and historical analytics keep their original tags intact, so past data stays clean.
The operational point: tags are stored with the link object, not in a separate spreadsheet. The team can find them by folder, tag, or search.
The full link library exports to CSV, including UTMs.
And the same approach works for QR codes, since UTM parameters travel within the destination URL and are preserved with every scan.
Best practices that keep your data clean

A few rules prevent most of the problems that show up in attribution reports later.
Use lowercase only. GA4 treats parameters as case-sensitive. Facebook, facebook, and FACEBOOK become three separate sources, fragmenting one channel into three rows in your reports. Lock everything to lowercase.
Pick one separator and stick to it. Spaces in URLs become %20 and break readability. Use hyphens (spring-sale) or underscores (spring_sale), but not both. Pick one team-wide rule and apply it everywhere.
Be descriptive, not cryptic. utm_campaign=1A-Q2 means nothing in three months. utm_campaign=q2-product-launch is self-explanatory. Names should read like sentences, not codes.
Never tag internal links. Tagging a link on your own site overwrites the original traffic source. The visitor who came in from a Google ad now appears to have come from homepage-banner. UTMs are for external links only. For tracking internal navigation, use event tracking or custom dimensions instead.
Document your naming convention. A short shared doc with approved values for source, medium, and high-level campaigns prevents three teammates from tagging Facebook as fb, facebook, and meta. The convention doesn't need to be elaborate, it just needs to exist somewhere everyone can find it.
Test every tagged URL before launch. Open the link in a private browser window. Confirm the page loads. Check the UTM string is intact in the address bar. Verify the visit shows up in your analytics with the expected source and medium. Thirty seconds saves days of broken data.
Where to use UTMs (channel by channel)
UTMs work the same way everywhere, but each channel has a typical pattern. Copy these as starting points and adjust the campaign names to match your initiatives.
Tag every link in newsletters, lifecycle flows, and outreach—UTM tags are especially important for tracking email campaigns. If you have multiple CTAs in the same email (a header link and a button), use utm_content to tell them apart. Adding UTM information to links in emails allows you to track the source of leads and analyze campaign performance, especially for form submissions.
Paid social (Meta, LinkedIn, TikTok)
Tag destination URLs so you can distinguish paid social from organic. Use utm_content for ad creative variants.
Paid search (Google Ads, Microsoft Ads)
Use utm_term for keywords. Most platforms auto-populate this via dynamic parameters, so you set the rest of the tag once and let the platform fill in the keyword per click.
Organic social and partnerships
Give each partner or distinct channel its own utm_source value. This helps you track the sources of traffic coming from different channels, making it easy to identify organic traffic and evaluate performance for reviews and renewal decisions.
QR codes and offline
UTMs sit inside the destination URL, so they're preserved every time someone scans a QR code. Tag print, packaging, and event materials the same way you'd tag digital links.
This is also why dynamic QR codes matter: if the destination changes, you can update the tagged URL behind the QR without reprinting anything.
Common UTM mistakes to avoid
Five mistakes account for most broken attribution and inaccurate campaign tracking. Each has a one-line fix. Correct use of campaign parameters and url parameters is essential for reliable data collection and accurate measurement of your marketing efforts.
Inconsistent capitalization or spelling. Facebook versus facebook versus FB splits one source into three rows. Lock the team to lowercase and document approved values.
Tagging internal links. Worth restating because it’s the most common cause of broken attribution. Use event tracking on your own site, never UTMs.
Double tagging. Adding UTMs to a URL that already has them. Most analytics tools keep the last set and discard the first, which means your email click might end up attributed to a partner site. Always strip old parameters before retagging.
Vague campaign names. launch, promo, test. They feel fast to type and become useless within weeks. Include timing, channel, or theme in the name (q2-spring-sale-search).
Redirects that drop parameters. Some short-link or vanity-URL redirects strip query strings before the destination loads. This is one of the harder problems to spot because the page loads fine for the visitor, while the analytics goes silent. Always test the final landing URL in a private window before sharing the link.
From clicks to conversions
A UTM tag tells you a session happened. It doesn't tell you whether that session signed up, bought something, or filled out a form. Most articles stop at "GA4 will show you traffic by campaign" and leave the rest as an exercise.

The bridge from clicks to outcomes is post-click event tracking. You install a small script on your site, define the events that matter (signup, purchase, form submission, trial started), and your analytics ties those events back to the original UTM-tagged link.
In ShortPen, this works through the ShortPen Pixel:
Install the Pixel on your site (a script snippet, or one-click setup if you're on Shopify).
Define the events you want to measure from the dashboard. URL-triggered events fire when a visitor reaches a specific page like
/thank-you. Code-triggered events fire from a JavaScript call when something happens (such as a "Subscription Activated" moment in a single-page app).Enable event tracking on the link itself.
From that point on, your link-level analytics shows clicks, scans, and the conversions tied to that UTM-tagged link. The same view shows conversion rate, the country and device of the converters, and the exact source URL that drove each conversion.
UTMs alone can answer "which channel sent traffic." Adding events on top answers "which channel drove signups and revenue."
A note on setup: events aren't retroactive. Tracking starts from the moment you create the event and turn it on for the link. ShortPen's free plan covers 100 tracked events per month, which is enough to validate the workflow on a small campaign before deciding whether to upgrade.
FAQ
Do I need all five UTM parameters?
No. Source, medium, and campaign are the working minimum and cover most use cases. These UTM parameters, also called utm codes or url parameters, are used for campaign tracking and reporting. Add utm_content when you’re A/B testing creatives or running multiple links in the same email. Add utm_term only for paid search campaigns where you’re tracking keyword performance.
What’s the difference between utm_source and utm_medium?
Source is the specific platform that sent the traffic, like linkedin, google, or newsletter. Medium is the channel type, like paid-social, cpc, or email. They work together to answer two different questions: where did this visit come from, and what kind of marketing produced it? The campaign name (utm_campaign) is also important, as it groups and analyzes traffic for specific marketing campaigns, making it easier to compare performance across campaigns in analytics tools. Don’t put platform names in the medium field, that’s the most common error and it breaks default channel grouping in GA4.
Do UTM tags affect SEO?
Not directly. UTM parameters are url parameters used for campaign tracking and reporting, and search engines ignore them for ranking purposes. However, UTM-tagged URLs can create duplicate content issues if search engines index the same page under multiple parameter combinations. Make sure your canonical tags point to the clean URL without UTM parameters, which most modern CMS platforms handle automatically.
Can I change a UTM tag after a link is live?
Yes. Future clicks will use the new values, and historical analytics stay attached to the original tags. In ShortPen, this is handled cleanly: editing the UTM parameters on a link updates future tracking without overwriting past data, so you don’t lose the history of what already happened.
Do UTMs work with QR codes?
Yes. The parameters live in the destination URL, so they're preserved when the QR is scanned. This makes UTM tagging the easiest way to attribute traffic from print, packaging, events, and other offline materials back to the right campaign.
Can I use UTMs on internal links inside my site?
No. Tagging internal links overwrites the original traffic source for that visitor’s session, which means a click coming from a Google ad would suddenly look like it came from your own homepage banner. Use event tracking or custom dimensions to measure internal navigation behavior, never UTMs.
Conclusion
UTM tags are simple to create and easy to get wrong. The fix is rarely another tool. It's a small amount of upfront thought about what decision the data needs to inform and how to name things consistently. Once that's clear, the actual creation step is 30 seconds per link.
Whichever builder you pick, the goal is the same: clean tagging, a paper trail your team can find again, and a way to connect clicks to actual outcomes instead of stopping at sessions. ShortPen handles all three in the same workflow, and the free plan is enough to run real campaigns without hitting a wall.
Ready to make every click count?
Simplify your link management, gain valuable insights, and take control of your online presence. Your journey to better links starts here.
