Paid Search Without utm_term: Can't Track Which Keywords Convert
Running search ads without utm_term? You can't tell which keywords drive ROI. Here's why it matters and how to fix it.
You're running paid search ads on Bing, DuckDuckGo, or manually tagged search campaigns. $5,000/month budget, bidding on 50 keywords.
End of month: 1,000 clicks, 80 conversions. Decent 8% conversion rate.
Question from your boss: "Which keywords should we bid higher on?"
Your answer: "Uhh... I don't know. They're all grouped together."
The problem: No utm_term parameter. Can't track keyword-level performance.
The solution: Add utm_term to search ads so GA4 tracks which keywords drive conversions.
Table of contents
- What is utmterm?
- When You Need utmterm
- Scenario 1: Bing/Microsoft Ads with Manual UTMs
- Scenario 2: DuckDuckGo Ads
- Scenario 3: Baidu, Yandex, Other Search Engines
- Scenario 4: Reddit Search Ads
- Scenario 5: Amazon Sponsored Products (External Traffic)
- When You DON'T Need utmterm
- Google Ads with Auto-Tagging
- Microsoft Ads with Auto-Tagging
- Real Example: $15,000 Wasted on Wrong Keywords
- Without utmterm
- After Adding utmterm
- Budget Reallocation
- How to Add utmterm to Search Ads
- Bing/Microsoft Ads
- DuckDuckGo Ads
- Other Search Platforms
- utmterm Naming Best Practices
- Format
- Match Type (Optional)
- Analyzing utmterm in GA4
- Report 1: Keyword Performance
- Report 2: Campaign + Keyword
- Report 3: Top Converting Keywords
- Report 4: Negative Keyword Candidates
- Common Mistakes
- Mistake #1: Not Using Dynamic Insertion
- Mistake #2: Mixing with gclid
- Mistake #3: Using utmterm for Display Ads
- Mistake #4: Not URL-Encoding Special Characters
- Prevention Checklist
- FAQ
- Should I use utmterm for Google Ads?
- What's the difference between utmterm and utmcontent?
- Can I use both utmterm and utmcontent?
- How do I track branded vs non-branded keywords?
- What if my platform doesn't support dynamic keyword insertion?
- Should I include match type in utmterm?
- Conclusion
🚨 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_term?
utm_term is a UTM parameter designed to track paid search keywords.
Example:
Keyword: "buy crm software"
URL: ?utm_source=bing&utm_medium=cpc&utm_campaign=product-search&utm_term=buy-crm-software
What GA4 shows:
| Campaign | Term | Sessions | Conversions | CVR |
|---|---|---|---|---|
| product-search | buy-crm-software | 100 | 15 | 15.0% |
| product-search | crm-tools | 200 | 10 | 5.0% |
| product-search | best-crm | 150 | 5 | 3.3% |
Insight: "buy-crm-software" has 3-5x better conversion rate. Increase bid.
When You Need utm_term
Scenario 1: Bing/Microsoft Ads with Manual UTMs
If using manual UTMs (not auto-tagging):
✅ Add utm_term:
?utm_source=bing&utm_medium=cpc&utm_campaign=product-search&utm_term=`{"{"}{"{"}QueryString{"}"}{"}"}}`
Note: If using Bing auto-tagging (msclkid), don't add manual UTMs.
Scenario 2: DuckDuckGo Ads
DuckDuckGo has no auto-tagging. Must use manual UTMs:
?utm_source=duckduckgo&utm_medium=cpc&utm_campaign=privacy-search&utm_term=`{"{"}{"{"}keyword{"}"}{"}"}}`
Scenario 3: Baidu, Yandex, Other Search Engines
International search engines often lack GA4 integration:
Baidu (China):
?utm_source=baidu&utm_medium=cpc&utm_campaign=product-search&utm_term=`{"{"}{"{"}keyword{"}"}{"}"}}`
Yandex (Russia):
?utm_source=yandex&utm_medium=cpc&utm_campaign=product-search&utm_term=`{"{"}{"{"}keyword{"}"}{"}"}}`
Scenario 4: Reddit Search Ads
Reddit search ads (different from feed ads):
?utm_source=reddit&utm_medium=cpc&utm_campaign=search-ads&utm_term=`{search-query}`
Scenario 5: Amazon Sponsored Products (External Traffic)
If driving traffic to your site from Amazon search ads:
?utm_source=amazon&utm_medium=cpc&utm_campaign=sponsored-products&utm_term=`{"{"}{"{"}keyword{"}"}{"}"}}`
When You DON'T Need utm_term
Google Ads with Auto-Tagging
Google Ads auto-tagging (gclid) captures keywords automatically.
❌ Don't add:
?gclid=abc123&utm_term=buy-crm-software
(gclid already includes keyword data)
✅ Correct:
?gclid=abc123
(Let gclid handle everything)
Why: gclid provides more data than manual UTMs:
- Exact keyword that triggered ad
- Match type (broad, phrase, exact)
- Ad group
- Ad copy variant
Adding manual UTMs breaks auto-tagging benefits.
Microsoft Ads with Auto-Tagging
If using msclkid (Microsoft's auto-tagging):
❌ Don't add:
?msclkid=abc123&utm_term=keyword
✅ Correct:
?msclkid=abc123
Real Example: $15,000 Wasted on Wrong Keywords
Client: B2B SaaS company Platform: Bing Ads (manual UTMs, no auto-tagging) Budget: $5,000/month Keywords: 50 keywords
Without utm_term
All keywords used same URL:
?utm_source=bing&utm_medium=cpc&utm_campaign=product-search-jan-2025
GA4 showed:
| Campaign | Sessions | Conversions | CVR |
|---|---|---|---|
| product-search-jan-2025 | 1,000 | 80 | 8.0% |
Assumption: "All keywords performing equally at 8% CVR."
Budget allocation: Even split across 50 keywords ($100 each)
After Adding utm_term
Each keyword got unique tracking:
Keyword "buy crm software":
?utm_term=buy-crm-software
Keyword "free crm tools":
?utm_term=free-crm-tools
Keyword "crm comparison":
?utm_term=crm-comparison
GA4 revealed:
| Term | Spend | Sessions | Conversions | CVR | CPA |
|---|---|---|---|---|---|
| buy-crm-software | $500 | 50 | 20 | 40.0% | $25 |
| best-crm-for-small-business | $500 | 100 | 15 | 15.0% | $33 |
| crm-software-reviews | $1,000 | 150 | 20 | 13.3% | $50 |
| free-crm-tools | $1,500 | 400 | 15 | 3.8% | $100 |
| crm-comparison | $1,000 | 200 | 8 | 4.0% | $125 |
| (45 other keywords) | $500 | 100 | 2 | 2.0% | $250 |
Shocking insights:
-
"buy-crm-software" had 40% CVR (5x better than average!)
- But only $500 budget (10% of total)
-
"free-crm-tools" had 3.8% CVR, $100 CPA (expensive, low-intent)
- Yet had $1,500 budget (30% of total)
-
Most keywords (45 of 50) had <5% CVR
- Wasting $500/month collectively
Budget Reallocation
New budget (based on utm_term data):
| Term | Old Spend | New Spend | Rationale |
|---|---|---|---|
| buy-crm-software | $500 | $2,500 | 40% CVR, scale! |
| best-crm-for-small-business | $500 | $1,500 | 15% CVR, solid |
| crm-software-reviews | $1,000 | $1,000 | 13% CVR, maintain |
| free-crm-tools | $1,500 | $0 | 3.8% CVR, pause (low intent) |
| crm-comparison | $1,000 | $0 | 4% CVR, pause |
| (45 other keywords) | $500 | $0 | <5% CVR, pause all |
| Total | $5,000 | $5,000 | Same budget, better allocation |
Results (next month):
- Conversions: 80 → 150 (+88%)
- CPA: $62.50 → $33 (-47%)
- ROAS: 2.0x → 4.5x (+125%)
Annual impact: $15,000 wasted spend eliminated, +$45,000 additional revenue
This was only possible because utm_term revealed keyword performance.
😰 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
How to Add utm_term to Search Ads
Bing/Microsoft Ads
Step 1: Campaign → Ad group → Keywords
Step 2: Click "Destination URL" or "Final URL"
Step 3: Add parameter:
Before:
https://yoursite.com/demo?utm_source=bing&utm_medium=cpc&utm_campaign=product-search
After:
https://yoursite.com/demo?utm_source=bing&utm_medium=cpc&utm_campaign=product-search&utm_term=`{"{"}{"{"}QueryString{"}"}{"}"}}`
{"{"}{"{"}QueryString{"}"}{"}"}} = Bing's dynamic keyword insertion (auto-fills actual search query)
Step 4: Save
DuckDuckGo Ads
Step 1: Campaign settings → Tracking template
Step 2: Add:
?utm_source=duckduckgo&utm_medium=cpc&utm_campaign=product-search&utm_term=`{"{"}{"{"}keyword{"}"}{"}"}}`
Check DuckDuckGo's documentation for exact macro syntax.
Other Search Platforms
Most platforms support dynamic keyword insertion:
| Platform | Macro for Keyword |
|---|---|
| Bing/Microsoft | {"{"}{"{"}QueryString{"}"}{"}"}} |
| Yahoo (Gemini) | {"{"}{"{"}keyword{"}"}{"}"}} |
| Baidu | {"{"}{"{"}keyword{"}"}{"}"}} |
| Yandex | {"{"}{"{"}keyword{"}"}{"}"}} |
Always check platform documentation for correct syntax.
utm_term Naming Best Practices
Format
Lowercase, hyphens:
✅ utm_term=buy-crm-software
✅ utm_term=best-project-management-tool
✅ utm_term=free-email-marketing
❌ utm_term=Buy%20CRM%20Software (URL-encoded spaces)
❌ utm_term=buy_crm_software (underscores)
Match Type (Optional)
Include match type if helpful:
utm_term=buy-crm-software-exact (exact match)
utm_term=buy-crm-software-phrase (phrase match)
utm_term=buy-crm-software-broad (broad match)
Use case: Compare which match type performs best.
Analyzing utm_term in GA4
Report 1: Keyword Performance
GA4 → Explore → Free form
Dimensions: First user manual term Metrics: Sessions, Conversions, Conversion rate, CPA
Result: See which keywords drive best ROI.
Report 2: Campaign + Keyword
GA4 → Reports → Acquisition → Traffic acquisition
Primary dimension: Campaign Secondary dimension: First user manual term
Result: Break down each campaign by keyword performance.
Report 3: Top Converting Keywords
GA4 → Explore → Free form
Dimensions: First user manual term Metrics: Conversions Sort: Conversions descending Limit: Top 20
Result: Your best keywords. Scale these.
Report 4: Negative Keyword Candidates
GA4 → Explore → Free form
Dimensions: First user manual term Metrics: Sessions, Conversions, Conversion rate Filter: Conversion rate < 2%
Result: Keywords with high traffic but low conversions. Consider adding as negative keywords.
Common Mistakes
Mistake #1: Not Using Dynamic Insertion
Wrong (hardcoded):
All keywords: utm_term=product-search
Problem: All keywords merge, can't differentiate.
Fix (dynamic):
utm_term=`{"{"}{"{"}QueryString{"}"}{"}"}}`
Platform auto-fills actual keyword.
Mistake #2: Mixing with gclid
Wrong:
?gclid=abc123&utm_term=buy-crm-software
Problem: Breaks Google Ads auto-tagging benefits.
Fix: Use EITHER gclid OR manual UTMs, never both.
Mistake #3: Using utm_term for Display Ads
Wrong:
Display banner: utm_term=300x250-blue-cta
Problem: utm_term is for keywords (search), not display creatives.
Fix: Use utm_content for display ad variations:
utm_content=300x250-blue-cta
Mistake #4: Not URL-Encoding Special Characters
Wrong:
utm_term=buy crm software! (spaces + special chars)
Problem: Breaks URL.
Fix: Use platform's dynamic macro (auto-encodes):
utm_term=`{"{"}{"{"}QueryString{"}"}{"}"}}`
Prevention Checklist
✅ Add utm_term to paid search campaigns (non-Google/non-auto-tagged)
✅ Use dynamic keyword insertion {"{"}{"{"}QueryString{"}"}{"}"}} or {"{"}{"{"}keyword{"}"}{"}"}}
✅ Don't mix with auto-tagging (gclid, msclkid)
✅ Verify in GA4 real-time reports
✅ Analyze keyword performance monthly
✅ Reallocate budget to high-converting keywords
✅ Pause or negative match low-converting keywords
✅ 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
Should I use utm_term for Google Ads?
No. Google Ads auto-tagging (gclid) captures keyword data automatically. Adding manual utm_term breaks auto-tagging benefits.
Use utm_term for:
- Bing Ads (if not using auto-tagging)
- DuckDuckGo Ads
- Other search engines without auto-tagging
What's the difference between utm_term and utm_content?
utm_term: Keywords (for search ads) utm_content: Creative variations (for display ads, email, A/B tests)
Example:
Search ad:
?utm_term=buy-crm-software (keyword)
Display ad:
?utm_content=300x250-blue-cta (banner variation)
Can I use both utm_term and utm_content?
Yes, but rare.
Example (search ad with specific ad variation):
?utm_source=bing&utm_medium=cpc&utm_campaign=product-search&utm_term=buy-crm-software&utm_content=ad-variant-a
utm_term = keyword
utm_content = ad creative variant
How do I track branded vs non-branded keywords?
Option 1: Separate campaigns
utm_campaign=branded-search (your brand name keywords)
utm_campaign=nonbranded-search (generic keywords)
Option 2: Use utm_term analysis
GA4 → Explore → Filter utm_term contains "yourcompany"
What if my platform doesn't support dynamic keyword insertion?
Manual approach:
- Export keyword list
- Create unique tracking URL for each keyword:
Code
Keyword 1: ?utm_term=buy-crm-software Keyword 2: ?utm_term=free-crm-tools - Upload to platform
Labor-intensive but necessary for keyword-level tracking.
Should I include match type in utm_term?
Only if comparing match types.
Most cases:
utm_term=`{"{"}{"{"}QueryString{"}"}{"}"}}`
(Exact search query, regardless of match type)
If comparing match types:
utm_term=`{"{"}{"{"}keyword{"}"}{"}"}}`-exact
utm_term=`{"{"}{"{"}keyword{"}"}{"}"}}`-phrase
utm_term=`{"{"}{"{"}keyword{"}"}{"}"}}`-broad
Conclusion
Paid search without utm_term = no keyword performance visibility.
The fix:
- Add utm_term to search campaigns (Bing, DuckDuckGo, etc.)
- Use dynamic insertion:
utm_term={"{"}{"{"}QueryString{"}"}{"}"}} - Analyze in GA4: See which keywords drive conversions
- Optimize budget: Scale winners, pause losers
Result: Same budget, 2x conversions by focusing on high-converting keywords.
Key insight: Not all keywords perform equally. utm_term reveals which are winners.