UTM Parameters Explained: Track Every Link and QR Code
Add Jabble as a preferred source on GoogleOn this page
You posted on Instagram, sent a newsletter, and printed flyers with a QR code. Sales went up. Which one worked? Without UTM parameters, your analytics will mostly shrug and file a lot of it under "direct". With them, every visit carries a label saying exactly where it came from.
The five UTM parameters
| Parameter | Answers | Example values | Use it? |
|---|---|---|---|
utm_source | Where did the visitor come from? | instagram, newsletter, google, flyer | Always |
utm_medium | What kind of channel was it? | social, email, cpc, qr, print | Always |
utm_campaign | Which campaign or promotion? | spring_sale, product_launch | Always |
utm_term | Which paid keyword? | running_shoes | Mostly for paid search |
utm_content | Which version of the link or ad? | banner_a, header_link, table_tent | When you A/B test or have several links in one place |
A simple way to remember the big three: source is the who (the specific site, list or placement), medium is the how (the type of channel), and campaign is the why (the promotion you're running).
How to build a UTM link
A UTM link is your normal URL, then a ?, then each parameter as name=value, joined with &:
https://yourshop.com/sale
?utm_source=newsletter
&utm_medium=email
&utm_campaign=spring_sale
&utm_content=hero_button
(It's one line in practice. It's split here so it's easier to read.) If your URL already has a ?, for example /shop?category=shoes, add the UTMs with & instead: /shop?category=shoes&utm_source=….
Typing these by hand invites typos, so use a builder. Jabble's short link tool has a UTM builder built in. Enter your destination, fill in source, medium, campaign, and optionally term and content, and it creates a short, clean link like jabble.io/go/spring-ig that expands to the full UTM URL when clicked.
Naming conventions that keep reports clean
UTMs only help if they're consistent. Three months in, Facebook, facebook, fb and facebook.com will show up as four different sources unless you set rules early. Write these down and share them with anyone who builds links:
- Always lowercase. UTM values are case-sensitive in Google Analytics.
- Pick one separator, either underscores (
spring_sale) or hyphens (spring-sale), and never use spaces. - Use a fixed list of mediums. Stick to values Google Analytics recognises for its default channel groups where you can:
email,social,cpc,display,affiliate,referral. Add your own, likeqrorprint, deliberately and document them. - Name campaigns so they sort well, for example
2026_10_spring_saleorspring_sale_2026, so a year of campaigns stays easy to read. - Keep a log. A shared spreadsheet, or a link tool that saves every link you've built, stops people inventing new variations.
Ready-to-use examples by channel
| Where the link goes | utm_source | utm_medium | utm_campaign | utm_content |
|---|---|---|---|---|
| Instagram bio | instagram | social | evergreen | bio_link |
| Instagram story | instagram | social | spring_sale | story_day1 |
| Newsletter button | newsletter | email | spring_sale | hero_button |
| Flyer QR code | flyer | qr | spring_sale | downtown |
| Business card QR code | business_card | qr | networking | |
| Partner blog mention | partnerblog | referral | spring_sale |
Tracking QR codes with UTMs
Offline marketing is where UTMs are most useful, because analytics can't otherwise tell that a visit came from a poster. Without UTMs, a QR scan usually lands in "direct" traffic, mixed in with people who typed your address or used a bookmark.
To track a printed QR code:
- Build a UTM link with
utm_medium=qrand a source describing the printed item (flyer,poster,packaging). - Shorten it. A long URL with five parameters makes a dense QR code with lots of tiny squares, which is harder to scan from a distance or when printed small. A short link keeps the code simple and scannable.
- Use a different
utm_contentfor each location or design. For example, usewindowandcounterto see which placement performs better. - Generate the QR code from the short link. In Jabble you can do this straight from your links list, or choose the Short Link tab in the QR code generator.
A short link has one more benefit: if the landing page changes, you can update where the link points without reprinting the QR code.
Where to find UTM data in Google Analytics 4
- Reports › Acquisition › Traffic acquisition shows sessions by Session source / medium. Look for rows like
flyer / qr. - Change the primary dimension to Session campaign to compare campaigns side by side.
- For
utm_contentandutm_term, add Session manual ad content or Session manual term as a secondary dimension, or build an Explore report. - Data can take up to a day or two to appear in standard reports. Use Realtime to confirm a new link is tagging correctly. Click it yourself and check that it shows up.
Common mistakes
- Adding UTMs to internal links. Never tag links from one page of your own site to another. It can restart the visitor's session and overwrite the real source, such as the Google search that actually brought them in.
- Mixed capitalisation and spelling.
Emailvsemailvse-mailsplits one channel into three rows. - Putting personal data in UTMs. Don't add email addresses or names to UTM values. They end up stored in your analytics, and Google's terms prohibit sending personally identifiable information.
- Tagging everything as the campaign name. If source and medium are vague (
utm_source=promo), you lose the channel comparison that makes UTMs useful. - Not testing. A typo like
utm_soruceis silently ignored. Click every link once and check Realtime.
FAQ
Do UTM parameters affect SEO?
No, not when used on links you share in campaigns. Search engines generally treat the UTM version as a duplicate of the main page, especially when the page has a canonical tag. Don't add UTMs to your own internal links, though.
Are UTM parameters case-sensitive?
Yes. Google Analytics treats Facebook, facebook and FACEBOOK as three different sources. Use lowercase for every value to keep reports clean.
Which UTM parameters are required?
utm_source, utm_medium and utm_campaign are the ones you should always set. utm_term and utm_content are optional and are used for keywords and for telling apart different versions of the same ad or link.
How do I track QR code scans with UTM parameters?
Add UTM parameters to the destination URL, for example utm_source=flyer&utm_medium=qr&utm_campaign=spring_sale, then put that link (ideally via a short link) into the QR code. Visits from scans then appear under that source and medium in your analytics.
Jabble is a small, privacy-first toolkit for QR codes, short links and QR menus.