How to Fix Conflicting UTM Channel Medium Combinations
Laura Bennett discovered that 42% of her paid traffic was showing up in GA4's "Unassigned" channel.
$187,000 in quarterly ad spend with no channel attribution.
After two days of investigation, she found the problem: Her agency had been using conflicting source-medium combinations across all campaigns.
LinkedIn Ads: utm_source=linkedin&utm_medium=social (should be cpc)
Facebook Ads: utm_source=facebook&utm_medium=organic (should be cpc)
Email campaigns: utm_source=mailchimp&utm_medium=referral (should be email)
This guide will show you exactly how to find and fix these conflicts—permanently.
🚨 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
How to Identify Conflicting Pairs
Step 1: Check GA4 Unassigned Channel
Unassigned channel = biggest red flag for conflicts
In GA4:
- Reports → Acquisition → Traffic Acquisition
- Look for "Unassigned" in Default channel grouping
- If Unassigned has significant traffic → you have conflicts
Export the data:
- Click "Unassigned" row
- Add secondary dimension: Session medium
- Add another dimension: Session source
- Export to CSV
You'll see problematic pairs:
Channel,Source,Medium,Sessions
Unassigned,linkedin,social,12,445
Unassigned,facebook,organic,8,332
Unassigned,google,email,3,221Step 2: Audit All Source-Medium Combinations
Complete source-medium inventory:
In GA4:
- Explorations → Free Form
- Dimensions: Session source, Session medium
- Metrics: Sessions, Users, Conversions
- Date range: Last 90 days
- Export data
Review for logical conflicts:
Source,Medium,Sessions,Conflict?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
facebook,organic,23,445,❌ CONFLICT (ads aren't "organic")
linkedin,social,12,334,⚠️ AMBIGUOUS (organic or paid?)
google,social,8,221,❌ CONFLICT (search ≠ social)
mailchimp,cpc,3,556,❌ CONFLICT (email ≠ paid ads)
twitter,email,1,223,❌ CONFLICT (social ≠ email)
facebook,cpc,34,221,✅ VALID (paid ads)
mailchimp,email,18,445,✅ VALID (email platform)
linkedin,cpc,9,334,✅ VALID (paid ads)Step 3: Calculate Impact
For each conflict, measure:
| Conflict | Sessions | Conversions | Revenue | Ad Spend | Priority |
|---|---|---|---|---|---|
| linkedin + social (paid) | 12,445 | 89 | $234,000 | $45,000 | CRITICAL |
| facebook + organic (paid) | 8,332 | 67 | $178,000 | $38,000 | HIGH |
| google + social | 3,221 | 12 | $34,000 | $12,000 | MEDIUM |
Fix in priority order (highest revenue/spend impact first).
😰 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 Fix Common Conflicts
Conflict Type 1: Paid Ads with Wrong Medium
Problem: Paid advertising campaigns using organic or social mediums
LinkedIn Ads
Conflict:
utm_source=linkedin&utm_medium=social
Why it's wrong:
- Paid ads ≠ organic social posts
- Creates ambiguity about campaign type
- May assign to wrong channel
Fix:
utm_source=linkedin&utm_medium=cpc
OR
utm_source=linkedin-ads&utm_medium=cpc
How to update:
-
LinkedIn Campaign Manager:
- Navigate to campaign
- Edit campaign settings
- Update URL parameters section
- Change medium from "social" to "cpc"
-
Bulk update (if many campaigns):
Campaign Manager → Campaigns → Select all → Edit → URL parameters Find: utm_medium=social Replace: utm_medium=cpc
Facebook Ads
Conflict:
utm_source=facebook&utm_medium=organic
Why it's wrong:
- Facebook ads aren't organic
- "Organic" is for unpaid search results
- Completely illogical combination
Fix:
utm_source=facebook&utm_medium=cpc
OR
utm_source=facebook-ads&utm_medium=cpc
How to update:
-
Facebook Ads Manager:
- Select campaign → Ad Set → Ad
- Edit ad creative
- Update URL parameters in "Website URL"
- Change:
utm_medium=organic→utm_medium=cpc
-
Use Facebook's auto-tag feature:
- Settings → URL parameters
- Template:
utm_source={"{"}{"{"}site_source_name{"}"}{"}"}}&utm_medium=cpc&utm_campaign={"{"}{"{"}campaign.name{"}"}{"}"}}
Twitter Ads
Conflict:
utm_source=twitter&utm_medium=organic
Fix:
utm_source=twitter&utm_medium=cpc
OR
utm_source=twitter-ads&utm_medium=cpc
How to update:
- Twitter Ads Manager
- Select campaign → Edit
- Update URL parameters
- Change medium to "cpc"
Conflict Type 2: Search Engines with Non-Search Mediums
Google + Social
Conflict:
utm_source=google&utm_medium=social
Common cause: YouTube campaigns thinking it's "social"
Fix:
utm_source=google-youtube&utm_medium=cpc
OR
utm_source=youtube&utm_medium=video
How to update:
-
Google Ads (YouTube campaigns):
- Campaign → Settings → Campaign URL options
- Update Final URL suffix
- Change:
utm_source=google&utm_medium=social - To:
utm_source=google-youtube&utm_medium=cpc
-
Organic YouTube links:
- Update channel/video descriptions
- Change:
utm_source=google&utm_medium=social - To:
utm_source=youtube&utm_medium=video
Bing + Social
Conflict:
utm_source=bing&utm_medium=social
Fix:
utm_source=bing&utm_medium=cpc (for paid)
utm_source=bing&utm_medium=organic (for organic)
Conflict Type 3: Email Platforms with Wrong Medium
Mailchimp + CPC
Conflict:
utm_source=mailchimp&utm_medium=cpc
Why it's wrong: Email platforms don't run paid ad campaigns
Fix:
utm_source=mailchimp&utm_medium=email
How to update:
-
Mailchimp:
- Campaign → Settings → Tracking
- Google Analytics tracking
- Verify/update UTM parameters
- Medium must be "email"
-
Update all email templates:
- Search all templates for
utm_medium=cpc - Replace with
utm_medium=email
- Search all templates for
SendGrid + Social
Conflict:
utm_source=sendgrid&utm_medium=social
Fix:
utm_source=sendgrid&utm_medium=email
How to update:
- SendGrid → Marketing → Single Sends
- Edit campaign
- Update all links
- Change medium to "email"
Conflict Type 4: Platform Mismatches
Facebook + Email
Conflict:
utm_source=facebook&utm_medium=email
Possible cause:
- Facebook notification emails
- Misunderstood campaign type
Fix (depends on actual source):
If Facebook ads:
utm_source=facebook&utm_medium=cpc
If Facebook email notification:
utm_source=facebook-notification&utm_medium=email
If organic Facebook post:
utm_source=facebook&utm_medium=social
Step-by-Step Fix Process
Phase 1: Prioritize Conflicts
Create fix priority list:
# UTM Conflict Fix Priority
## Critical (Fix This Week)
1. LinkedIn Ads: social → cpc (12,445 sessions, $45K spend)
2. Facebook Ads: organic → cpc (8,332 sessions, $38K spend)
3. Google YouTube: social → cpc (3,221 sessions, $12K spend)
## High (Fix Next Week)
4. Mailchimp: referral → email (4,556 sessions)
5. Twitter Ads: social → cpc (2,334 sessions, $8K spend)
## Medium (Fix Within Month)
6. Various partner links: wrong mediums (1,223 sessions)Phase 2: Update Active Campaigns
For each platform:
1. LinkedIn Ads
Old: utm_source=linkedin&utm_medium=social
New: utm_source=linkedin&utm_medium=cpc
Where to update:
- Campaign Manager → All campaigns → URL parameters
- Update templates for future campaigns
2. Facebook Ads
Old: utm_source=facebook&utm_medium=organic
New: utm_source=facebook&utm_medium=cpc
Where to update:
- Ads Manager → All active ads → URL parameters
- Ad account settings → Default parameters
3. Email Campaigns
Old: utm_source=mailchimp&utm_medium=referral
New: utm_source=mailchimp&utm_medium=email
Where to update:
- Mailchimp → All campaigns → Tracking settings
- Email templates → All link UTMs
Phase 3: Update Templates
Prevent future conflicts by fixing templates:
Campaign templates spreadsheet:
# Approved Source-Medium Templates
| Platform | Type | Source | Medium | Template |
|----------|------|--------|--------|----------|
| Facebook | Paid | facebook-ads | cpc | utm_source=facebook-ads&utm_medium=cpc&utm_campaign=[name] |
| Facebook | Organic | facebook | social | utm_source=facebook&utm_medium=social&utm_campaign=[name] |
| LinkedIn | Paid | linkedin-ads | cpc | utm_source=linkedin-ads&utm_medium=cpc&utm_campaign=[name] |
| LinkedIn | Organic | linkedin | social | utm_source=linkedin&utm_medium=social&utm_campaign=[name] |
| Mailchimp | Email | mailchimp | email | utm_source=mailchimp&utm_medium=email&utm_campaign=[name] |
| Google Ads | Search | google | cpc | Auto-tagged (gclid) |
| Google Ads | YouTube | google-youtube | cpc | utm_source=google-youtube&utm_medium=cpc&utm_campaign=`{"{"}{"{"}campaignid{"}"}{"}"}}` |Phase 4: Validate Fixes
Test each updated campaign:
Validation checklist:
Platform: LinkedIn Ads
- [ ] Updated UTM: utm_medium=cpc (changed from social)
- [ ] Clicked test ad
- [ ] Checked GA4 Realtime
- [ ] Verified channel: Paid Social (not Unassigned)
- [ ] Confirmed session source: linkedin
- [ ] Confirmed session medium: cpc
- [ ] Update date: 2025-01-14GA4 Realtime verification:
- Click updated campaign link
- GA4 → Reports → Realtime
- Check "Traffic sources" card
- Verify correct source + medium appears
- Check it's NOT in Unassigned
Phase 5: Monitor Migration
Track fix progress weekly:
Week 1 (Before fixes):
Unassigned channel: 45,892 sessions
Paid Social channel: 12,334 sessions
Week 2 (After LinkedIn fix):
Unassigned channel: 33,447 sessions (-27%)
Paid Social channel: 24,779 sessions (+101%)
Week 3 (After Facebook fix):
Unassigned channel: 25,115 sessions (-45% from baseline)
Paid Social channel: 33,111 sessions (+169% from baseline)
Goal: Unassigned < 5% of total traffic
Prevention: Stop Conflicts Forever
1. Source-Medium Validation Rules
Implement validation before campaign launch:
const VALID_COMBINATIONS = {
'facebook': ['social', 'cpc', 'paid-social'],
'facebook-ads': ['cpc', 'paid-social'],
'linkedin': ['social', 'cpc', 'paid-social'],
'linkedin-ads': ['cpc', 'paid-social'],
'google': ['organic', 'cpc', 'display'],
'google-youtube': ['cpc', 'video'],
'youtube': ['social', 'video'],
'mailchimp': ['email'],
'sendgrid': ['email'],
'klaviyo': ['email']
};
function validateSourceMedium(source, medium) {
const validMediums = VALID_COMBINATIONS[source];
if (!validMediums) {
throw new Error(`Unknown source: ${"{"}{"{"}source{"}"}{"}"}}`);
}
if (!validMediums.includes(medium)) {
throw new Error(
`Invalid medium "${"{"}{"{"}medium{"}"}{"}"}}" for source "${"{"}{"{"}source{"}"}{"}"}}". ` +
`Valid options: ${validMediums.join(', ')}`
);
}
return true;
}
// Usage
try {
validateSourceMedium('linkedin', 'social'); // For paid ads, should be 'cpc'
} catch (error) {
alert(error.message); // "Invalid medium..."
}2. Platform-Specific UTM Builders
Create dedicated builders per platform:
LinkedIn Ads Builder:
- Source: Pre-filled "linkedin-ads" (locked)
- Medium: Pre-filled "cpc" (locked)
- Campaign: User input
- Content: User input
Facebook Organic Builder:
- Source: Pre-filled "facebook" (locked)
- Medium: Pre-filled "social" (locked)
- Campaign: User input
Benefit: Impossible to create conflicts
3. Automated Auditing
Monthly audit script:
// Fetch GA4 data via API
// Check for problematic combinations
const FORBIDDEN_PAIRS = [
{ source: 'google', medium: 'social' },
{ source: 'google', medium: 'email' },
{ source: 'facebook', medium: 'organic' },
{ source: 'facebook', medium: 'email' },
{ source: 'linkedin', medium: 'email' },
{ source: 'mailchimp', medium: 'cpc' },
{ source: 'mailchimp', medium: 'social' }
];
// Alert if any forbidden pair has sessions
// Notify team to investigate and fix4. Documentation & Training
Team training checklist:
- Understand GA4 channel grouping logic
- Know valid source-medium combinations per platform
- Use approved templates only
- Validate in GA4 Realtime before full launch
- Monthly review of Unassigned channel
✅ 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
How long does it take to fix all conflicts?
Typical timeline:
- Audit and prioritize: 1-2 hours
- Fix top 3 conflicts: 2-4 hours
- Update all templates: 1-2 hours
- Validate changes: 1 hour
- Total: 1-2 days
Most teams can fix critical conflicts within one week.
Will fixing conflicts break historical data?
No. Historical data remains unchanged. Future data will have correct attribution.
Tip: Note the fix date so you can filter reports by before/after periods.
Can I bulk-edit UTMs in GA4?
No. GA4 doesn't allow retroactive data editing.
Solution: Fix at the source (campaign platforms) so new data is correct.
What if my agency refuses to fix conflicts?
Require compliance or find new agency.
Email template:
Subject: Required UTM Parameter Fixes
Our GA4 data shows 42% of paid traffic is unattributable due to
conflicting source-medium combinations.
Required fixes (by [date]):
1. LinkedIn Ads: Change utm_medium from "social" to "cpc"
2. Facebook Ads: Change utm_medium from "organic" to "cpc"
3. All email campaigns: Ensure utm_medium="email"
This is non-negotiable for accurate attribution reporting.
Please confirm completion by [date].
Should I fix old paused campaigns?
Only if you plan to restart them. Focus on active campaigns first.
Priority:
- Active high-spend campaigns
- Templates for future campaigns
- Paused campaigns (if restarting)
- Archived campaigns (leave alone)
How do I know if my fixes worked?
Check GA4 after 24-48 hours:
- Reports → Acquisition → Traffic Acquisition
- Unassigned channel traffic should decrease
- Correct channels (Paid Social, Email, etc.) should increase
- Compare week-over-week changes
Success criteria: Unassigned < 5% of total traffic