best-practicesUpdated 2025

utm_term vs gclid: When to Use Which for Search Tracking

Google Ads uses gclid, not utm_term. Here's exactly when to use each parameter for search tracking.

7 min readbest-practices

Common confusion: "Should I add utm_term to my Google Ads to track keywords?"

Short answer: No. Google Ads uses gclid (auto-tagging), which already captures keyword data automatically.

But what about Bing, DuckDuckGo, and other search engines? That's when you use utm_term.

This guide clarifies exactly when to use gclid, when to use utm_term, and why mixing them breaks your tracking.

🚨 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

The Key Difference

gclid (Google Click Identifier)

What it is: Google's auto-tagging parameter

Format:

Code
?gclid=Cj0KCQjw...abc123xyz

What it captures:

  • Keyword that triggered ad
  • Match type (exact, phrase, broad)
  • Ad group
  • Campaign
  • Device
  • Location
  • And 20+ other data points

Platforms that use it:

  • ✅ Google Ads ONLY

Your action: Enable auto-tagging, don't add manual UTMs


utm_term

What it is: Manual UTM parameter for keywords

Format:

Code
?utm_term=buy-crm-software

What it captures:

  • The keyword (only)

Platforms that use it:

  • ❌ NOT Google Ads
  • ✅ Bing Ads (manual UTMs)
  • ✅ DuckDuckGo Ads
  • ✅ Baidu, Yandex, Yahoo
  • ✅ Any search engine without auto-tagging

Your action: Add manually using platform's keyword macro

Decision Matrix

When to Use gclid

Scenario: Running Google Ads

Setup:

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

URL result:

Code
https://yoursite.com/demo?gclid=abc123xyz

DO NOT add:

Code
❌ ?gclid=abc123&utm_term=keyword
(utm_term unnecessary and breaks tracking)

Why gclid is better:

  • Captures 20+ data points (not just keyword)
  • Automatic (no manual setup needed)
  • Cost data auto-imports to GA4
  • Match type data included
  • More accurate than manual UTMs

When to Use utm_term

Scenario: Running Bing Ads (or other non-Google search)

Setup:

Bing Ads destination URL:

Code
?utm_source=bing&utm_medium=cpc&utm_campaign=product-search&utm_term=`{"{"}{"{"}QueryString{"}"}{"}"}}`

URL result:

Code
https://yoursite.com/demo?utm_source=bing&utm_medium=cpc&utm_campaign=product-search&utm_term=buy-crm-software

Why utm_term here:

  • Bing doesn't have gclid
  • If not using Bing auto-tagging (msclkid), need manual UTMs
  • utm_term is the standard way to track keywords manually

What Happens If You Mix

Wrong setup:

Code
Google Ads with auto-tagging ON + manual UTMs:
?gclid=abc123&utm_source=google&utm_medium=cpc&utm_term=keyword

Problems:

  1. Overrides auto-tagging: gclid data replaced by manual UTMs
  2. Lose keyword match type: gclid includes it, utm_term doesn't
  3. Lose ad group data: gclid has it, manual UTMs don't
  4. Cost import breaks: GA4 can't match cost data
  5. More work: Manual effort vs automatic

Result: Worse tracking than just using gclid alone.

Correct setup:

  1. Enable auto-tagging
  2. Don't add ANY manual UTM parameters
  3. Let gclid handle everything

URL:

Code
https://yoursite.com/demo?gclid=Cj0KCQjw...abc123xyz

What GA4 receives:

  • Source: google
  • Medium: cpc
  • Campaign: [your Google Ads campaign name]
  • Keyword: [the search term]
  • Match type: [exact/phrase/broad]
  • Ad group: [your ad group]
  • Device: [desktop/mobile/tablet]
  • Cost data: Automatic import

No manual UTMs needed.

😰 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

Other Search Platforms

Microsoft Ads (Bing)

Has auto-tagging option: msclkid

Option 1: Use auto-tagging (recommended)

Code
Enable in Bing Ads settings
URL: ?msclkid=abc123xyz

