Skip to content

UTM Strategy for SMBs: The Tagging Conventions That Survive a Year

Sloppy UTM tagging is the cheapest way to lose your analytics. Here’s a convention that holds up.

John Cravey with EleviFounder4 min read

UTM parameters are the tags you append to every marketing link so analytics tools know where the click came from. They’re the difference between ‘78% of your traffic is Direct’ (which means you don’t know) and ‘the email newsletter drove 23% of last week’s conversions’ (which is actionable). Most SMBs tag links inconsistently and lose the data they’re supposed to be collecting. Here’s the convention we run.

The five UTM parameters

  • `utm_source` — where the click came from. Use a single canonical name per source (`google` not `google.com`, `instagram` not `IG` or `Instagram`).
  • `utm_medium` — the channel type. Use a small fixed list (see below).
  • `utm_campaign` — the specific campaign name. Use a consistent format.
  • `utm_content` — the specific creative or placement. Optional but useful for distinguishing variations.
  • `utm_term` — the keyword (paid search) or audience segment. Optional, paid-search-specific.

The canonical utm_medium list

Stick to a fixed list. Don’t invent new mediums per campaign. GA4 has standard channels it groups by medium — using non-standard mediums kicks traffic into ‘Other’ and breaks reporting.

  • `cpc` — paid search (Google Ads, Bing Ads).
  • `social` — organic social posts.
  • `paid_social` — paid social ads (Facebook Ads, LinkedIn Ads, etc.).
  • `email` — email campaigns.
  • `affiliate` — affiliate links.
  • `referral` — links from another site you don’t control (handled automatically by GA4; don’t override with UTM unless you have a reason).
  • `display` — display advertising (programmatic, banner ads).
  • `video` — video ad placements (YouTube ads).
  • `organic` — organic search (handled automatically by GA4; don’t override).

The utm_campaign naming convention

We use `[year]_[quarter]_[campaign-name]` for everything. `2026_q2_spring_promo`, `2026_q2_lead_gen`, `2026_q3_brand_awareness`. Year and quarter at the start so they sort chronologically; campaign name in kebab-case. Consistent format across email, paid, social.

Real examples

# Email campaign
https://yoursite.com/contact?utm_source=mailchimp&utm_medium=email&utm_campaign=2026_q2_spring_promo&utm_content=hero_cta

# Facebook ad
https://yoursite.com/lp/spring?utm_source=facebook&utm_medium=paid_social&utm_campaign=2026_q2_lead_gen&utm_content=video_15s_a

# Google Ads (auto-tagged by gclid usually, but utm works too)
https://yoursite.com/services/kitchen?utm_source=google&utm_medium=cpc&utm_campaign=2026_q2_kitchen_remodel&utm_term=kitchen+remodel+dallas

# Newsletter link
https://yoursite.com/blog/seo-cost?utm_source=newsletter&utm_medium=email&utm_campaign=2026_05_monthly_digest

What NOT to do

  • Don’t tag internal links. UTMs on your own site overwrite the original source attribution. A user landed via Google search, clicked a UTM-tagged button on your homepage, and Google credit gets erased.
  • Don’t mix case. `Google` and `google` are different sources in GA4. Pick lowercase and stick to it.
  • Don’t use spaces. URL-encoding makes them ugly. Use kebab-case or underscores.
  • Don’t include PII. The campaign name should describe the campaign, not the recipient.
  • Don’t use UTMs for organic search (GA4 detects it automatically) or direct referrers (GA4 detects them too).

Google Ads can auto-tag clicks with `gclid` instead of UTMs. GA4 detects gclid and attributes correctly. UTMs are still useful for human-readable reporting (campaign name in the URL is easier to debug). We use both: gclid for Google Ads attribution, UTMs for everything else.

Building a UTM template

Use a spreadsheet or a tool (Google’s Campaign URL Builder, Bitly’s UTM builder, Hubspot’s tracking URL builder). Generate UTMs from a template instead of hand-typing — that’s where typos and inconsistencies come from.

Tracking offline campaigns

Direct mail, billboards, radio — anything offline that drives traffic to your site. Use a vanity URL or a short URL that redirects to a UTM-tagged landing page. `yoursite.com/dallas` → 301 to `yoursite.com/services/kitchen?utm_source=billboard&utm_medium=offline&utm_campaign=2026_q2_dallas_billboard`. Now you know that billboard drove that traffic.

QR codes

Same pattern: the QR code encodes a UTM-tagged URL. We tag QR codes by physical location when used in stores or events. `qr_store_01`, `qr_trade_show_2026_05` as `utm_content` values.

Reading the UTM data

GA4 → Acquisition → Traffic acquisition. Source/Medium is the default grouping. Add Campaign as a secondary dimension to see which campaigns produced the traffic. The cleanest single-screen view is: Source/Medium, Sessions, Conversions, Conversion rate, weighted by Campaign. We have this saved as a custom report on every FH client property.

Common attribution issues UTMs cause

  • Internal UTM-tagged links overwriting original source. Audit your site for any UTMs on internal links and remove them.
  • Inconsistent capitalization splitting one source into multiple. Use a UTM-cleaning rule in GA4 to normalize.
  • UTMs persisting in shareable URLs. When a user copies the URL with UTMs and shares it, the new clicker inherits the original UTMs. Set a session-based clean-up rule or strip UTMs after the first pageview.
  • Forgetting UTMs entirely on a major campaign. Three months later you can’t answer ‘did the campaign work.’

How this lands across FH client work

Every FH client gets a UTM convention document at the start of an engagement: the canonical source names, the medium list, the campaign naming format. Every marketing touchpoint we control (email sends, paid campaigns, social posts) follows it. The result is GA4 reporting that doesn’t need three asterisks of caveat. If your UTM data is messy, book a consultation — the convention + cleanup is a one-day engagement that compounds across every report after.

Written by
John Cravey
Founder

Founder of Frontend Horizon. Writes most of the long-form work on the FH blog.

Newer post
Supabase Auth With Next.js App Router: The Setup We Actually Ship
Older post
Google Search Console: AI Overviews Data and What to Do About the Clicks You’re Losing
Keep reading

More from the blog

Analytics·4 min

GA4 Attribution Models: Which One to Look At When

Data-driven attribution is the default but it lies to small accounts. Here’s the per-channel reality check.

Analytics·5 min

Google Analytics 4: The Conversion Events That Actually Matter

Most GA4 installations track everything and surface nothing. Five events cover what SMBs actually need.

Analytics·4 min

Privacy-First Analytics in 2026: GDPR, CCPA, AI Act, and What SMBs Actually Need

Privacy regulations are converging, not multiplying. Here’s what compliance actually looks like in 2026.