attributionUpdated 2025

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.

9 min readattribution

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.

🚨 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

ParameterPurposeExample
utm_sourcePlatform/publishergoogle, facebook, mailchimp
utm_mediumTraffic typecpc, email, social
utm_campaignCampaign namesummer_sale, brand_search
utm_contentAd variationbanner_a, text_ad_1
utm_termKeyword (search)running shoes, saas software
utm_idCampaign IDsearch_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

Requirements:

  1. Auto-tagging enabled (gclid)
  2. utm_id parameter configured
  3. GA4-Google Ads link active

Step 1: Enable Auto-Tagging

  1. Google Ads → Settings → Account settings
  2. Auto-tagging: Turn ON
  3. Save

What this does: Adds gclid parameter to all click URLs automatically.

Step 2: Configure utm_id in URL Options

Campaign-level setup:

  1. Select campaign
  2. Settings → Campaign URL options
  3. Final URL suffix:
Code
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:

Code
https://site.com?gclid=CjwKCAiA...&utm_id=12345678&utm_campaign=Brand_Search&utm_content=9012&utm_term=best%20crm
  1. GA4 → Admin → Product Links → Google Ads links
  2. Click "Link"
  3. Select Google Ads account
  4. Enable:
    • ✅ Import cost data
    • ✅ Import clicks and impressions
  5. 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

Get Your Free Audit Report

Facebook/Meta Ads Setup

Requirements:

  1. Facebook auto-adds fbclid
  2. utm_id in URL parameters
  3. GA4-Meta link active

Step 1: Configure URL Parameters

Facebook Ads Manager:

  1. Select campaign → Ad Set → Ad
  2. Edit ad creative
  3. URL parameters:
Code
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:

Code
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.

  1. GA4 → Admin → Product Links → Meta Ads links
  2. Click "Link"
  3. Authenticate with Facebook Business Manager
  4. Select ad account
  5. Enable cost data import
  6. Save

LinkedIn Ads Setup

Requirements:

  1. LinkedIn Insight Tag installed (li_fat_id)
  2. utm_id in campaign URLs
  3. Manual cost import (LinkedIn doesn't auto-link)

Step 1: Install Insight Tag

  1. LinkedIn Campaign Manager → Account Assets → Insight Tag
  2. Copy tag code:
Html
<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>
  1. Install in site <head> section

Step 2: Configure Campaign URLs

LinkedIn Campaign Manager:

  1. Select campaign → Ads
  2. Edit ad
  3. URL parameters:
Code
utm_id={"{"}{"{"}campaign.id{"}"}{"}"}}&utm_source=linkedin&utm_medium=cpc&utm_campaign={"{"}{"{"}campaign.name{"}"}{"}"}}&utm_content={"{"}{"{"}creative.id{"}"}{"}"}}

Result URL:

Code
https://site.com?li_fat_id=abc123...&utm_id=34567890&utm_source=linkedin&utm_medium=cpc

Microsoft Ads Setup

Requirements:

  1. UET auto-tagging enabled (msclkid)
  2. utm_id configured
  3. Manual cost import

Step 1: Enable UET Auto-Tagging

  1. Microsoft Ads → Campaigns → Settings
  2. Tracking: Enable UET auto-tagging
  3. Save

Adds: msclkid parameter automatically

Step 2: Configure URL Suffix

Campaign settings:

  1. Select campaign
  2. Tracking template or URL options
  3. Custom parameters:
Code
utm_id={"{"}{"{"}CampaignId{"}"}{"}"}}&utm_campaign={"{"}{"{"}Campaign{"}"}{"}"}}&utm_content={"{"}{"{"}AdGroupId{"}"}{"}"}}&utm_term=`{"{"}{"{"}QueryString{"}"}{"}"}}`

Result URL:

Code
https://site.com?msclkid=def456...&utm_id=45678901&utm_campaign=Brand_Search_Bing

TikTok Ads Setup

Requirements:

  1. TikTok auto-adds ttclid
  2. utm_id in tracking parameters

Configure URL Parameters

TikTok Ads Manager:

  1. Campaign → Ad Group → Ad
  2. Tracking settings
  3. Custom parameters:
Code
utm_id={"{"}{"{"}campaign_id{"}"}{"}"}}&utm_source=tiktok&utm_medium=cpc&utm_campaign={"{"}{"{"}campaign_name{"}"}{"}"}}

Result URL:

Code
https://site.com?ttclid=xyz789...&utm_id=56789012&utm_source=tiktok&utm_medium=cpc

utm_id Naming Conventions

Option 1: Platform + Campaign Type + ID

Code
google_search_brand
facebook_cold_traffic
linkedin_lead_gen_q4

Format: platform_campaign-type_descriptor

Option 2: Use Platform Campaign IDs

Code
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

Code
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:

Code
Google: utm_id=`{"{"}{"{"}campaignid{"}"}{"}"}}`
Facebook: utm_id={"{"}{"{"}campaign.id{"}"}{"}"}}
LinkedIn: utm_id={"{"}{"{"}campaign.id{"}"}{"}"}}

Use utm_campaign for human-readable names:

Code
utm_campaign=brand_search_q4
utm_campaign=cold_traffic_prospecting

Complete URL Examples

Google Search Ad

Code
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

Code
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

Code
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

Markdown
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

  1. Click test ad
  2. Check URL in browser:
Code
Expected: https://site.com?gclid=...&utm_id=...&utm_campaign=...
  1. Check GA4 Realtime (within 30 seconds):

    • Reports → Realtime
    • Click event details
    • Verify: gclid present, utm_id present
  2. Check GA4 User Explorer:

    • After 24 hours
    • Find test user
    • Verify all parameters captured correctly

Common Issues & Fixes

IssueSymptomFix
No gclidCost import failsEnable auto-tagging
No utm_idCampaign grouping brokenAdd Final URL suffix
Parameters strippedURL too shortFix redirects to preserve params
Cost shows $0Even with gclidCheck GA4-platform link
utm_id duplicatesMultiple campaigns same IDUse 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

Run Complete UTM Audit (Free Forever)

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

Code
All ad groups: utm_id=12345 (campaign ID)
Differentiate with: utm_content=`{"{"}{"{"}adgroupid{"}"}{"}"}}`

Option 2: Ad group-level utm_id

Code
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:

Code
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:

Code
Google: utm_id=google_12345
Facebook: utm_id=facebook_23456

OR use platform-specific IDs:

Code
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

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.