Descriptive UTM Source Names: Complete Best Practices Guide

UTMGuard Team
7 min readattribution

Jennifer Park inherited a GA4 property with 347 unique utm_source values.

Some made perfect sense: facebook, linkedin, mailchimp.

Others were cryptic nightmares: src_v2, campaign_001, test123, johns_email.

She spent three days mapping sources to actual platforms. She never figured out what src_v2 was. Thousands of sessions, zero context.

A descriptive naming convention would have saved those three days and prevented permanent data loss.

🚨 Not sure what's breaking your tracking?

Run a free 60-second audit to check all 40+ ways UTM tracking can fail.

Scan Your Campaigns Free

✓ No credit card ✓ See results instantly

What Makes a UTM Source Descriptive?

Descriptive source = Anyone analyzing data can immediately identify the platform without additional context.

Good vs Bad Examples

Bad SourceWhy It FailsGood SourceWhy It Works
src1Requires decoder ringfacebookInstantly clear
promoDoesn't identify platformtwitterIdentifies platform
johnPerson, not platformlinkedinPlatform name
testTemporary, meaninglessinstagramClear purpose
v2Version number?mailchimpTool identified
campaignGeneric labelgoogle-searchSpecific channel

The test: If a new analyst can identify the traffic source from the name alone, it's descriptive.

The Descriptive Source Framework

Rule 1: Use the Platform's Actual Name

Always use the recognizable platform/tool name.

Good:

  • facebook (not fb, meta, social1)
  • linkedin (not li, professional, b2b)
  • mailchimp (not mc, email1, newsletter)
  • google-ads (not adwords, ppc1, search)

Why: Consistency and clarity. Anyone can understand these.

Rule 2: Add Specificity When Needed

If one platform has multiple campaign types, differentiate:

Google Ads campaigns:

  • google-search (Search ads)
  • google-display (Display ads)
  • google-shopping (Shopping ads)
  • google-youtube (YouTube ads)

Facebook/Meta campaigns:

  • facebook (Organic posts)
  • facebook-ads (Paid ads)
  • instagram (Organic posts)
  • instagram-ads (Paid ads)

Email platforms:

  • mailchimp (Regular campaigns)
  • mailchimp-automation (Automated workflows) - if you need this level of detail

Rule 3: Be Consistent with Separators

Pick one separator and stick with it:

Kebab-case (recommended):

  • google-search
  • facebook-ads
  • linkedin-sponsored

Underscore (also acceptable):

  • google_search
  • facebook_ads
  • linkedin_sponsored

Mixed (never do this):

  • google-search, facebook_ads, LinkedInSponsored

Why: Consistent casing makes filtering and grouping easier.

Rule 4: Avoid Abbreviations

Unless the abbreviation is universally recognized:

Too cryptic:

  • fb (Could be Facebook or FeedBurner)
  • mc (Mailchimp? MasterCard?)
  • li (LinkedIn or something else?)
  • tw (Twitter or Twilio?)

Universally clear:

  • facebook
  • mailchimp
  • linkedin
  • twitter

Exception: Well-known industry abbreviations

  • sms (text messages)
  • qr (QR codes)
  • crm (if using CRM as traffic source)

Rule 5: Include Partner/Publisher Names

For partnerships, sponsorships, affiliates:

Too vague:

  • partner (Which one?)
  • sponsor (Which sponsor?)
  • affiliate_01 (Requires lookup table)

Descriptive:

  • partner-techcrunch
  • sponsor-saastr
  • affiliate-wirecutter

Format: type-specificname

😰 Is this your only tracking issue?

This is just 1 of 40+ ways UTM tracking breaks. Most marketing teams have 8-12 critical issues they don't know about.

• 94% of sites have UTM errors

• Average: $8,400/month in wasted ad spend

• Fix time: 15 minutes with our report

✓ Connects directly to GA4 (read-only, secure)

✓ Scans 90 days of data in 2 minutes

✓ Prioritizes issues by revenue impact

✓ Shows exact sessions affected

Get Your Free Audit Report

Complete Naming Guide by Channel

Social Media Platforms

## Organic Social
- facebook
- instagram
- linkedin
- twitter
- tiktok
- pinterest
- youtube
- reddit
- threads
 
## Paid Social
- facebook-ads
- instagram-ads
- linkedin-ads
- twitter-ads
- tiktok-ads
- pinterest-ads
- youtube-ads
- reddit-ads

Email Marketing Platforms

## Email Tools
- mailchimp
- sendgrid
- klaviyo
- hubspot
- activecampaign
- customerio
- braze
- iterable
- postmark
- convertkit
## Search & Display
- google-search
- google-display
- google-shopping
- google-youtube
- microsoft-ads
- bing-ads
 
## Social Ads
- meta-ads (if running combined FB+IG campaigns)
- facebook-ads
- instagram-ads
- linkedin-ads
- twitter-ads
- tiktok-ads
 
## Other
- taboola
- outbrain
- reddit-ads
- quora-ads

Affiliate & Partner Networks

## Affiliate Platforms
- impact
- cj-affiliate
- shareasale
- rakuten
- awin
 
## Specific Affiliates
- affiliate-wirecutter
- affiliate-techcrunch
- affiliate-bloggername
 
## Partner Referrals
- partner-company_name
- partner-firstname_lastname (for individual partners)

Content & PR

