attributionUpdated 2025

Platform Identification with UTM Parameters: Best Practices

Master platform identification using utm_source values. Learn how to accurately track and attribute traffic from every marketing platform in GA4.

8 min readattribution

Rachel Kim managed marketing for a SaaS company with 23 active traffic sources. Email platforms, social networks, paid ads, partnerships—traffic came from everywhere.

Her boss asked a simple question: "Which platforms drive the best ROI?"

Rachel opened GA4 and saw her utm_source report:

Code
social - 45,892 sessions (which platform?)
email - 23,443 sessions (which tool?)
partner - 18,332 sessions (which partnership?)
newsletter - 12,009 sessions (which email service?)

She had traffic data. But zero platform visibility. All $240,000 in marketing spend was completely unattributable.

This guide will show you how to correctly identify every platform using utm_source parameters.

🚨 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 Is Platform Identification?

Platform identification = Using utm_source to specify the exact tool, service, or publisher sending traffic.

The Purpose of utm_source

utm_source answers: "Which specific platform sent this traffic?"

NOT: "What type of traffic is this?"

Examples

QuestionCorrect Answer (utm_source)Wrong Answer
Where did this email traffic come from?mailchimpemail
Which social platform sent this?linkedinsocial
Which partner referred this?techcrunchpartner
Which ad platform?google-searchppc

The pattern: utm_source = the specific platform's name

Why Platform Identification Matters

Example: Email Attribution Disaster

Scenario: Company uses 4 email platforms

Their setup (broken):

Code
Mailchimp campaigns: utm_source=email
SendGrid transactional: utm_source=email
Klaviyo automation: utm_source=email
HubSpot newsletters: utm_source=email

GA4 shows:

Code
Source: email
Sessions: 34,556
Revenue: $145,000
Conversions: 892

Questions you CAN'T answer:

  1. Which email platform drives the highest revenue?
  2. Should we consolidate to fewer platforms?
  3. Which platform has the best conversion rate?
  4. Where should we invest more?

Annual cost breakdown:

PlatformAnnual CostActual RevenueROIVisible in GA4
Mailchimp$12,000$98,000717%❌ Hidden
SendGrid$8,000$4,00050%❌ Hidden
Klaviyo$18,000$38,000211%❌ Hidden
HubSpot$24,000$5,00021%❌ Hidden
Total$62,000$145,000234%✅ Combined

The reality:

  • HubSpot costs $24K but only generates $5K (losing money)
  • Mailchimp costs $12K and generates $98K (incredible ROI)
  • Decision: Cut HubSpot, invest more in Mailchimp
  • Savings: $24K + increased Mailchimp ROI

But without platform identification, you'd keep paying for HubSpot forever.

😰 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

How to Identify Platforms Correctly

Step 1: Map All Your Traffic Sources

Create an inventory of every platform that sends traffic to your site:

Markdown
# Traffic Source Inventory
 
## Email Platforms
- [ ] Mailchimp
- [ ] SendGrid
- [ ] Klaviyo
- [ ] HubSpot
- [ ] ActiveCampaign
- [ ] Customer.io
- [ ] ConvertKit
 
## Social Media (Organic)
- [ ] Facebook
- [ ] LinkedIn
- [ ] Twitter
- [ ] Instagram
- [ ] TikTok
- [ ] YouTube
- [ ] Pinterest
 
## Paid Advertising
- [ ] Google Ads (Search)
- [ ] Google Ads (Display)
- [ ] Google Ads (Shopping)
- [ ] Google Ads (YouTube)
- [ ] Facebook Ads
- [ ] Instagram Ads
- [ ] LinkedIn Ads
- [ ] Twitter Ads
- [ ] Microsoft Ads
 
## Partnerships & Affiliates
- [ ] List specific partner names
- [ ] Affiliate network platforms
- [ ] Content publishers
 
## Other
- [ ] SMS platforms
- [ ] Push notification services
- [ ] QR codes (where placed)
- [ ] Offline campaigns

Mark which ones you actively use.

Step 2: Define Source Name for Each Platform

For each platform, create a specific utm_source value:

Email platforms:

Markdown
Mailchimp → utm_source=mailchimp
SendGrid → utm_source=sendgrid
Klaviyo → utm_source=klaviyo
HubSpot → utm_source=hubspot
ActiveCampaign → utm_source=activecampaign
Customer.io → utm_source=customerio

Social media:

Markdown
Facebook (organic) → utm_source=facebook
Instagram (organic) → utm_source=instagram
LinkedIn (organic) → utm_source=linkedin
Twitter (organic) → utm_source=twitter
TikTok (organic) → utm_source=tiktok