Option 2: Manual UTMs with utm_term

Code
?utm_source=bing&utm_medium=cpc&utm_campaign=product-search&utm_term=`{"{"}{"{"}QueryString{"}"}{"}"}}`

Recommendation: Use msclkid (auto-tagging) for easier setup.


DuckDuckGo Ads

No auto-tagging. Must use manual UTMs:

Code
?utm_source=duckduckgo&utm_medium=cpc&utm_campaign=product-search&utm_term=`{"{"}{"{"}keyword{"}"}{"}"}}`

International Search Engines

Baidu, Yandex, Yahoo, etc. - most have NO auto-tagging:

Code
Baidu:
?utm_source=baidu&utm_medium=cpc&utm_campaign=product-search&utm_term=`{"{"}{"{"}keyword{"}"}{"}"}}`

Yandex:
?utm_source=yandex&utm_medium=cpc&utm_campaign=product-search&utm_term=`{"{"}{"{"}keyword{"}"}{"}"}}`

Real Example: Mixing gclid + utm_term Gone Wrong

Client: Running Google Ads with auto-tagging ON

Someone added manual UTMs:

Code
?gclid=abc123&utm_source=google&utm_medium=cpc&utm_campaign=product-search&utm_term=`{"{"}{"{"}keyword{"}"}{"}"}}`

Problems Discovered

Problem #1: Cost Import Broke

Before: GA4 automatically imported Google Ads cost data After: GA4 couldn't match cost → ROAS metrics unavailable


Problem #2: Campaign Names Duplicated

Before:

Code
Campaign: Product Search (from gclid)

After:

Code
Campaign 1: Product Search (from gclid)
Campaign 2: product-search (from utm_campaign)

GA4 showed TWO campaigns for same traffic (data fragmented).


Problem #3: Keyword Match Type Lost

Before:

Code
GA4 showed:
- "buy crm" (exact match) - 15% CVR
- "buy crm" (broad match) - 5% CVR

After:

Code
GA4 showed:
- "buy crm" (no match type) - 10% combined CVR

Lost ability to optimize by match type.


Problem #4: More Manual Work

Before: Set up once, forget After: Had to manually update UTMs for every new campaign


The Fix

Removed all manual UTMs:

Code
Before:
?gclid=abc123&utm_source=google&utm_medium=cpc&utm_campaign=product-search&utm_term=keyword

After:
?gclid=abc123

Result:

  • Cost import working again
  • No duplicate campaigns
  • Match type data restored
  • No manual UTM maintenance

Comparison Table

Featuregclid (Google Ads)utm_term (Manual)
SetupAutomaticManual per keyword
Keyword tracking✅ Yes✅ Yes
Match type✅ Yes❌ No
Ad group✅ Yes❌ No
Cost import✅ AutomaticManual CSV upload
Device data✅ Yes❌ No
Location data✅ Yes❌ No
Maintenance✅ None❌ Manual updates
PlatformsGoogle Ads onlyAny search platform

Winner for Google Ads: gclid (no contest)

Use utm_term for: Everything except Google Ads

Common Mistakes

Mistake #1: Adding utm_term to Google Ads

Wrong:

Code
?gclid=abc123&utm_term=buy-crm-software

Problem: Breaks auto-tagging, adds no value.

Fix: Remove all manual UTMs, use gclid only.


Wrong:

Code
Bing Ads with no tracking:
https://yoursite.com/demo

Problem: Can't see which keywords convert.

Fix: Add utm_term:

Code
?utm_source=bing&utm_medium=cpc&utm_campaign=product-search&utm_term=`{"{"}{"{"}QueryString{"}"}{"}"}}`

Mistake #3: Using gclid Manually

Wrong:

Code
Bing Ads: ?gclid=abc123

Problem: gclid only works for Google Ads. Other platforms won't recognize it.

Fix: Use utm_term for non-Google platforms.


Mistake #4: Disabling Auto-Tagging to Use Manual UTMs

Wrong: Disable Google Ads auto-tagging to add utm_term

