Fix Missing utm_id in Paid Campaigns (5-Minute Guide)

UTMGuard Team
6 min readbest-practices

Quick diagnosis: You're running paid ads on LinkedIn, TikTok, Pinterest, or other non-Google/Facebook platforms. You check GA4 for ROI data and see:

  • Sessions: ✅ Tracked
  • Conversions: ✅ Tracked
  • Cost: ❌ $0.00
  • ROAS: ❌ N/A

The problem: Missing utm_id parameter.

Without utm_id, GA4 can't import your cost data, which means no ROI metrics and no way to know which campaigns are profitable.

The fix: Add utm_id to your campaign URLs. Takes 5 minutes.

🚨 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

Do You Actually Need utm_id?

Before adding utm_id, check if your platform auto-tags:

Platforms That DON'T Need utm_id (Skip This Guide)

These automatically send cost data to GA4:

  • Google Ads (uses gclid)
  • Facebook/Instagram Ads (uses fbclid)
  • Microsoft Ads (uses msclkid)

For these platforms: Use auto-tagging only. Don't add manual UTMs or utm_id.

Platforms That NEED utm_id (This Guide Is For You)

These require manual cost import via utm_id:

  • ❌ LinkedIn Ads
  • ❌ TikTok Ads
  • ❌ Pinterest Ads
  • ❌ Twitter (X) Ads
  • ❌ Reddit Ads
  • ❌ Snapchat Ads
  • ❌ Taboola/Outbrain
  • ❌ Quora Ads

If you're running ads on any platform in the second list, continue with this guide.

The Fix: Add utm_id to Your Campaign URLs

Standard Format

Current URL (without utm_id):

https://yoursite.com/demo?utm_source=linkedin&utm_medium=cpc&utm_campaign=product-demo

Fixed URL (with utm_id):

https://yoursite.com/demo?utm_id=LI-2025-01-DEMO&utm_source=linkedin&utm_medium=cpc&utm_campaign=product-demo

The utm_id format:

utm_id=`{platform-code}`-`{"{"}{"{"}year{"}"}{"}"}}`-`{"{"}{"{"}month{"}"}{"}"}}`-`{campaign-type}`

Examples by platform:

LinkedIn:
utm_id=LI-2025-01-DEMO

TikTok:
utm_id=TT-2025-01-BRAND

Pinterest:
utm_id=PIN-2025-01-SHOP

Twitter/X:
utm_id=X-2025-01-PROMO

Reddit:
utm_id=RD-2025-01-COMM

Snapchat:
utm_id=SNAP-2025-01-VIDEO

Platform-Specific Instructions

LinkedIn Ads

Step 1: LinkedIn Campaign Manager → Your campaign

Step 2: Click campaign name → Edit

Step 3: Scroll to Campaign detailsWebsite URL

Step 4: Update URL to include utm_id:

Before:

https://yoursite.com/demo?utm_source=linkedin&utm_medium=cpc&utm_campaign=product-demo-jan

After:

https://yoursite.com/demo?utm_id=LI-2025-01-DEMO&utm_source=linkedin&utm_medium=cpc&utm_campaign=product-demo-jan

Step 5: Save campaign

Step 6: Repeat for all active LinkedIn campaigns

Pro tip: LinkedIn allows URL parameter variables:

utm_id=LI-{campaign.id}

This auto-generates unique IDs per campaign using LinkedIn's campaign ID.


TikTok Ads

Step 1: TikTok Ads Manager → Your campaign

Step 2: Ad group → Ad creative

Step 3: Edit Destination URL

Step 4: Add utm_id:

Before:

https://yoursite.com/signup?utm_source=tiktok&utm_medium=cpc&utm_campaign=brand-awareness

After:

https://yoursite.com/signup?utm_id=TT-2025-01-BRAND&utm_source=tiktok&utm_medium=cpc&utm_campaign=brand-awareness

Step 5: Save and apply to all ad groups in campaign

Pro tip: TikTok supports dynamic parameters:

utm_id=TT-`{"{"}{"{"}campaign_id{"}"}{"}"}}`

Pinterest Ads

Step 1: Pinterest Ads Manager → Campaigns

Step 2: Select campaign → Ad group → Edit pins

Step 3: Update Destination URL

Step 4: Add utm_id:

Before:

https://yoursite.com/products?utm_source=pinterest&utm_medium=cpc&utm_campaign=shopping-jan

After:

https://yoursite.com/products?utm_id=PIN-2025-01-SHOP&utm_source=pinterest&utm_medium=cpc&utm_campaign=shopping-jan

Step 5: Save changes


Twitter (X) Ads

Step 1: Twitter Ads Manager → Your campaign

Step 2: Edit campaign → Website traffic

Step 3: Update Website URL

Step 4: Add utm_id:

Before:

https://yoursite.com/promo?utm_source=twitter&utm_medium=cpc&utm_campaign=flash-sale

After:

https://yoursite.com/promo?utm_id=X-2025-01-PROMO&utm_source=twitter&utm_medium=cpc&utm_campaign=flash-sale