## Publications
- techcrunch
- venturebeat
- forbes
- businessinsider
- wsj
- nytimes
 
## Podcasts
- podcast-name
- podcast-host_name
 
## YouTube Channels
- youtube-channel_name

Offline & Other

## Offline Sources
- qr-code
- qr-billboard
- qr-magazine_name
- qr-event_name
- print-magazine_name
- tv-commercial
- radio-station_name
 
## Events
- event-saastr
- event-techcrunch_disrupt
- event-dreamforce
 
## SMS
- sms-twilio
- sms-attentive

Advanced Naming Patterns

Pattern 1: Geographic Specificity

When running region-specific campaigns:

google-search-us
google-search-uk
google-search-eu

Use case: Different budgets, teams, or strategies per region

Pattern 2: Campaign Type Differentiation

For platforms with distinct campaign objectives:

facebook-awareness
facebook-conversion
facebook-retargeting

Use case: Comparing performance across campaign objectives

Pattern 3: Test vs Production

For testing new platforms or campaigns:

linkedin-test
linkedin

Better approach: Use utm_campaign or utm_content for test variants, keep source clean

Pattern 4: Agency or Team Identification

If multiple agencies run campaigns on same platform:

facebook-agency_acme
facebook-agency_techco
facebook-inhouse

Use case: Multi-agency attribution comparison

How to Document Your Naming Convention

Create a Source Dictionary

Maintain a living document:

# UTM Source Dictionary
Last updated: 2025-01-14
 
## Approved Sources
 
### Social Media
| Source | Platform | Campaign Type | Owner |
|--------|----------|---------------|-------|
| facebook | Facebook | Organic posts | Social Media Team |
| facebook-ads | Facebook | Paid advertising | Paid Media Team |
| instagram | Instagram | Organic posts | Social Media Team |
| instagram-ads | Instagram | Paid advertising | Paid Media Team |
| linkedin | LinkedIn | Organic posts | Social Media Team |
| linkedin-ads | LinkedIn | Sponsored content | Paid Media Team |
 
### Email Marketing
| Source | Platform | Campaign Type | Owner |
|--------|----------|---------------|-------|
| mailchimp | Mailchimp | Email campaigns | Email Marketing |
| sendgrid | SendGrid | Transactional | Engineering |
| klaviyo | Klaviyo | Ecommerce flows | Ecommerce Team |
 
### Paid Advertising
| Source | Platform | Campaign Type | Owner |
|--------|----------|---------------|-------|
| google-search | Google Ads | Search campaigns | SEM Team |
| google-display | Google Ads | Display campaigns | Paid Media |
| google-shopping | Google Ads | Shopping campaigns | Ecommerce Team |
 
## Forbidden Sources (Never Use)
❌ social
❌ email
❌ newsletter
❌ partner
❌ ad
❌ campaign
❌ test
❌ src1, src2, etc.

Share With Your Team

Make it easily accessible:

  1. Internal wiki (Notion, Confluence)
  2. Shared Google Doc with comment access
  3. UTM builder tool with dropdown of approved sources
  4. Onboarding checklist for new team members

Validation Checklist

Before using any utm_source value, verify:

  • Platform is obvious - New analyst can identify source
  • Matches convention - Uses approved format and separator
  • Not generic - Doesn't lump multiple platforms together
  • Not abbreviated - Full name used (unless standard abbreviation)
  • Documented - Added to source dictionary
  • Tested - Appears correctly in GA4 Realtime
  • Team aware - Others know this source exists

If any checkbox fails, revise the source name.

✅ Fixed this issue? Great! Now check the other 39...

You just fixed one tracking issue. But are your Google Ads doubling sessions? Is Facebook attribution broken? Are internal links overwriting campaigns?

Connects to GA4 (read-only, OAuth secured)

Scans 90 days of traffic in 2 minutes

Prioritizes by revenue impact

Free forever for monthly audits

Run Complete UTM Audit (Free Forever)

Join 2,847 marketers fixing their tracking daily

FAQ

Can I use uppercase in utm_source?

Technically yes, but lowercase is recommended.

Why: GA4 treats Facebook and facebook as different sources. Lowercase prevents accidental duplicates.

Exception: Brand names that require specific casing (e.g., LinkedIn vs linkedin) - pick one and be consistent.

What if the platform name is really long?

Use the commonly recognized short name:

hubspot (not hubspot_marketing_hub) ✅ salesforce (not salesforce_marketing_cloud)

Rule: Use the name people use in conversation.

Should I version my sources?

No. Versioning belongs in utm_campaign or utm_content.

facebook-v2facebook with utm_campaign=spring_2024_v2

How many total sources should I have?

Depends on your marketing mix, but typically:

  • Small business: 10-20 sources
  • Mid-size company: 20-50 sources
  • Enterprise: 50-200 sources

Red flag: 500+ sources usually indicates poor naming discipline.

What if I acquire a company with different naming conventions?

Options:

  1. Migrate to your convention (recommended)

    • Update all their active campaigns
    • Historical data keeps old names
    • New data uses your standard
  2. Grandfather their convention (if temporary)

    • Keep their sources for active campaigns
    • Migrate over 6-12 months
    • Document both conventions during transition

Can I rename sources in historical GA4 data?

No. GA4 doesn't allow retroactive renaming.

Solution: Note the date of naming changes. Filter reports by date ranges to analyze before/after periods separately.


Related: Generic Source Attribution Rule