Problem: Lose 20+ data points for no benefit.

Fix: Keep auto-tagging ON, don't add manual UTMs.

When You Might Use Both (Rare)

Multi-Platform Campaigns

Scenario: Same landing page, traffic from Google Ads + Bing Ads

Google Ads:

Code
?gclid=abc123

Bing Ads:

Code
?utm_source=bing&utm_medium=cpc&utm_campaign=product-search&utm_term=`{"{"}{"{"}QueryString{"}"}{"}"}}`

Note: These are DIFFERENT URLs for different platforms, not both on same URL.

Quick Decision Guide

Ask yourself:

"Am I running Google Ads?"

Yes → Use gclid

  • Enable auto-tagging in Google Ads
  • Don't add manual UTMs
  • Let gclid handle everything

No → Proceed to next question


"Does my search platform have auto-tagging?"

Yes (Bing with msclkid, Facebook with fbclid) → Use auto-tagging

  • Enable platform's auto-tagging
  • Don't add manual UTMs

No (DuckDuckGo, Baidu, Yandex, etc.) → Use utm_term

  • Add manual UTMs with utm_term
  • Use platform's keyword macro

Prevention Checklist

✅ Google Ads: Use auto-tagging (gclid), no manual UTMs ✅ Microsoft Ads: Use auto-tagging (msclkid) OR manual utm_term ✅ DuckDuckGo, Baidu, Yandex: Use manual utm_term ✅ Never mix gclid + manual UTMs ✅ Never add utm_term to Google Ads ✅ Document which platforms use what tracking method ✅ Train team on correct setup for each platform

✅ 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

Can I use gclid for non-Google platforms?

No. gclid is proprietary to Google. Other platforms won't recognize it.

Each platform has own auto-tag:

  • Google: gclid
  • Facebook: fbclid
  • Microsoft: msclkid
  • LinkedIn: li_fat_id
  • TikTok: ttclid
  • Twitter: twclid

What if I want more control than gclid provides?

You can't. gclid is automatic, non-customizable.

What you CAN control:

  • Campaign names in Google Ads (show in GA4)
  • Ad group names
  • Ad copy

What you CAN'T control:

  • gclid parameter value (Google-generated)
  • Which data points gclid captures

Accept the trade-off: Less control, but more data and zero maintenance.

Does utm_term work with gclid?

Technically yes, but DON'T DO IT.

Code
❌ ?gclid=abc123&utm_term=keyword

Why not:

  • gclid already includes keyword
  • Adding utm_term can break auto-tagging
  • Adds no value
  • Just creates confusion

Can I see keyword data without utm_term or gclid?

For paid search: No. You must use one of:

  • gclid (Google Ads auto-tagging)
  • msclkid (Bing auto-tagging)
  • utm_term (manual tracking)

For organic search:

  • Google Search Console (keyword query report)
  • GA4's organic search report (limited data)

What if my Google Ads auto-tagging is disabled?

Re-enable it immediately:

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

Why: Auto-tagging provides 10x more data than manual UTMs with zero maintenance.

Only disable if: Your analytics platform doesn't support gclid (extremely rare).

How do I check if auto-tagging is working?

Test:

  1. Click your Google Ad (or use ad preview)
  2. Look at browser URL
  3. Confirm you see ?gclid=...

If no gclid:

  • Auto-tagging is OFF (enable in Google Ads settings)
  • OR you have manual UTMs overriding it (remove them)

Conclusion

Simple rule:

Google Ads → Use gclid (auto-tagging)

  • Enable auto-tagging
  • Remove all manual UTMs
  • Let Google handle keyword tracking

All other search platforms → Use utm_term

  • Add manual UTMs
  • Include utm_term with keyword macro
  • Example: &utm_term={"{"}{"{"}QueryString{"}"}{"}"}}

Never mix gclid + utm_term on same URL. Use one or the other, not both.

Result: Clean keyword tracking, accurate cost data, minimal maintenance.


Related: Paid Search Keyword Tracking Complete Guide

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.