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.
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:
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.
Table of contents
- What Is Platform Identification?
- The Purpose of utmsource
- Examples
- Why Platform Identification Matters
- Example: Email Attribution Disaster
- How to Identify Platforms Correctly
- Step 1: Map All Your Traffic Sources
- Step 2: Define Source Name for Each Platform
- Step 3: Document Platform-to-Source Mapping
- Step 4: Implement Platform-Specific Tracking
- Step 5: Validate Platform Tracking
- Advanced Platform Identification
- Multi-Brand Scenarios
- White-Label Platform Scenarios
- Shared Platform Scenarios
- Platform Identification Checklist
- FAQ
- Should I identify the specific campaign or the platform in utmsource?
- What if I don't know which platform sent traffic?
- Can I use the same utmsource for organic and paid from one platform?
- How do I identify traffic from email signatures?
- What about SMS platforms?
- Should I identify app vs web campaigns differently?
🚨 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
| Question | Correct Answer (utm_source) | Wrong Answer |
|---|---|---|
| Where did this email traffic come from? | mailchimp | email |
| Which social platform sent this? | linkedin | social |
| Which partner referred this? | techcrunch | partner |
| Which ad platform? | google-search | ppc |
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):
Mailchimp campaigns: utm_source=email
SendGrid transactional: utm_source=email
Klaviyo automation: utm_source=email
HubSpot newsletters: utm_source=email
GA4 shows:
Source: email
Sessions: 34,556
Revenue: $145,000
Conversions: 892
Questions you CAN'T answer:
- Which email platform drives the highest revenue?
- Should we consolidate to fewer platforms?
- Which platform has the best conversion rate?
- Where should we invest more?
Annual cost breakdown:
| Platform | Annual Cost | Actual Revenue | ROI | Visible in GA4 |
|---|---|---|---|---|
| Mailchimp | $12,000 | $98,000 | 717% | ❌ Hidden |
| SendGrid | $8,000 | $4,000 | 50% | ❌ Hidden |
| Klaviyo | $18,000 | $38,000 | 211% | ❌ Hidden |
| HubSpot | $24,000 | $5,000 | 21% | ❌ Hidden |
| Total | $62,000 | $145,000 | 234% | ✅ 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
How to Identify Platforms Correctly
Step 1: Map All Your Traffic Sources
Create an inventory of every platform that sends traffic to your site:
# 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 campaignsMark which ones you actively use.
Step 2: Define Source Name for Each Platform
For each platform, create a specific utm_source value:
Email platforms:
Mailchimp → utm_source=mailchimp
SendGrid → utm_source=sendgrid
Klaviyo → utm_source=klaviyo
HubSpot → utm_source=hubspot
ActiveCampaign → utm_source=activecampaign
Customer.io → utm_source=customerioSocial media:
Facebook (organic) → utm_source=facebook
Instagram (organic) → utm_source=instagram
LinkedIn (organic) → utm_source=linkedin
Twitter (organic) → utm_source=twitter
TikTok (organic) → utm_source=tiktokPaid advertising:
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-adsPartners (use actual names):
TechCrunch feature → utm_source=techcrunch
VentureBeat article → utm_source=venturebeat
Partner ACME Corp → utm_source=partner-acme
Affiliate John Doe → utm_source=affiliate-johndoeStep 3: Document Platform-to-Source Mapping
Create a reference document:
# 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:
- Go to Campaign Settings
- Use "Add Google Analytics tracking"
- Or manually add to all links:
https://yoursite.com/offer?utm_source=mailchimp&utm_medium=email&utm_campaign=june_newsletter
SendGrid:
- Marketing → Settings → Tracking
- Enable Google Analytics
- Set Source:
sendgrid - Set Medium:
email
Klaviyo:
- Add to all email templates:
https://yoursite.com/[page]?utm_source=klaviyo&utm_medium=email&utm_campaign={{ campaign.name }}
Social Media Schedulers
Hootsuite / Buffer:
Create platform-specific templates:
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]Paid Advertising
Google Ads:
- Go to Settings → Account settings
- Add Auto-tagging (for gclid)
- Add Final URL suffix for manual tracking:
Search campaigns:
utm_source=google-search&utm_medium=cpc&utm_campaign=`{"{"}{"{"}campaignid{"}"}{"}"}}`&utm_content=`{"{"}{"{"}adgroupid{"}"}{"}"}}`&utm_term=`{"{"}{"{"}keyword{"}"}{"}"}}`
Display campaigns:
utm_source=google-display&utm_medium=cpc&utm_campaign=`{"{"}{"{"}campaignid{"}"}{"}"}}`&utm_content=`{"{"}{"{"}creative{"}"}{"}"}}`
Facebook Ads Manager:
- Go to Ad level
- Add URL parameters:
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:
- Create test campaign with platform-specific utm_source
- Click link from actual platform
- Check GA4 Realtime:
- Reports → Realtime
- Look at "Traffic sources by source and medium"
- Verify correct platform appears
Example validation:
✅ 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
brand_a-facebook
brand_b-facebook
brand_a-mailchimp
brand_b-mailchimp
Option 2: Use utm_campaign for brand
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
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
utm_source=mailchimp&utm_campaign=june_newsletter&utm_content=team_a
Option 3: Separate sources (if necessary)
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
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:
utm_source=facebook&utm_campaign=summer_sale
❌ Wrong:
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:
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:
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
utm_source=facebook-ads&utm_campaign=app_install_ios
utm_source=facebook-ads&utm_campaign=web_signup
Option 2: Separate sources (if needed)
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