Paid advertising:

Markdown
Google Search Ads → utm_source=google-search
Google Display Ads → utm_source=google-display
Google Shopping Ads → utm_source=google-shopping
Google YouTube Ads → utm_source=google-youtube
Facebook Ads → utm_source=facebook-ads
Instagram Ads → utm_source=instagram-ads
LinkedIn Ads → utm_source=linkedin-ads
Microsoft Ads → utm_source=microsoft-ads

Partners (use actual names):

Markdown
TechCrunch feature → utm_source=techcrunch
VentureBeat article → utm_source=venturebeat
Partner ACME Corp → utm_source=partner-acme
Affiliate John Doe → utm_source=affiliate-johndoe

Step 3: Document Platform-to-Source Mapping

Create a reference document:

Markdown
# Platform Identification Guide
 
## How to Choose utm_source
 
**Rule:** utm_source = the platform's actual name
 
## Email Marketing
 
| Platform | utm_source | utm_medium | Example |
|----------|------------|------------|---------|
| Mailchimp | mailchimp | email | mailchimp / email |
| SendGrid | sendgrid | email | sendgrid / email |
| Klaviyo | klaviyo | email | klaviyo / email |
 
## Social Media (Organic)
 
| Platform | utm_source | utm_medium | Example |
|----------|------------|------------|---------|
| Facebook | facebook | social | facebook / social |
| LinkedIn | linkedin | social | linkedin / social |
| Twitter | twitter | social | twitter / social |
 
## Paid Advertising
 
| Platform | Campaign Type | utm_source | utm_medium |
|----------|---------------|------------|------------|
| Google Ads | Search | google-search | cpc |
| Google Ads | Display | google-display | cpc |
| Google Ads | Shopping | google-shopping | cpc |
| Facebook | Ads | facebook-ads | cpc |
| LinkedIn | Sponsored | linkedin-ads | cpc |
 
## Partners & Affiliates
 
| Type | Example | utm_source | utm_medium |
|------|---------|------------|------------|
| Media mention | TechCrunch | techcrunch | referral |
| Partner referral | ACME Corp | partner-acme | referral |
| Affiliate link | Wirecutter | affiliate-wirecutter | affiliate |
 
## NEVER USE These Generic Sources
❌ email (use platform name: mailchimp, sendgrid, etc.)
❌ social (use platform name: facebook, linkedin, etc.)
❌ partner (use partner name: partner-acme, etc.)
❌ newsletter (use platform name)
❌ ad or ads (use platform and type: google-search, facebook-ads, etc.)

Step 4: Implement Platform-Specific Tracking

For each platform, configure UTM parameters:

Email Platforms

Mailchimp:

  1. Go to Campaign Settings
  2. Use "Add Google Analytics tracking"
  3. Or manually add to all links:
Code
https://yoursite.com/offer?utm_source=mailchimp&utm_medium=email&utm_campaign=june_newsletter

SendGrid:

  1. Marketing → Settings → Tracking
  2. Enable Google Analytics
  3. Set Source: sendgrid
  4. Set Medium: email

Klaviyo:

  1. Add to all email templates:
Code
https://yoursite.com/[page]?utm_source=klaviyo&utm_medium=email&utm_campaign={{ campaign.name }}

Social Media Schedulers

Hootsuite / Buffer:

Create platform-specific templates:

Markdown
Facebook posts:
utm_source=facebook&utm_medium=social&utm_campaign=[campaign_name]
 
LinkedIn posts:
utm_source=linkedin&utm_medium=social&utm_campaign=[campaign_name]
 
Twitter posts:
utm_source=twitter&utm_medium=social&utm_campaign=[campaign_name]

Google Ads:

  1. Go to Settings → Account settings
  2. Add Auto-tagging (for gclid)
  3. Add Final URL suffix for manual tracking:

Search campaigns:

Code
utm_source=google-search&utm_medium=cpc&utm_campaign=`{"{"}{"{"}campaignid{"}"}{"}"}}`&utm_content=`{"{"}{"{"}adgroupid{"}"}{"}"}}`&utm_term=`{"{"}{"{"}keyword{"}"}{"}"}}`

Display campaigns:

Code
utm_source=google-display&utm_medium=cpc&utm_campaign=`{"{"}{"{"}campaignid{"}"}{"}"}}`&utm_content=`{"{"}{"{"}creative{"}"}{"}"}}`

Facebook Ads Manager:

  1. Go to Ad level
  2. Add URL parameters:
