marketing · analytics

Track Marketing Campaigns With Short Links: The UTM Guide

Which UTM parameters to use, how short links hide the tags, why one link per channel is the rule, and how to read link and site analytics together.

Ananya Sharma
8 min read1,691 wordsUpdated
Guide cover: track marketing campaigns with short links — the UTM guide

Campaign tracking has one job: to tell you, after the fact, which of the things you did brought people in. It's usually done badly not because it's hard but because it's tedious — long tagged URLs that get pasted wrong, half the team using Email and half using email, a spreadsheet nobody updates. Short links fix the tedious part. The tags live inside the link once, the reader sees a clean address, and every placement gets its own count without anyone touching a spreadsheet.

This guide is the setup end to end: the parameters, the naming rules that keep reports clean, the one-link-per-channel discipline, and how to read link analytics alongside your site analytics without arguing about which number is right.

What UTM parameters are, in one paragraph#

UTM parameters are five optional fields you add to the end of a URL so that the destination's analytics tool can record where the visit came from. They were named for the Urchin Tracking Module, the software Google Analytics grew out of, and every mainstream analytics tool reads them. Google documents how it reads each one in its campaign collection reference, and its Campaign URL Builder will assemble a tagged URL for you if you would rather not type them by hand. They do nothing on the page itself; they're labels the page's analytics script picks up from the address bar.

Parameter Answers Examples
utm_source Where, specifically? newsletter, instagram, partner-blog
utm_medium What kind of channel? email, social, print, paid
utm_campaign Which push? spring-2026, launch, black-friday
utm_content Which variant within the push? hero-button, footer-link, story-1
utm_term Which keyword? (paid search) url-shortener

Use the first three always. Use utm_content when one placement has several links you want to tell apart. Leave utm_term to paid search.

A properly tagged URL looks like this:

https://example.com/spring?utm_source=newsletter&utm_medium=email&utm_campaign=spring-2026

It's correct and it's unusable. It won't fit in a tweet, it looks like a tracking device (because it is one), it breaks when someone types it from print, and it invites the person pasting it to "tidy" the end off. Every one of those failure modes shows up in your report as visits with no source.

A short link in front of it solves all of them at once:

A tagged URL, and the short link that hides it: source, medium and campaign travel inside go.yourbrand.com/spring-email
A tagged URL, and the short link that hides it: source, medium and campaign travel inside go.yourbrand.com/spring-email

The tags travel inside the short link. The reader sees go.yourbrand.com/spring-email. When they click, the shortener redirects to the full tagged URL, your site analytics record the source, and the shortener records the click. Nobody pastes the wrong thing because there's nothing long to paste.

Two further advantages that only appear once you're using them:

  • You can fix a tagging mistake after launch. Edit the short link's destination; every printed and posted copy follows. A raw tagged URL is frozen the moment it leaves your hands.
  • You get a second, independent count. The shortener counts every click, including ones your site analytics never see — a visitor with a script blocker, a slow page, a tap on a poster that never finished loading. More on reading the two together below.

This is the whole method. Every place a link appears gets its own short link. Same destination, same campaign, different link for the newsletter, the Instagram bio, the story sticker, the printed flyer, the sales deck, the partner's blog.

The reason is that a click count is only useful if you know what it's a count of. One link shared everywhere tells you "300 people clicked"; one link per placement tells you "220 came from the newsletter, 60 from Instagram, 20 typed it from the flyer" — and the flyer has been up for a month, so you now know what it's worth.

It costs nothing except the discipline to make the extra links, and a naming convention that makes them easy to tell apart: /spring-email, /spring-ig, /spring-print, /spring-deck.

Match the UTM values to the placement#

Each placement's short link carries tags that describe that placement:

Placement Short link utm_source utm_medium utm_content
Newsletter, hero button /spring-email newsletter email hero
Newsletter, footer /spring-email-footer newsletter email footer
Instagram bio /spring-ig instagram social bio
Printed flyer (QR) /spring-print flyer print qr
Partner's blog post /spring-partner partner-blog referral

The short link's own analytics will show the referrer for free — instagram.com, your newsletter tool's domain — but referrers are coarse and often missing (print has none; many apps strip them). The UTM tags are what survive all the way to your site's report.

Naming rules that keep reports clean#