Step 5: Save


Reddit Ads

Step 1: Reddit Ads Manager → Your campaign

Step 2: Ad group → Edit URL

Step 3: Add utm_id to destination URL:

Before:

https://yoursite.com/community?utm_source=reddit&utm_medium=cpc&utm_campaign=community-jan

After:

https://yoursite.com/community?utm_id=RD-2025-01-COMM&utm_source=reddit&utm_medium=cpc&utm_campaign=community-jan

Step 4: Save


Taboola / Outbrain (Native Ads)

Step 1: Campaign dashboard → Your campaign

Step 2: Edit campaign items

Step 3: Update URL for each ad:

Before:

https://yoursite.com/article?utm_source=taboola&utm_medium=native&utm_campaign=content-promo

After:

https://yoursite.com/article?utm_id=TAB-2025-01-CONTENT&utm_source=taboola&utm_medium=native&utm_campaign=content-promo

Step 4: Apply changes

😰 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

utm_id Naming Best Practices

Use a Consistent Format

Recommended format:

{"{"}{"{"}PLATFORM{"}"}{"}"}}-{"{"}{"{"}YEAR{"}"}{"}"}}-{"{"}{"{"}MONTH{"}"}{"}"}}-{"{"}{"{"}CAMPAIGN_TYPE{"}"}{"}"}}

Examples:

✅ Good:
LI-2025-01-DEMO (LinkedIn, Jan 2025, Demo campaign)
TT-2025-01-BRAND (TikTok, Jan 2025, Brand campaign)
PIN-2025-02-SHOP (Pinterest, Feb 2025, Shopping campaign)

❌ Bad:
linkedin-campaign-1 (too generic)
demo (not unique)
LI Jan Demo (spaces break URLs)

Requirements for utm_id

DO:

  • Make it unique per campaign
  • Use alphanumeric + hyphens only
  • Keep it under 50 characters
  • Make it human-readable
  • Include platform identifier
  • Include date (year/month)

