UTM Parameters Done Right: source, medium, campaign 2026
The five UTM parameters explained, channel-by-channel templates for email, ads, social, QR, and offline, plus the seven mistakes that break GA4 reports.
UTM parameters are the most-searched tracking topic in marketing — and the most often misused. The reason is simple: nobody owns them. Every team writes their own, every campaign reinvents the naming, and a few months in, the GA4 report shows Newsletter, newsletter, news_letter, and Email Newsletter as four separate sources. By then the data is hard to fix.
This guide is the version we wish we’d had on day one — five parameters, one naming convention, channel-by-channel templates, and the seven mistakes that quietly wreck attribution reports.
The Five Parameters at a Glance
Every tracked URL should always carry the first three. The last two are optional and answer specific questions.
| Parameter | Required? | What it answers | Example |
|---|---|---|---|
utm_source | yes | Where did the click come from? | newsletter, google, partner_acme |
utm_medium | yes | What kind of channel was it? | email, cpc, social, qr, affiliate |
utm_campaign | yes | Which initiative does this belong to? | q2launch_202604, black_friday_2026 |
utm_content | optional | Which creative or position inside the campaign? | header_cta, footer_link, variant_b |
utm_term | optional | Which paid search keyword? | running_shoes, url_shortener |
GA4 also accepts a sixth parameter, utm_id, which links a click to a campaign record imported from Google Ads or another paid source. Most teams won’t need it; if your finance reports require cost data, that’s when it earns its place.
A Naming Convention You Won’t Regret in Six Months
The single biggest UTM rule is lowercase, always. GA4 treats Email and email as completely different values, which fragments every line of every report. Pick a convention once, document it, and don’t bend it for one-off campaigns.
A simple template that survives team growth:
utm_source—<channel>_<vendor>if specific (e.g.newsletter_main,partner_acme). Single-word lowercase otherwise (google,bing,linkedin).utm_medium— pick from a closed list of seven:email,cpc,paid_social,social,qr,offline_print,affiliate. Adding values to this list should require a one-line decision somewhere.utm_campaign—<launch>_<yyyymm>(e.g.q2launch_202604). Easy to sort, easy to filter, never collides with last year’s name.utm_content— short label for a creative or placement (header_cta,footer_link,variant_b). Avoid full sentences.- Use underscores, not spaces or hyphens. Browsers convert spaces to
+and hyphens get used inside vendor names; underscores stay clean.
Channel-by-Channel Templates
Copy this matrix into your team doc and you’ve solved 80% of UTM debates.
| Channel | utm_source | utm_medium | utm_campaign | utm_content |
|---|---|---|---|---|
| Newsletter (main) | newsletter_main | email | <campaign>_<yyyymm> | header_cta / footer_link |
| Transactional email | notif_<type> | email | lifecycle_<yyyy> | <event_name> |
| Google Ads (text) | (leave untagged — auto-tags via gclid) | |||
| Meta paid | facebook or instagram | paid_social | <campaign>_<yyyymm> | <ad_variant_id> |
| LinkedIn paid | linkedin | paid_social | <campaign>_<yyyymm> | <ad_variant_id> |
| Organic social | linkedin / x / instagram | social | <campaign>_<yyyymm> | post_<yyyymmdd> |
| Influencer | <handle> (lowercase) | influencer | <campaign>_<yyyymm> | <video_id> |
| QR (in-store / poster) | qr_<location> (e.g. qr_menu) | qr | <campaign>_<yyyymm> | <placement> |
| Print / OOH | <vendor_lowercase> | offline_print | <campaign>_<yyyymm> | <city> |
| Partner / affiliate | partner_<name> | affiliate | <campaign>_<yyyymm> | <placement> |
The Google Ads row is the one to read twice: don’t manually tag Google Ads URLs. Manual UTMs override the auto-tagged gclid, which breaks cost-per-click attribution in GA4. Leave those URLs untagged and let auto-tagging do its job.
The Seven Mistakes That Wreck Reports
Every team eventually makes most of these. Catching them once means never seeing them again.
- Inconsistent capitalization.
Newsletterandnewsletterare two different sources in GA4. Lowercase everything, no exceptions. - Spaces or special characters. Use underscores. Hyphens are okay if you commit to them, but pick one and never mix.
- UTMs on internal links. A UTM on a button inside your own site overwrites the original session’s source. Internal navigation should never carry UTM tags.
- Manual UTMs on Google Ads URLs. Breaks
gclid, breaks cost data, breaks the smart bidding loop. Leave Google Ads auto-tagging on. - Using
utm_contentas the campaign name. It’s a sub-segment, not a campaign. The campaign name lives inutm_campaign. - No template. If every new campaign decides its own naming, you don’t have data — you have a pile of strings. Write the convention down and reference it from every brief.
- Skipping the test click. Build the URL, click it from your phone, look at the GA4 real-time report. If anything looks off, fix it before you launch — not after the campaign ends.
Where Bublink Fits
Manually crafting URLs for fifteen channels is the part that breaks discipline first. Bublink’s UTM variants feature lets you spawn source/medium/content variants of a single short link from one form, so the matrix above turns into a few clicks per campaign instead of a spreadsheet of copy-paste. Every variant gets its own short URL plus a QR code, and clicks roll up by source, medium, and campaign in the dashboard.
The point isn’t the tool — it’s that the discipline survives a busy launch week. Thirty seconds to learn, years to use.
In One Page
- Three required, two optional. Lowercase, underscores, one convention.
- Save Google Ads URLs from manual tagging. Trust
gclid. - Templated channel matrix > per-campaign improvisation.
- Internal links: no UTMs. External inbound only.
- Test the click before you ship the campaign.
Click a Bublink, land instantly. Start tracking your campaigns at bublinks.com →
Read next: Bitly vs TinyURL vs Short.io vs Dub vs Bublink (2026) — the six axes that decide which shortener fits your stack. Related: How to Set Up a Custom Domain for Branded Short Links — go from
bit.ly/3xK9aB1togo.yourbrand.com/salein five minutes.
Try Bublink
Branded short links, real analytics, no tier-gating.
Spin up a workspace and shorten your first production link in under a minute. Free to start.
Try Bublink →Continue reading

Bulk URL Shortener: 100 Links from One Excel Sheet
Turn an Excel file into 100 tracked short URLs in under a minute — bulk import schema, per-row UTM pattern, and the analytics view that follows.

QR Codes That Bridge Offline and Online: 5 Real Placements
Five real QR placements — store menu, expo booth, business card, poster, table — each with its UTM template, short-link tactic, and print checklist.
Newsletter Click Tracking — A UTM Variant System for Email
A practical UTM variant system for email newsletters — header, body, footer placements, send-time analysis, and the heatmap that decides next week's send.