Bublink Bublink / Blog

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.

By Bublink Team 5 min read

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.

ParameterRequired?What it answersExample
utm_sourceyesWhere did the click come from?newsletter, google, partner_acme
utm_mediumyesWhat kind of channel was it?email, cpc, social, qr, affiliate
utm_campaignyesWhich initiative does this belong to?q2launch_202604, black_friday_2026
utm_contentoptionalWhich creative or position inside the campaign?header_cta, footer_link, variant_b
utm_termoptionalWhich 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.

Channelutm_sourceutm_mediumutm_campaignutm_content
Newsletter (main)newsletter_mainemail<campaign>_<yyyymm>header_cta / footer_link
Transactional emailnotif_<type>emaillifecycle_<yyyy><event_name>
Google Ads (text)(leave untagged — auto-tags via gclid)
Meta paidfacebook or instagrampaid_social<campaign>_<yyyymm><ad_variant_id>
LinkedIn paidlinkedinpaid_social<campaign>_<yyyymm><ad_variant_id>
Organic sociallinkedin / x / instagramsocial<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 / affiliatepartner_<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.

  1. Inconsistent capitalization. Newsletter and newsletter are two different sources in GA4. Lowercase everything, no exceptions.
  2. Spaces or special characters. Use underscores. Hyphens are okay if you commit to them, but pick one and never mix.
  3. 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.
  4. Manual UTMs on Google Ads URLs. Breaks gclid, breaks cost data, breaks the smart bidding loop. Leave Google Ads auto-tagging on.
  5. Using utm_content as the campaign name. It’s a sub-segment, not a campaign. The campaign name lives in utm_campaign.
  6. 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.
  7. 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.

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/3xK9aB1 to go.yourbrand.com/sale in 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

7 min read

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.

Read article
7 min read

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.

Read article
5 min read

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.

Read article