Descriptive UTM Source Names: Complete Best Practices Guide
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 Source | Why It Fails | Good Source | Why It Works |
|---|---|---|---|
src1 | Requires decoder ring | facebook | Instantly clear |
promo | Doesn't identify platform | twitter | Identifies platform |
john | Person, not platform | linkedin | Platform name |
test | Temporary, meaningless | instagram | Clear purpose |
v2 | Version number? | mailchimp | Tool identified |
campaign | Generic label | google-search | Specific 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(notfb,meta,social1)linkedin(notli,professional,b2b)mailchimp(notmc,email1,newsletter)google-ads(notadwords,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-searchfacebook-adslinkedin-sponsored
✅ Underscore (also acceptable):
google_searchfacebook_adslinkedin_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:
facebookmailchimplinkedintwitter
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-techcrunchsponsor-saastraffiliate-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
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-adsEmail Marketing Platforms
## Email Tools
- mailchimp
- sendgrid
- klaviyo
- hubspot
- activecampaign
- customerio
- braze
- iterable
- postmark
- convertkitPaid Advertising
## 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-adsAffiliate & 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_nameOffline & 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-attentiveAdvanced 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:
- Internal wiki (Notion, Confluence)
- Shared Google Doc with comment access
- UTM builder tool with dropdown of approved sources
- 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
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-v2
✅ facebook 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:
-
Migrate to your convention (recommended)
- Update all their active campaigns
- Historical data keeps old names
- New data uses your standard
-
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