DON'T:

  • Use spaces
  • Use special characters (&, =, ?, #, %)
  • Reuse same ID for multiple campaigns
  • Change ID mid-campaign
  • Make it too cryptic

Alternative: Use Platform Campaign IDs

Option: Use your ad platform's campaign ID as utm_id:

LinkedIn Campaign ID: 123456789

utm_id:

utm_id=LI-123456789

Pros:

  • Guaranteed unique
  • Easy to trace back to platform
  • Never conflicts

Cons:

  • Less human-readable
  • Longer IDs

Verification: Did It Work?

Test 1: Check the URL (30 seconds)

Step 1: Go to your ad platform Step 2: Preview or click one of your ads Step 3: Look at the destination URL in browser Step 4: Verify you see utm_id=... in the URL

✅ Correct:
https://yoursite.com/demo?utm_id=LI-2025-01-DEMO&utm_source=linkedin&utm_medium=cpc

❌ Still broken:
https://yoursite.com/demo?utm_source=linkedin&utm_medium=cpc
(no utm_id)

Test 2: GA4 Real-Time Report (1 minute)

Step 1: Click your ad (or use preview mode) Step 2: Open GA4 → Reports → Real-time Step 3: Find your session Step 4: Verify Campaign ID dimension shows your utm_id

Expected:

  • Campaign ID: LI-2025-01-DEMO

If blank or missing:

  • utm_id not in URL
  • URL parameter name wrong (must be exactly utm_id)

Test 3: After Cost Upload (Next Day)

After adding utm_id and uploading cost data (see guide):

Step 1: GA4 → Reports → Advertising → Campaign performance Step 2: Filter to your campaign Step 3: Check Cost column

Expected: Cost > $0.00 (shows imported cost data)

If still $0.00:

  • Wait 24-48 hours (processing delay)
  • Verify Campaign ID in CSV exactly matches utm_id in URL
  • Check CSV upload status (Admin → Data import)

Bulk Update: Fix Multiple Campaigns at Once

If you have many campaigns to update:

Option 1: Export → Edit → Re-upload (Platform-Dependent)

Some platforms (LinkedIn, TikTok) allow bulk campaign editing:

Step 1: Export all campaigns to CSV/Excel Step 2: Add utm_id column Step 3: Fill with unique IDs:

Campaign Name → utm_id
Product Demo → LI-2025-01-DEMO
Lead Gen → LI-2025-01-LEADGEN
Brand Awareness → LI-2025-01-BRAND

Step 4: Re-upload to platform Step 5: Verify changes applied

Option 2: URL Builder + Find/Replace

Step 1: Export campaign URLs to spreadsheet Step 2: Use formula to add utm_id:

=CONCATENATE(A2, "&utm_id=", B2)
 
Where:
A2 = original URL
B2 = utm_id value

Step 3: Copy new URLs Step 4: Paste into ad platform (one by one or bulk if supported)

Option 3: Campaign Cloning (Fastest for Small Sets)

Step 1: Clone existing campaign Step 2: Pause original Step 3: Update clone with utm_id in URL Step 4: Launch clone

Pros: Preserves historical data separation Cons: Creates duplicate campaigns in ad platform

Common Mistakes When Adding utm_id

Mistake #1: Using Same utm_id for Multiple Campaigns

Wrong:

All LinkedIn campaigns: utm_id=linkedin-2025
All TikTok campaigns: utm_id=tiktok-2025

Why it's wrong: Cost data will be combined. You won't see per-campaign ROI.

Fix: Unique ID per campaign:

utm_id=LI-2025-01-DEMO
utm_id=LI-2025-01-LEADGEN (different campaign)

Mistake #2: Including Spaces

Wrong:

utm_id=LI 2025 01 DEMO

Why it's wrong: Spaces break URLs (get encoded as %20)

Fix:

utm_id=LI-2025-01-DEMO (use hyphens)

Mistake #3: Changing utm_id Mid-Campaign

Problem: Week 1 you used utm_id=linkedin-demo, Week 2 you changed to utm_id=LI-2025-01-DEMO

Result: Historical cost data won't match new sessions. Broken attribution.

Fix: Pick an ID at campaign start and never change it.

Mistake #4: Forgetting to Update CSV

Problem: You added utm_id to URLs but forgot to use same value in cost import CSV.

URL:

utm_id=LI-2025-01-DEMO

CSV:

Campaign ID: linkedin-demo (doesn't match!)

Fix: Ensure exact match (case-sensitive):

Campaign ID: LI-2025-01-DEMO

Prevention Checklist

✅ Add utm_id to ALL new paid campaigns (non-auto-tagged platforms) ✅ Use consistent naming format (platform-year-month-type) ✅ Update existing campaigns with utm_id ✅ Test one campaign before bulk updating ✅ Verify utm_id appears in GA4 real-time reports ✅ Prepare cost CSV with matching Campaign ID values ✅ Upload cost data to GA4 (setup guide) ✅ Verify cost appears in Advertising reports

✅ 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

Do I need utm_id for Google Ads or Facebook Ads?

No. These platforms use auto-tagging (gclid, fbclid) which automatically sends cost data to GA4. Don't add utm_id or manual UTMs to auto-tagged platforms.

Can I add utm_id to existing campaigns without breaking historical data?

Yes! Adding utm_id to existing campaigns is safe:

  • Historical data (before utm_id): Tracked via utm_source/medium/campaign
  • New data (after utm_id): Also tracked via utm_id

Both coexist in GA4. Cost import (via utm_id) only affects future data.

What if I have multiple ad groups in one campaign?

Option 1: Same utm_id for all ad groups (simpler)

Campaign: Product Demo
Ad Group 1: utm_id=LI-2025-01-DEMO
Ad Group 2: utm_id=LI-2025-01-DEMO (same)
Ad Group 3: utm_id=LI-2025-01-DEMO (same)

Cost aggregated at campaign level.

Option 2: Different utm_id per ad group (granular)

Ad Group 1: utm_id=LI-2025-01-DEMO-AG1
Ad Group 2: utm_id=LI-2025-01-DEMO-AG2
Ad Group 3: utm_id=LI-2025-01-DEMO-AG3

Requires separate cost data per ad group in CSV.

Can I use the same utm_id across different platforms?

No. Use platform-specific prefixes:

❌ Wrong:
LinkedIn campaign: utm_id=2025-01-DEMO
TikTok campaign: utm_id=2025-01-DEMO (duplicate!)

✅ Right:
LinkedIn: utm_id=LI-2025-01-DEMO
TikTok: utm_id=TT-2025-01-DEMO (unique)

What happens if I forget utm_id on some campaigns?

Those campaigns won't have cost data imported. You'll see:

  • Sessions and conversions in GA4 ✅
  • Cost = $0.00 ❌
  • ROAS = N/A ❌

Fix: Add utm_id going forward. Historical sessions without utm_id can't retroactively get cost data.

Should I include utm_id in email campaigns?

No. utm_id is specifically for cost data import on paid campaigns. Email campaigns don't have "cost" in the same sense (no per-click cost).

Email: Use standard UTMs only:

?utm_source=newsletter&utm_medium=email&utm_campaign=weekly-jan
(no utm_id needed)

Conclusion

Fix missing utm_id in 3 steps:

  1. Add utm_id to campaign URLs in your ad platform

    • Format: utm_id={"{"}{"{"}PLATFORM{"}"}{"}"}}-{"{"}{"{"}YEAR{"}"}{"}"}}-{"{"}{"{"}MONTH{"}"}{"}"}}-{"{"}{"{"}TYPE{"}"}{"}"}}
    • Example: utm_id=LI-2025-01-DEMO
  2. Verify in GA4 real-time reports

    • Campaign ID dimension should show your utm_id
  3. Upload cost data with matching Campaign ID

Once complete, GA4 will show full ROI metrics (cost, ROAS, CPA) for all your paid campaigns, enabling data-driven budget allocation.


Related: When to Use utm_id (And When to Skip It)