best-practicesUpdated 2025

UTM Source Should Be Platform Name Only (Not Campaign Details)

Stop putting campaign names, dates, and details in utm_source. Learn the proper UTM structure that prevents data fragmentation and enables accurate GA4 reporting.

7 min readbest-practices

Your marketing manager asks a simple question: "Which platform is driving more conversionsFacebook or LinkedIn?"

You open GA4. Instead of a clean comparison, you see this chaos:

Facebook traffic spread across:

  • facebook
  • facebook-ads
  • facebook_spring
  • facebook_summer_promo
  • fb
  • facebook-retargeting
  • facebook_jan_2024

LinkedIn traffic spread across:

  • linkedin
  • linkedin-sponsored
  • linkedin_campaign
  • linkedin_jan
  • li

You can't answer a simple question because nobody understood the fundamental principle: utm_source should identify the platform onlynothing else.

Let me show you the exact structure that Fortune 500 companies use to keep their marketing data clean, consolidated, and actually useful for decision-making.

🚨 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

The Golden Rule: utm_source = Platform Name Only

Think of UTM parameters like mailing address fields:

  • utm_source = City (consistent, stable, limited options)
  • utm_medium = State (standardized abbreviations)
  • utm_campaign = Street address (unique, changes frequently)

You wouldn't write "New York Spring Sale" as your city. Don't do it with utm_source either.

utm_source answers ONE question: "Which platform sent this traffic?"

Not:

  • "Which campaign?"
  • "Which time period?"
  • "Which creative?"
  • "Which audience?"
  • "Which campaign type?"

Just: "Which platform?"

