UTM ID Complete Setup Guide with Platform Click IDs
Master utm_id implementation with gclid, fbclid, and other platform click IDs for complete GA4 cost data import and ROI tracking.
Mark Foster was setting up campaign tracking for a $500K annual ad budget across five platforms. His agency suggested using utm_id for better campaign organization.
He added utm_id to every campaign. Looked perfect in the tracking sheet. Three months later, GA4 cost reports showed $0 for everything.
The problem? He used utm_id without platform click IDs. Cost data import requires both.
This guide shows you exactly how to set up utm_id correctly with all required platform identifiers.
Table of contents
- What Is utmid?
- utmid vs Other UTM Parameters
- Complete utmid Setup by Platform
- Google Ads Setup
- Facebook/Meta Ads Setup
- LinkedIn Ads Setup
- Microsoft Ads Setup
- TikTok Ads Setup
- utmid Naming Conventions
- Option 1: Platform + Campaign Type + ID
- Option 2: Use Platform Campaign IDs
- Option 3: Custom Naming Schema
- Best Practice Recommendation
- Complete URL Examples
- Google Search Ad
- Facebook Ad
- LinkedIn Ad
- Validation & Testing
- Test Checklist Per Campaign
- Real-Time Testing
- Common Issues & Fixes
- FAQ
- Is utmid required for GA4 cost import?
- Can I change utmid after campaign launches?
- Do I need different utmid for different ad groups?
- What if platform doesn't support dynamic parameters?
- Can I use the same utmid across platforms?
- How long is utmid retained in GA4?
🚨 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 utm_id?
utm_id = Unique campaign identifier used for importing cost and performance data from advertising platforms into GA4.
utm_id vs Other UTM Parameters
| Parameter | Purpose | Example |
|---|---|---|
| utm_source | Platform/publisher | google, facebook, mailchimp |
| utm_medium | Traffic type | cpc, email, social |
| utm_campaign | Campaign name | summer_sale, brand_search |
| utm_content | Ad variation | banner_a, text_ad_1 |
| utm_term | Keyword (search) | running shoes, saas software |
| utm_id | Campaign ID | search_brand_q4, fb_123456 |
utm_id is optional but powerful when combined with platform click IDs for cost tracking.
Complete utm_id Setup by Platform
Google Ads Setup
Requirements:
- Auto-tagging enabled (gclid)
- utm_id parameter configured
- GA4-Google Ads link active
Step 1: Enable Auto-Tagging
- Google Ads → Settings → Account settings
- Auto-tagging: Turn ON
- Save
What this does: Adds gclid parameter to all click URLs automatically.
Step 2: Configure utm_id in URL Options
Campaign-level setup:
- Select campaign
- Settings → Campaign URL options
- Final URL suffix:
utm_id=`{"{"}{"{"}campaignid{"}"}{"}"}}`&utm_campaign=`{"{"}{"{"}campaign{"}"}{"}"}}`&utm_content=`{"{"}{"{"}adgroupid{"}"}{"}"}}`&utm_term=`{"{"}{"{"}keyword{"}"}{"}"}}`
Dynamic parameters:
{"{"}{"{"}campaignid{"}"}{"}"}}- Unique campaign ID{"{"}{"{"}campaign{"}"}{"}"}}- Campaign name{"{"}{"{"}adgroupid{"}"}{"}"}}- Ad group ID{"{"}{"{"}keyword{"}"}{"}"}}- Matched keyword
Result URL:
https://site.com?gclid=CjwKCAiA...&utm_id=12345678&utm_campaign=Brand_Search&utm_content=9012&utm_term=best%20crm
Step 3: Link Google Ads to GA4
- GA4 → Admin → Product Links → Google Ads links
- Click "Link"
- Select Google Ads account
- Enable:
- ✅ Import cost data
- ✅ Import clicks and impressions
- Save
Verify: Link status shows "Active"
😰 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
Facebook/Meta Ads Setup
Requirements:
- Facebook auto-adds fbclid
- utm_id in URL parameters
- GA4-Meta link active
Step 1: Configure URL Parameters
Facebook Ads Manager:
- Select campaign → Ad Set → Ad
- Edit ad creative
- URL parameters:
utm_id={"{"}{"{"}campaign.id{"}"}{"}"}}&utm_source=facebook&utm_medium=cpc&utm_campaign={"{"}{"{"}campaign.name{"}"}{"}"}}&utm_content={"{"}{"{"}adset.name{"}"}{"}"}}
Facebook dynamic values:
{"{"}{"{"}campaign.id{"}"}{"}"}}- Campaign ID{"{"}{"{"}campaign.name{"}"}{"}"}}- Campaign name{"{"}{"{"}adset.name{"}"}{"}"}}- Ad set name{"{"}{"{"}ad.name{"}"}{"}"}}- Ad name
Result URL:
https://site.com?fbclid=IwAR2x...&utm_id=23456789&utm_source=facebook&utm_medium=cpc&utm_campaign=Cold_Traffic
Note: Facebook automatically adds fbclid. Don't try to add it manually.
Step 2: Link Meta Ads to GA4
- GA4 → Admin → Product Links → Meta Ads links
- Click "Link"
- Authenticate with Facebook Business Manager
- Select ad account
- Enable cost data import
- Save
LinkedIn Ads Setup
Requirements:
- LinkedIn Insight Tag installed (li_fat_id)
- utm_id in campaign URLs
- Manual cost import (LinkedIn doesn't auto-link)
Step 1: Install Insight Tag
- LinkedIn Campaign Manager → Account Assets → Insight Tag
- Copy tag code:
<script type="text/javascript">
_linkedin_partner_id = "YOUR_PARTNER_ID";
window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
window._linkedin_data_partner_ids.push(_linkedin_partner_id);
</script><script type="text/javascript">
(function(l) {
if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])};
window.lintrk.q=[]}
var s = document.getElementsByTagName("script")[0];
var b = document.createElement("script");
b.type = "text/javascript";b.async = true;
b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js";
s.parentNode.insertBefore(b, s);})(window.lintrk);
</script>- Install in site
<head>section
Step 2: Configure Campaign URLs
LinkedIn Campaign Manager:
- Select campaign → Ads
- Edit ad
- URL parameters:
utm_id={"{"}{"{"}campaign.id{"}"}{"}"}}&utm_source=linkedin&utm_medium=cpc&utm_campaign={"{"}{"{"}campaign.name{"}"}{"}"}}&utm_content={"{"}{"{"}creative.id{"}"}{"}"}}
Result URL:
https://site.com?li_fat_id=abc123...&utm_id=34567890&utm_source=linkedin&utm_medium=cpc
Microsoft Ads Setup
Requirements:
- UET auto-tagging enabled (msclkid)
- utm_id configured
- Manual cost import
Step 1: Enable UET Auto-Tagging
- Microsoft Ads → Campaigns → Settings
- Tracking: Enable UET auto-tagging
- Save
Adds: msclkid parameter automatically
Step 2: Configure URL Suffix
Campaign settings:
- Select campaign
- Tracking template or URL options
- Custom parameters:
utm_id={"{"}{"{"}CampaignId{"}"}{"}"}}&utm_campaign={"{"}{"{"}Campaign{"}"}{"}"}}&utm_content={"{"}{"{"}AdGroupId{"}"}{"}"}}&utm_term=`{"{"}{"{"}QueryString{"}"}{"}"}}`
Result URL:
https://site.com?msclkid=def456...&utm_id=45678901&utm_campaign=Brand_Search_Bing
TikTok Ads Setup
Requirements:
- TikTok auto-adds ttclid
- utm_id in tracking parameters
Configure URL Parameters
TikTok Ads Manager:
- Campaign → Ad Group → Ad
- Tracking settings
- Custom parameters:
utm_id={"{"}{"{"}campaign_id{"}"}{"}"}}&utm_source=tiktok&utm_medium=cpc&utm_campaign={"{"}{"{"}campaign_name{"}"}{"}"}}
Result URL:
https://site.com?ttclid=xyz789...&utm_id=56789012&utm_source=tiktok&utm_medium=cpc
utm_id Naming Conventions
Option 1: Platform + Campaign Type + ID
google_search_brand
facebook_cold_traffic
linkedin_lead_gen_q4
Format: platform_campaign-type_descriptor
Option 2: Use Platform Campaign IDs
utm_id=12345678 (Google Ads campaign ID)
utm_id=23456789 (Facebook campaign ID)
Pros:
- Guaranteed unique
- Easy API matching
- Auto-populated
Cons:
- Less human-readable
Option 3: Custom Naming Schema
utm_id=2024q4_google_search_brand_001
utm_id=2024q4_facebook_prospecting_cold_002
Format: year-quarter_platform_type_descriptor_counter
Pros:
- Human-readable
- Sortable by time period
- Clear platform identification
Cons:
- Requires discipline
- Risk of duplicates
Best Practice Recommendation
Use platform campaign IDs for utm_id:
Google: utm_id=`{"{"}{"{"}campaignid{"}"}{"}"}}`
Facebook: utm_id={"{"}{"{"}campaign.id{"}"}{"}"}}
LinkedIn: utm_id={"{"}{"{"}campaign.id{"}"}{"}"}}
Use utm_campaign for human-readable names:
utm_campaign=brand_search_q4
utm_campaign=cold_traffic_prospecting
Complete URL Examples
Google Search Ad
Destination URL:
https://yoursite.com/landing?
gclid=CjwKCAiA8YyuBhBSEiwA5R3-E7vQ...
&utm_id=12345678
&utm_source=google
&utm_medium=cpc
&utm_campaign=brand_search_q4
&utm_content=ad_group_123
&utm_term=best%20crm%20software
Includes:
- ✅ gclid (auto-tagging)
- ✅ utm_id (campaign ID)
- ✅ utm_source (google)
- ✅ utm_medium (cpc)
- ✅ utm_campaign (human-readable)
- ✅ utm_content (ad group)
- ✅ utm_term (keyword)
Facebook Ad
Destination URL:
https://yoursite.com/offer?
fbclid=IwAR2xK9tL3mP4nQ5rS6tU7vW8xY9zA0bC1dE2fF3...
&utm_id=23456789
&utm_source=facebook
&utm_medium=cpc
&utm_campaign=cold_traffic_q4
&utm_content=adset_prospecting
Includes:
- ✅ fbclid (auto-added by Facebook)
- ✅ utm_id (campaign ID)
- ✅ utm_source (facebook)
- ✅ utm_medium (cpc)
- ✅ utm_campaign (human-readable)
- ✅ utm_content (ad set)
LinkedIn Ad
Destination URL:
https://yoursite.com/demo?
li_fat_id=abc123def456ghi789...
&utm_id=34567890
&utm_source=linkedin
&utm_medium=cpc
&utm_campaign=lead_gen_b2b_q4
&utm_content=creative_video_001
Includes:
- ✅ li_fat_id (LinkedIn Insight Tag)
- ✅ utm_id (campaign ID)
- ✅ utm_source (linkedin)
- ✅ utm_medium (cpc)
- ✅ utm_campaign (human-readable)
- ✅ utm_content (creative ID)
Validation & Testing
Test Checklist Per Campaign
Platform: Google Ads
Campaign: Brand Search Q4
Pre-Launch Validation:
- [ ] Auto-tagging enabled (gclid will be added)
- [ ] Final URL suffix configured with utm_id
- [ ] Test ad clicked
- [ ] Landing URL contains gclid parameter
- [ ] Landing URL contains utm_id parameter
- [ ] GA4 Realtime shows both parameters
- [ ] GA4 linked to Google Ads
- [ ] Cost import enabled
- [ ] Wait 48 hours
- [ ] Verify cost data appears in GA4 reports
Status: [ ] PASS [ ] FAIL
Date tested: __________
Tested by: __________Real-Time Testing
- Click test ad
- Check URL in browser:
Expected: https://site.com?gclid=...&utm_id=...&utm_campaign=...
-
Check GA4 Realtime (within 30 seconds):
- Reports → Realtime
- Click event details
- Verify: gclid present, utm_id present
-
Check GA4 User Explorer:
- After 24 hours
- Find test user
- Verify all parameters captured correctly
Common Issues & Fixes
| Issue | Symptom | Fix |
|---|---|---|
| No gclid | Cost import fails | Enable auto-tagging |
| No utm_id | Campaign grouping broken | Add Final URL suffix |
| Parameters stripped | URL too short | Fix redirects to preserve params |
| Cost shows $0 | Even with gclid | Check GA4-platform link |
| utm_id duplicates | Multiple campaigns same ID | Use unique IDs per campaign |
✅ 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
Is utm_id required for GA4 cost import?
No, but highly recommended.
Minimum for cost import:
- Platform click ID (gclid, fbclid, etc.)
With utm_id you get:
- Better campaign grouping
- Custom cost reporting
- Cross-platform campaign tracking
Can I change utm_id after campaign launches?
Yes, but not recommended. Changing utm_id creates split data:
- Old sessions: old utm_id
- New sessions: new utm_id
Better: Keep utm_id consistent for campaign duration.
Do I need different utm_id for different ad groups?
Depends on reporting needs:
Option 1: Campaign-level utm_id
All ad groups: utm_id=12345 (campaign ID)
Differentiate with: utm_content=`{"{"}{"{"}adgroupid{"}"}{"}"}}`
Option 2: Ad group-level utm_id
Ad group 1: utm_id=12345_ag1
Ad group 2: utm_id=12345_ag2
Recommendation: Campaign-level utm_id, use utm_content for ad groups.
What if platform doesn't support dynamic parameters?
Use static utm_id:
utm_id=linkedin_lead_gen_q4_2024
Trade-off: Less granular, but still useful for cost grouping.
Can I use the same utm_id across platforms?
Not recommended.
Problem: Can't differentiate which platform drove results.
Better:
Google: utm_id=google_12345
Facebook: utm_id=facebook_23456
OR use platform-specific IDs:
Google: utm_id=12345 (Google campaign ID)
Facebook: utm_id=23456 (Facebook campaign ID)
How long is utm_id retained in GA4?
Standard retention: Based on your GA4 retention settings (2 months or 14 months).
Cost data: Retained separately per GA4 data import settings.
Related: UTM ID Without Platform Rule