Analytics tools group visits by the exact string in each parameter. Every inconsistency becomes a separate row, and the campaign that "didn't work" often did — it's just split across four spellings.

  1. Lowercase, always. email, never Email.
  2. Hyphens for spaces. spring-2026, never spring 2026 or spring_2026.
  3. A fixed vocabulary for source and medium. Write the allowed values down — a dozen is plenty — and don't invent new ones mid-campaign.
  4. Campaign names that mean something in a year. spring-2026 will still be clear next April; promo-3 won't.
  5. Don't tag internal links. A UTM on a link from your homepage to your pricing page overwrites the real source the visitor arrived with. Tags are for links into your site from elsewhere.

Because the tags live inside short links, you write each one once. The convention only has to be applied when a link is created, and the description field on the link is the place to note which values it carries.

You'll now have two numbers for every placement: clicks on the short link, and sessions with that source in your site analytics. They will not match, and that's fine once you know what each measures.

A click is counted when the shortener serves the redirect — the instant the tap happens, before the destination has loaded, before any script runs. Link analytics also work for destinations you don't control, so a short link to a partner's page or an app store listing gives you a count you'd otherwise never have.

A session is counted when the destination's analytics script runs — after the page loads, and only if nothing blocked it.

So clicks are always the larger number, and the gap is made of real people: those who bounced before the page loaded, those with content blockers, those on a slow connection. Use them like this:

  • Clicks per placement tell you which placements reach people. This is the number to judge a poster, a story, a newsletter slot by.
  • Sessions per source tell you what people did after arriving: pages, sign-ups, purchases. This is the number to judge the campaign's outcome by.
  • The ratio between them is a health check. If one placement's sessions are a much smaller fraction of its clicks than the others', something's wrong at the destination for that audience — a slow page on mobile, a blocked script, a broken redirect.

Both numbers are yours; the argument about which is "right" is a category error.

What the shortener shows you#

On Xlyl's statistics page each link has its clicks by hour and by day, its referrers, countries, browsers and operating systems, and a total for the last day, week, month and all time. For a campaign, the useful views are the per-day chart (did the newsletter spike on send day and decay, or keep going?) and the country and device breakdowns (is the print audience local and on phones, as you'd expect?). Bot traffic — link previews, mail scanners — is filtered before counting, so the numbers are people. Visitor IP addresses are never stored.

Mistakes that quietly ruin reports#

  • Sharing the tagged URL directly. It gets shortened by the platform, retyped from print, or trimmed by a helpful colleague, and every one of those loses the tags. Short link first, always.
  • One link everywhere. You'll know the campaign's total and nothing else.
  • Mixed case and spaces. Four rows for one source.
  • Tagging internal links. Overwrites the source the visitor really came from.
  • Changing the destination without the tags. When you edit a short link's destination mid-campaign, carry the UTM parameters across. The shortener doesn't add them; they're part of the destination.
  • Reusing an alias for a new campaign. Old placements are still out there and will pollute the new count. Make a new link; keep the old one pointed somewhere sensible.
  • Forgetting the QR code is a placement. A code on a flyer is its own channel with its own link; the QR guide covers sizing and placement so the clicks actually arrive.

A minimal setup you can do today#

  1. Write down your source and medium vocabulary — a dozen lowercase words.
  2. Pick an alias shape: /[campaign]-[placement].
  3. For each placement, build the tagged URL and shorten it with that alias; put the tag values in the description.
  4. Share only the short links.
  5. On the day after each send or post, read clicks per link; a week later, read sessions per source.

If you'd rather automate steps 3 and 4 for a spreadsheet of placements, the API creates links from a script, tags and all.

Frequently asked questions

Do I still need UTM parameters if my short links have analytics?
Use both. Link analytics tell you how many people clicked each placement and from where, including destinations you don't control. UTM parameters tell your site analytics what those visitors did after arriving. The short link carries the tags, so you get both from one link.
Why do my link clicks and my website sessions disagree?
They measure different moments. A click is counted the instant the redirect is served; a session is counted when the page's analytics script runs. People who close the tab early, block scripts, or hit a slow page are clicks without sessions. Expect clicks to run higher, and treat the ratio as a health signal rather than an error.
Should UTM values be lowercase?
Yes, always. Most analytics tools treat 'Email' and 'email' as two different sources, which splits your report in half. Pick lowercase, hyphens for spaces, and a written list of allowed values.
Can I change a campaign's destination after the links are out?
With a short link, yes — edit the destination and every existing placement follows. That's the main reason to put a short link in front of a tagged URL rather than sharing the tagged URL directly.

Found this useful? Pass it on.

PostShare

Keep reading

All guides →