Fix Missing utm_id in Paid Campaigns (5-Minute Guide)
Your paid campaigns need utm_id for cost tracking. Here's the fastest way to add it to LinkedIn, TikTok, and other ads.
You’re running paid campaigns on LinkedIn, TikTok, Pinterest, Reddit, or native networks like Taboola and Outbrain. GA4 shows sessions and conversions, but all cost and ROAS metrics are blank. Every campaign looks either like “free money” or a black box.
That’s almost always a missing utm_id.
This guide shows when utm_id is required, how to add it quickly across platforms, and how to confirm that cost data is flowing into GA4.
Table of contents
🚨 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
When You Need utm_id (and When You Don’t)
Before editing anything, check whether your platform already sends cost data automatically.
These platforms don’t need utm_id (auto‑tagging is enough):
- Google Ads (gclid)
- Meta (Facebook/Instagram) Ads (fbclid)
- Microsoft Ads (msclkid)
If you’ve linked these accounts to GA4 and enabled auto‑tagging, leave utm_id alone for them.
These platforms typically require utm_id for cost import:
- LinkedIn Ads
- TikTok Ads
- Pinterest Ads
- Reddit Ads
- Twitter/X Ads
- Snapchat Ads
- Taboola / Outbrain
- Other non‑Google, non‑Meta ad platforms
If you rely on GA4 as your single source of truth, you should implement utm_id wherever cost data isn’t automatically joined.
The Standard utm_id Format
Use utm_id as a stable join key between your ad platform exports and GA4.
Recommended pattern:
- Platform code (2–4 letters): LI, TT, PIN, RD, X, TAB.
- Year (4 digits): 2025.
- Month or quarter: 01 or q1.
- Short campaign type or goal: DEMO, BRAND, LEADGEN.
Example:
utm_id=LI-2025-01-DEMOutm_id=TT-2025-q1-BRAND
Pick a pattern and document it once; then reuse it consistently.
How to Add utm_id Per Platform
Below are quick, practical patterns. The exact UI labels may change, but the concept stays the same: add utm_id to the final or destination URL used by each ad.
LinkedIn Ads
- Go to Campaign Manager → select your campaign.
- Edit the ad or campaign URL.
- Add utm_id to the URL, before or alongside your UTMs.
Example URL:
https://yoursite.com/demo?utm_id=LI-2025-01-DEMO&utm_source=linkedin&utm_medium=cpc&utm_campaign=product-demo
TikTok Ads
- Open TikTok Ads Manager → Campaign / Ad Group / Ad.
- In the destination URL, include utm_id:
https://yoursite.com/signup?utm_id=TT-2025-01-BRAND&utm_source=tiktok&utm_medium=cpc&utm_campaign=brand-awareness
Pinterest Ads
- In Pinterest Ads Manager, edit the Pin’s destination URL.
- Add utm_id as the first parameter, followed by your usual UTMs.
https://yoursite.com/products?utm_id=PIN-2025-01-SHOP&utm_source=pinterest&utm_medium=cpc&utm_campaign=shopping-jan
Reddit Ads
- Go to Reddit Ads → campaign → ad group → ad.
- Append utm_id to the destination URL:
https://yoursite.com/community?utm_id=RD-2025-01-COMM&utm_source=reddit&utm_medium=cpc&utm_campaign=community-jan
Native (Taboola / Outbrain)
- In the campaign item’s URL, add utm_id:
https://yoursite.com/article?utm_id=TAB-2025-01-CONTENT&utm_source=taboola&utm_medium=native&utm_campaign=content-promo
Connecting utm_id to Cost Data in GA4
Once utm_id is present on your URLs, you’ll:
- Export cost data from each ad platform with a utm_id column.
- Use GA4’s Data Import (cost data) to upload CSVs keyed by utm_id, date, and source/medium.
- Schedule regular imports (daily/weekly) so reports stay up to date.
The configuration details can live in your internal analytics runbook; the key idea for marketers is that every campaign needs a unique utm_id for GA4 to tie spend to sessions and conversions.
Validation Checklist
After adding utm_id and configuring imports:
- Click one live ad from each platform and confirm the final landing URL includes utm_id plus your normal UTMs.
- In GA4 → Realtime, verify that the session appears with the expected source/medium and landing page.
- After 24–48 hours, check Acquisition → User acquisition with Cost/ROAS metrics enabled to confirm spend is appearing.
- Cross‑check a single day’s cost between GA4 and the ad platform; small differences are normal, but large gaps indicate a misconfigured utm_id or import.
If cost is still missing, common issues include:
- utm_id spelled differently in GA4 vs platform exports.
- Multiple campaigns accidentally sharing the same utm_id.
- Date ranges or currency mismatches in the cost import.
✅ 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
Does Google Ads need utm_id at all?
No. Google Ads uses gclid for cost import. Using utm_id there is optional and typically unnecessary.
Should I put utm_id before or after other UTMs?
It doesn’t matter to GA4 as long as it’s present in the query string. Many teams put utm_id first for consistency and easier scanning.
Can I use the same utm_id on multiple platforms?
Avoid it. When you use 2025-01-DEMO for both LinkedIn and TikTok, GA4 will aggregate their costs and conversions. Use platform‑specific prefixes (LI, TT, PIN, RD, etc.).
What happens if I change utm_id mid‑campaign?
GA4 will treat the old and new utm_id values as separate keys. Reporting will split. If you must change it, merge metrics later in Looker Studio or your BI tool.
Can I use utm_id for organic campaigns or email?
You can, but it’s not needed. utm_id is most valuable where you need to join spend to traffic. For email and organic, focus on clean utm_source / utm_medium / utm_campaign.
How detailed should utm_id be?
Make it unique and recognizable. Most teams are fine with 20–40 characters including platform, year, month/quarter, and a short descriptor.
Can I retroactively fix old campaigns?
You can add utm_id now and start importing cost going forward. You can’t fully repair past sessions that didn’t have utm_id; treat those as a baseline and focus on improving new data.