Code
utm_source=facebook-ads&utm_medium=cpc&utm_campaign={"{"}{"{"}campaign.name{"}"}{"}"}}&utm_content={"{"}{"{"}adset.name{"}"}{"}"}}

Step 5: Validate Platform Tracking

For each platform, test identification:

  1. Create test campaign with platform-specific utm_source
  2. Click link from actual platform
  3. Check GA4 Realtime:
    • Reports → Realtime
    • Look at "Traffic sources by source and medium"
    • Verify correct platform appears

Example validation:

Markdown
✅ Clicked Mailchimp link
✅ GA4 shows: mailchimp / email
✅ NOT showing: email / email or newsletter / email
 
✅ Clicked Facebook post
✅ GA4 shows: facebook / social
✅ NOT showing: social / social
 
✅ Clicked Google Search Ad
✅ GA4 shows: google-search / cpc
✅ NOT showing: google / cpc (too generic if you also run Display)

Advanced Platform Identification

Multi-Brand Scenarios

If you manage multiple brands with shared platforms:

Option 1: Brand-specific sources

Code
brand_a-facebook
brand_b-facebook
brand_a-mailchimp
brand_b-mailchimp

Option 2: Use utm_campaign for brand

Code
utm_source=facebook&utm_campaign=brand_a_summer_sale
utm_source=facebook&utm_campaign=brand_b_summer_sale

Recommendation: Option 2 keeps sources cleaner.

White-Label Platform Scenarios

If using white-label tools:

Use your actual vendor's name, not the white-label brand:

utm_source=sendgrid (actual platform) ❌ utm_source=ourcompany_mailer (white-label name)

Why: Platform identification should reflect the actual technology, not the branding.

Shared Platform Scenarios

If multiple teams use the same platform:

Option 1: Use different campaigns

Code
Team A: utm_source=mailchimp&utm_campaign=team_a_newsletter
Team B: utm_source=mailchimp&utm_campaign=team_b_promo

Option 2: Use utm_content for team

Code
utm_source=mailchimp&utm_campaign=june_newsletter&utm_content=team_a

Option 3: Separate sources (if necessary)

Code
mailchimp-team_a
mailchimp-team_b

Recommendation: Option 1 or 2. Keep sources for platforms, not teams.

Platform Identification Checklist

Before launching any campaign:

  • Identify exact platform sending traffic
  • Check naming convention document
  • Use platform's actual name as utm_source
  • Avoid generic terms (social, email, partner, newsletter)
  • Add to documentation if new platform
  • Test in GA4 Realtime before full launch
  • Verify consistency with existing campaigns on same platform

✅ 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 identify the specific campaign or the platform in utm_source?

Platform goes in utm_source. Campaign goes in utm_campaign.

✅ Correct:

Code
utm_source=facebook&utm_campaign=summer_sale

❌ Wrong:

Code
utm_source=facebook_summer_sale&utm_campaign=promo

What if I don't know which platform sent traffic?

Direct traffic or referrals from partners who won't add UTMs:

  • Referral traffic shows as the domain in GA4 (e.g., techcrunch.com)
  • For untagged traffic you control, add UTM parameters
  • For traffic you don't control, rely on GA4's automatic referral tracking

Can I use the same utm_source for organic and paid from one platform?

Two approaches:

Option 1: Separate sources

  • Organic: utm_source=facebook
  • Paid: utm_source=facebook-ads

Option 2: Same source, different medium

  • Organic: utm_source=facebook&utm_medium=social
  • Paid: utm_source=facebook&utm_medium=cpc

Recommendation: Option 1 for clearer reporting.

How do I identify traffic from email signatures?

Employee email signatures should NOT have UTM parameters if linking to your own site. This destroys attribution.

Exception: Sales team tracking individual performance on external prospecting:

Code
utm_source=email-signature&utm_medium=email&utm_campaign=outbound&utm_content=john_doe

Only use for outbound sales emails, never internal communications.

What about SMS platforms?

Use the SMS platform's name:

Code
utm_source=twilio&utm_medium=sms
utm_source=attentive&utm_medium=sms
utm_source=postscript&utm_medium=sms

Should I identify app vs web campaigns differently?

If running campaigns specifically for app install vs web:

Option 1: Use utm_campaign

Code
utm_source=facebook-ads&utm_campaign=app_install_ios
utm_source=facebook-ads&utm_campaign=web_signup

Option 2: Separate sources (if needed)

Code
utm_source=facebook-app&utm_campaign=install_ios
utm_source=facebook-web&utm_campaign=signup

Recommendation: Option 1 unless you need strict separation.


Related: Generic Source Attribution Rule

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.