What Belongs in utm_source (and What Doesn't)

 Correct utm_source Values

Platform names only:

Code
utm_source=facebook
utm_source=linkedin
utm_source=google
utm_source=twitter
utm_source=instagram
utm_source=tiktok
utm_source=pinterest
utm_source=reddit
utm_source=newsletter
utm_source=partner_company_name
utm_source=affiliate_network_name

Simple, stable, reusable across all campaigns on that platform.

L Wrong utm_source Values

Campaign details in source:

Code
utm_source=facebook_spring_sale        � Campaign name
utm_source=linkedin_product_launch     � Product name
utm_source=google_jan_2024             � Date/period
utm_source=twitter_video_campaign      � Campaign type
utm_source=email_newsletter_weekly     � Content type
utm_source=facebook_retargeting        � Campaign tactic
utm_source=linkedin_sponsored_content  � Ad format

All of these belong in utm_campaign or utm_contentnot utm_source.

Why Platform-Only utm_source Matters

Problem 1: Data Fragmentation

Wrong approach:

Code
Campaign 1: utm_source=facebook_spring&utm_campaign=promo
Campaign 2: utm_source=facebook_summer&utm_campaign=promo
Campaign 3: utm_source=facebook_fall&utm_campaign=promo

GA4 shows:

  • facebook_spring: 2,340 sessions
  • facebook_summer: 3,120 sessions
  • facebook_fall: 1,890 sessions

You can't answer: "How is Facebook performing overall?"

You have to manually add up three rows to get total Facebook traffic. Now multiply that across 12 campaigns and you're adding up 36+ rows.

Correct approach:

Code
Campaign 1: utm_source=facebook&utm_campaign=spring_promo
Campaign 2: utm_source=facebook&utm_campaign=summer_promo
Campaign 3: utm_source=facebook&utm_campaign=fall_promo

GA4 shows:

  • facebook: 7,350 sessions (automatic consolidation)

Click on "facebook" to see campaign breakdown.

Problem 2: Broken Cross-Platform Comparison

You're running the same promotion across three platforms. You want to compare performance.

Wrong:

Code
Facebook: utm_source=facebook_holiday_sale&utm_campaign=promo
LinkedIn: utm_source=linkedin_holiday_sale&utm_campaign=promo
Twitter:  utm_source=twitter_holiday_sale&utm_campaign=promo

To compare platforms, you have to manually extract platform names from source. GA4 can't do this automatically.

Correct:

Code
Facebook: utm_source=facebook&utm_campaign=holiday_sale
LinkedIn: utm_source=linkedin&utm_campaign=holiday_sale
Twitter:  utm_source=twitter&utm_campaign=holiday_sale

Now GA4 can:

  • Show traffic by source (facebook vs linkedin vs twitter)
  • Show traffic by campaign (holiday_sale across all platforms)
  • Show source/campaign combinations in one drill-down

Problem 3: Loss of Multi-Touch Attribution

Imagine a customer journey:

  1. First click: Facebook ad (awareness campaign)
  2. Second click: LinkedIn ad (consideration campaign)
  3. Conversion: Google search (brand search)

If you use campaign details in utm_source:

Code
Session 1: utm_source=facebook_awareness
Session 2: utm_source=linkedin_consideration
Session 3: utm_source=google_brand

GA4's attribution models can't consolidate these by platform. Each source is treated as a completely different channel.

With platform-only utm_source:

Code
Session 1: utm_source=facebook&utm_campaign=awareness
Session 2: utm_source=linkedin&utm_campaign=consideration
Session 3: utm_source=google&utm_campaign=brand

Now attribution models properly credit:

  • First touch: Facebook
  • Last touch: Google
  • Linear: Facebook + LinkedIn + Google

The Correct UTM Structure

The 4 Core Parameters

Code
utm_source   = Platform/site sending traffic
utm_medium   = Marketing channel type
utm_campaign = Campaign/promo/product name
utm_content  = Creative/audience variation (optional)

Example: Holiday Sale Across 3 Platforms

Facebook ads:

Code
utm_source=facebook
utm_medium=cpc
utm_campaign=holiday_sale_2024
utm_content=video_30sec

LinkedIn sponsored content:

Code
utm_source=linkedin
utm_medium=cpc
utm_campaign=holiday_sale_2024
utm_content=carousel_product

Email newsletter:

Code
utm_source=newsletter
utm_medium=email
utm_campaign=holiday_sale_2024
utm_content=header_banner

Notice:

  • utm_source = stable platform names (reused for every campaign)
  • utm_campaign = specific to this promotion (changes with each campaign)
  • utm_content = creative variations (optional, for A/B testing)

Real-World Example: Product Launch

You're launching a new product. You're running campaigns across 5 channels.

Correct structure:

Platformutm_sourceutm_mediumutm_campaignutm_content
Facebook Adsfacebookcpcproduct_launch_betavideo_feature_demo
LinkedIn Adslinkedincpcproduct_launch_betacarousel_benefits
Twitter Adstwittercpcproduct_launch_betaimage_cta
Email Listnewsletteremailproduct_launch_betaheader_cta
Partner Sitetechcrunchreferralproduct_launch_betasponsored_article

GA4 reporting capabilities:

  1. Traffic by source: See all 5 platforms side-by-side
  2. Traffic by campaign: See total product_launch_beta performance
  3. Traffic by source + campaign: Drill down to platform-specific campaign performance
  4. Traffic by content: Compare creative variations within each platform

All because utm_source is clean and consistent.

😰 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

Common utm_source Mistakes (and How to Fix Them)

Mistake 1: Abbreviations and Variations

Wrong:

Code
utm_source=fb          � Abbreviation
utm_source=facebook    � Full name
utm_source=Facebook    � Capitalized
utm_source=FACEBOOK    � All caps

All four create separate rows in GA4.

Fix: Choose ONE version and use it consistently:

Code
utm_source=facebook    � Use this for all Facebook campaigns

Guideline:

  • Use full platform names (not abbreviations)
  • Always lowercase
  • No spaces or special characters

Mistake 2: Campaign Type in Source

Wrong:

Code
utm_source=facebook_retargeting
utm_source=facebook_prospecting
utm_source=facebook_lookalike

Fix: Platform in source, campaign type in campaign:

Code
utm_source=facebook&utm_campaign=retargeting_spring_sale
utm_source=facebook&utm_campaign=prospecting_new_product
utm_source=facebook&utm_campaign=lookalike_holiday

Mistake 3: Ad Format in Source

Wrong:

Code
utm_source=linkedin_sponsored_content
utm_source=linkedin_text_ads
utm_source=linkedin_message_ads

Fix: Platform in source, format in content:

Code
utm_source=linkedin&utm_content=sponsored_content
utm_source=linkedin&utm_content=text_ads
utm_source=linkedin&utm_content=message_ads

Mistake 4: Time Periods in Source

Wrong:

Code
utm_source=newsletter_jan_2024
utm_source=newsletter_feb_2024
utm_source=newsletter_mar_2024

Fix: Platform in source, date in campaign:

Code
utm_source=newsletter&utm_campaign=monthly_digest_jan_2024
utm_source=newsletter&utm_campaign=monthly_digest_feb_2024
utm_source=newsletter&utm_campaign=monthly_digest_mar_2024

Mistake 5: Product Names in Source

Wrong:

Code
utm_source=email_product_a
utm_source=email_product_b
utm_source=email_product_c

Fix: Platform in source, product in campaign:

Code
utm_source=newsletter&utm_campaign=product_a_launch
utm_source=newsletter&utm_campaign=product_b_update
utm_source=newsletter&utm_campaign=product_c_promo

When Is It OK to Modify utm_source?

Acceptable Variation 1: Multiple Accounts on Same Platform

If you manage multiple Facebook ad accounts:

Code
utm_source=facebook_business
utm_source=facebook_personal

Or:

Code
utm_source=facebook_account_1
utm_source=facebook_account_2

Rule: Variation identifies different traffic sources, not campaigns.

Acceptable Variation 2: Organic vs Paid (with caution)

Some teams differentiate:

Code
utm_source=facebook_organic    � Organic social posts
utm_source=facebook_paid       � Paid ads

Better approach: Use utm_medium instead:

Code
utm_source=facebook&utm_medium=social      � Organic
utm_source=facebook&utm_medium=cpc         � Paid

This lets GA4's channel grouping automatically classify traffic.

Acceptable Variation 3: Newsletter Types

If you have multiple newsletters:

Code
utm_source=newsletter_weekly
utm_source=newsletter_monthly
utm_source=newsletter_alerts

Or better:

Code
utm_source=newsletter&utm_campaign=weekly_digest_jan_15
utm_source=newsletter&utm_campaign=monthly_roundup_jan
utm_source=newsletter&utm_campaign=alert_price_drop

Guideline: If the source variation is permanent and represents truly different traffic sources, it's acceptable. If it's campaign-specific, use utm_campaign.

Building a utm_source Standard for Your Team

Step 1: List All Your Traffic Sources

Create a master list of platforms:

Paid advertising:

  • facebook
  • instagram
  • linkedin
  • twitter
  • google
  • microsoft
  • tiktok
  • pinterest

Email:

  • newsletter (or your ESP name: mailchimp, sendgrid, etc.)

Partners:

  • partner_company_name
  • affiliate_network_name

Other:

  • sms_platform
  • podcast_sponsor_name

Step 2: Define Naming Rules

Document your standards:

Code
UTM SOURCE STANDARDS

1. Platform name only (no campaign details)
2. Lowercase only
3. Full name (no abbreviations)
4. Underscores for multi-word names (not hyphens or spaces)
5. Reusable across all campaigns on that platform

Approved values:
- facebook
- instagram
- linkedin
- twitter
- google
- newsletter
- partner_acme_corp

Step 3: Create a UTM Builder

Use a Google Sheet or web form that:

  • Dropdown for utm_source (limited to approved values)
  • Free text for utm_campaign (campaign-specific names)
  • Dropdown for utm_medium (approved values only)
  • Optional free text for utm_content

This prevents team members from creating new utm_source values on the fly.

Step 4: Audit Quarterly

Every 3 months:

  1. GA4 � Traffic acquisition
  2. Export sources to CSV
  3. Check for fragmentation:
    • Multiple variations of same platform (facebook, fb, Facebook)
    • Campaign details in source (facebook_spring_sale)
    • Typos (faceboook, lnkedin)
  4. Fix active campaigns
  5. Update team documentation

✅ 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

Should I use 'newsletter' or 'email' as utm_source?

Either works, as long as you're consistent.

  • Use newsletter if you want source-level specificity (vs other email types like transactional)
  • Use email for simplicity (differentiate types in utm_campaign)

Example approaches:

Approach 1 (source-level):

Code
utm_source=newsletter&utm_medium=email
utm_source=transactional_email&utm_medium=email

Approach 2 (campaign-level):

Code
utm_source=email&utm_campaign=newsletter_weekly
utm_source=email&utm_campaign=transactional_receipt

Both work. Pick one and stick to it.

Can I use utm_source for A/B testing different audiences?

No. Use utm_content or utm_campaign for testing:

Wrong:

Code
utm_source=facebook_audience_a
utm_source=facebook_audience_b

Correct:

Code
utm_source=facebook&utm_content=audience_a
utm_source=facebook&utm_content=audience_b

Or:

Code
utm_source=facebook&utm_campaign=spring_sale_audience_a
utm_source=facebook&utm_campaign=spring_sale_audience_b

What if I need to track different Facebook Pages?

If you manage multiple brand Pages:

Option 1 (source-level):

Code
utm_source=facebook_brand_a
utm_source=facebook_brand_b

Option 2 (content-level):

Code
utm_source=facebook&utm_content=page_brand_a
utm_source=facebook&utm_content=page_brand_b

Option 1 is acceptable because each Page is truly a different source.

Should utm_source include country for international campaigns?

Generally no. Use utm_campaign or utm_content:

Wrong:

Code
utm_source=facebook_us
utm_source=facebook_uk
utm_source=facebook_au

Correct:

Code
utm_source=facebook&utm_campaign=spring_sale_us
utm_source=facebook&utm_campaign=spring_sale_uk
utm_source=facebook&utm_campaign=spring_sale_au

Exception: If you have completely separate ad accounts per country that you manage as independent sources, source-level differentiation is acceptable.

Use the partner/affiliate name as utm_source:

Code
utm_source=techcrunch&utm_medium=referral
utm_source=producthunt&utm_medium=referral
utm_source=affiliate_network_name&utm_medium=affiliate

Don't put campaign details in source:

L utm_source=techcrunch_sponsored_post  utm_source=techcrunch&utm_campaign=sponsored_post_jan_2024

Can I change my utm_source standards mid-year?

Yes, but it creates a data discontinuity.

Example: Switching from fb to facebook means:

  • Historical data: fb
  • New data: facebook
  • They'll appear as separate sources in GA4

Best practice:

  • Make changes at natural boundaries (start of quarter/year)
  • Add a GA4 annotation marking the change
  • Be consistent going forward
  • Accept that historical data won't align perfectly
UTM

Get Your Free Audit in 60 Seconds

Connect GA4, run the scan, and see exactly where tracking is leaking budget. No credit card required.

Trusted by growth teams and agencies to keep attribution clean.