What This Rule Detects
Identifies paid search campaigns (CPC, PPC, paid search) that lack the utm_term parameter for keyword tracking. Without utm_term, you cannot analyze which specific keywords or search terms drive conversions vs which waste budget, preventing bid optimization and keyword-level ROI analysis. Note: Google Ads auto-tagging (gclid) includes keyword data automatically, making utm_term optional for Google Ads but essential for manual UTM tagging or platforms without auto-tagging.
š Want to scan for this issue automatically?
UTMGuard checks for this and 39 other validation rules in 60 seconds.
Try Free AuditWhy It Matters
Business Impact:
- Keyword optimization impossible - Cannot identify high-ROI vs low-ROI keywords
- Budget waste risk - May bid $10/click on keywords that never convert
- Bid management fails - Cannot adjust bids based on keyword performance
- Negative keyword discovery blocked - Don't know which terms to exclude
- Search query analysis missing - Cannot refine targeting based on actual searches
Technical Impact:
- GA4 can track the campaign but not individual keyword performance
- All search traffic aggregated regardless of search term
- Cannot segment by keyword to analyze conversion paths
- Cannot create keyword-specific audiences for remarketing
- Match type optimization impossible (cannot compare broad vs exact match)
Real Example:
- Company runs paid search campaign on Microsoft Ads
- Campaign: "Running Shoes" with 50 keywords
- Budget: $5,000/month across all keywords
- ALL keywords use: utm_campaign=running-shoes-q1 (NO utm_term)
- GA4 shows: 1,200 clicks, 60 conversions (5% conversion rate overall)
- CANNOT answer: Which keywords drive conversions?
- Reality:
- "nike running shoes" ā $3/click, 12% conversion rate (highly profitable)
- "cheap running shoes" ā $8/click, 0.5% conversion rate (losing money)
- Hidden in aggregate data
- Impact: Equal bids on all keywords instead of optimizing
- Lost opportunity: Could 3x conversions by reallocating budget to high-performers
Common Scenarios
Scenario 1: Microsoft Ads Without Keyword Tracking
Paid search campaigns missing term-level data:
Scenario 2: Manual UTM Tagging Without Keywords
Using manual UTMs instead of auto-tagging:
Scenario 3: DuckDuckGo Ads Without Search Term Data
Alternative search platforms without auto-tagging:
š° 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 Fix
Step 1: Understand Google Ads Auto-Tagging vs Manual UTMs
IMPORTANT: Google Ads Auto-Tagging (gclid) Already Includes Keyword Data
Google Ads Auto-Tagging (Recommended):
āāā URL format: ?gclid=abc123xyz (auto-appended by Google)
āāā Keyword data: Included automatically in gclid
āāā Benefits:
ā āāā No manual work required
ā āāā Keyword data flows automatically to GA4
ā āāā More accurate (no human error)
ā āāā Includes match type, ad group, placement data
ā āāā Native Google Ads ā GA4 integration
āāā utm_term: NOT NEEDED (redundant)
āāā When to use: ALL Google Ads campaigns (default)
Manual UTM Tagging:
āāā URL format: ?utm_source=google&utm_medium=cpc&utm_campaign=...&utm_term=`{keyword}`
āāā Keyword data: Must manually add utm_term
āāā When required:
ā āāā Google Ads with auto-tagging disabled
ā āāā Microsoft Ads (no native GA4 integration)
ā āāā DuckDuckGo Ads
ā āāā Baidu Ads (China)
ā āāā Yandex Ads (Russia)
ā āāā Any search platform without auto-tagging
āāā utm_term: REQUIRED for keyword tracking
Decision Tree: Do I need utm_term?
Are you using Google Ads?
āā YES ā Is auto-tagging enabled (gclid)?
ā āā YES ā utm_term NOT NEEDED (gclid includes keyword data)
ā āā NO ā Add utm_term=`{keyword}` to track keywords
āā NO ā Using other search platform?
āā Microsoft Ads ā ADD utm_term=`{keyword}`
āā DuckDuckGo ā ADD utm_term=`{keyword}`
āā Yandex ā ADD utm_term=`{keyword}`
āā Other ā ADD utm_term=`{keyword}`
Step 2: Check Google Ads Auto-Tagging Status
Verify if auto-tagging is enabled:
Google Ads:
1. Google Ads account ā Settings
2. Account settings ā Auto-tagging
3. Check status: "Tag the URL that people click through from my ad"
4. If enabled: ā
You're good! No utm_term needed
5. If disabled: ā Either enable auto-tagging OR add manual UTMs with utm_term
Recommendation:
- ā ENABLE auto-tagging for Google Ads (best practice)
- ā Let gclid handle all tracking automatically
- ā Avoid manual UTMs for Google Ads (more work, less accurate)
- ā ļø Never mix gclid with manual UTMs (creates duplicate sessions)
Step 3: Add utm_term for Non-Google Search Platforms
Microsoft Ads (Bing):
Option A: Dynamic Keyword Insertion (Recommended)
1. Microsoft Ads ā Campaign ā Ad Group
2. Ad ā Edit destination URL
3. Add parameter: `{QueryString}`
4. Full URL structure:
https://example.com/landing
?utm_source=bing
&utm_medium=cpc
&utm_campaign=summer-sale
&utm_term=`{QueryString}`
Result: Microsoft automatically inserts actual search query
Example: User searches "nike shoes" ā utm_term=nike+shoes
Option B: Manual Keyword Insertion
1. Create unique URL per keyword (tedious, not recommended)
2. Keyword: "running shoes"
URL: ?utm_term=running-shoes
3. Keyword: "nike running shoes"
URL: ?utm_term=nike-running-shoes
4. Problem: Must maintain URLs for every keyword
5. Use Option A (dynamic) instead
DuckDuckGo Ads:
1. Campaign setup ā Ad URLs
2. Add parameters:
utm_source=duckduckgo
utm_medium=cpc
utm_campaign=`{campaign-name}`
utm_term=`{keyword:default}`
3. Dynamic insertion: `{keyword:default}`
4. Result: Actual search term captured in utm_term
Yandex.Direct (Russia):
1. Campaign ā Ad settings
2. URL template field
3. Add: utm_term=`{keyword}`
4. Yandex macros available:
- `{keyword}` ā Keyword that triggered ad
- `{source_type}` ā Match type
5. Full URL: ?utm_source=yandex&utm_medium=cpc&utm_campaign=...&utm_term=`{keyword}`
Baidu Ads (China):
1. Campaign setup ā Tracking template
2. Add parameter: utm_term=`{keyword}`
3. Format: Use pinyin or English transliteration for reporting
4. Full URL: ?utm_source=baidu&utm_medium=cpc&utm_campaign=...&utm_term=`{keyword}`
Step 4: utm_term Naming Best Practices
Format recommendations:
Lowercase + Hyphens:
ā
utm_term=running-shoes
ā
utm_term=nike-air-max-2024
ā
utm_term=project-management-software
ā utm_term=Running+Shoes (spaces as +)
ā utm_term=Running%20Shoes (URL encoded spaces)
ā utm_term=RUNNING-SHOES (uppercase)
Match Type Indication (Optional):
Include match type for advanced analysis:
- utm_term=running-shoes-exact
- utm_term=running-shoes-phrase
- utm_term=running-shoes-broad
Enables comparison:
"Do exact match keywords convert better than broad match?"
Standardization Rules:
1. Always lowercase
2. Replace spaces with hyphens
3. Remove special characters (', ", !, ?)
4. Keep consistent formatting across all keywords
5. Avoid URL encoding (%20) - use hyphens instead
Step 5: Analyze Keyword Performance in GA4
GA4 Reports for Keyword Analysis:
Traffic Acquisition Report:
1. Reports ā Acquisition ā Traffic acquisition
2. Filter: utm_medium = cpc
3. Add dimension: "Manual term / keyword" (utm_term)
4. Metrics to analyze:
āāā Sessions per keyword
āāā Conversions per keyword
āāā Conversion rate by keyword
āāā Revenue per keyword
āāā Engagement rate by keyword
5. Identify winners and losers
Custom Exploration:
1. Explore ā Create free-form exploration
2. Dimensions:
- Session source (utm_source)
- Session medium (utm_medium)
- Session campaign (utm_campaign)
- Manual term / keyword (utm_term)
3. Metrics:
- Conversions
- Conversion value
- Sessions
- Engagement rate
4. Analysis:
- Sort by conversion rate
- Identify keywords with >10% conversion rate (winners)
- Identify keywords with <1% conversion rate (cut)
Optimization Actions:
High-Converting Keywords (>8% conversion rate):
āāā Increase bids by 20-50%
āāā Expand to similar keywords
āāā Move to exact match for cost control
āāā Increase budget allocation
Medium-Converting Keywords (3-7% conversion rate):
āāā Maintain current bids
āāā Test ad copy variations
āāā Monitor for optimization opportunities
āāā Consider bid adjustments by device/time
Low-Converting Keywords (<2% conversion rate):
āāā Decrease bids by 50%
āāā Add as negative keywords if 0% conversion
āāā Pause if cost per conversion too high
āāā Reallocate budget to top performers
No-Conversion Keywords (0% after 100+ clicks):
āāā Pause immediately
āāā Add to negative keyword list
āāā Reallocate budget to proven keywords
Examples
ā Incorrect Examples
Microsoft Ads without keyword tracking:
?utm_source=bing&utm_medium=cpc&utm_campaign=running-shoes
Problem: 20 keywords in campaign, no way to tell which perform
Impact: Bidding $5/click on all keywords equally
Reality: "nike running shoes" converts at 15%, "cheap shoes" at 0.5%
Cannot optimize: All keywords look identical in GA4
Result: Wasting budget on low-performers, under-investing in winners
Manual Google Ads UTMs without term:
?utm_source=google&utm_medium=cpc&utm_campaign=software-sale
Problem: Disabled auto-tagging, using manual UTMs without utm_term
Impact: Lost keyword-level data, cannot measure keyword ROI
Alternative: Enable auto-tagging (gclid) to get keyword data automatically
Result: Manual tracking but missing the most important dimension (keywords)
DuckDuckGo Ads aggregated:
?utm_source=duckduckgo&utm_medium=cpc&utm_campaign=privacy-tools
Problem: All keywords aggregated, no search term visibility
Impact: 15 keywords, cannot identify which searches convert
Cannot answer: Do users searching "vpn" convert better than "secure browser"?
Result: Missing keyword optimization insights
Mixed broad and exact match without distinction:
?utm_term=running-shoes (used for both broad AND exact match)
Problem: Cannot compare match type performance
Impact: Don't know if broad match wasting budget vs exact match
Cannot optimize: Should I use broad match or exact match keywords?
Result: Match type strategy guesswork instead of data-driven
ā Correct Examples
Microsoft Ads with keyword tracking:
?utm_source=bing&utm_medium=cpc&utm_campaign=running-shoes&utm_term=nike-air-max-2024
Result: Each keyword tracked separately
GA4 Shows:
āāā nike-air-max-2024: $3 CPC, 15% conversion, $20 CPA (WINNER)
āāā running-shoes-cheap: $8 CPC, 0.5% conversion, $1600 CPA (LOSER)
āāā best-running-shoes: $5 CPC, 8% conversion, $62 CPA (GOOD)
āāā marathon-shoes: $4 CPC, 12% conversion, $33 CPA (WINNER)
Decision: Increase bids 50% on "nike-air-max" and "marathon-shoes"
Action: Pause "running-shoes-cheap" (losing money)
Impact: 3x more conversions with same budget
Google Ads with auto-tagging (recommended):
?gclid=abc123xyz
Result: Keyword data included automatically via gclid
GA4 Shows: Full keyword performance via Google Ads integration
Benefits:
- Zero manual work
- Includes match type automatically
- Ad group and placement data included
- More accurate than manual tracking
No utm_term needed: gclid handles everything
DuckDuckGo Ads with term tracking:
?utm_source=duckduckgo&utm_medium=cpc&utm_campaign=privacy-tools&utm_term=secure-messaging-app
Result: Search term performance visible
GA4 Shows:
āāā secure-messaging-app: 8% conversion rate (top performer)
āāā encrypted-chat: 5% conversion rate (moderate)
āāā privacy-messenger: 2% conversion rate (low)
āāā anonymous-texting: 0% conversion (pause)
Decision: Focus 60% of budget on "secure-messaging-app"
Impact: 2.5x increase in conversion rate through keyword optimization
Match type comparison with utm_term:
Campaign URLs:
- Exact: utm_term=running-shoes-exact
- Phrase: utm_term=running-shoes-phrase
- Broad: utm_term=running-shoes-broad
Result: Can compare match type effectiveness
GA4 Shows:
āāā running-shoes-exact: $4 CPC, 12% conversion, $33 CPA (BEST)
āāā running-shoes-phrase: $5 CPC, 8% conversion, $62 CPA (GOOD)
āāā running-shoes-broad: $7 CPC, 3% conversion, $233 CPA (POOR)
Decision: Focus on exact match, reduce broad match budget
Impact: 45% reduction in CPA by shifting to exact match
GA4 Impact Analysis
Keyword Performance Visibility:
- Without utm_term ā All keywords aggregated (cannot compare)
- With utm_term ā Individual keyword metrics and ROI
- Impact: Blind bidding vs data-driven optimization
Bid Optimization:
- Without utm_term ā Equal bids across all keywords
- With utm_term ā Optimized bids based on keyword performance
- Impact: Wasted budget vs maximized ROI
Negative Keyword Discovery:
- Without utm_term ā Cannot identify non-converting keywords
- With utm_term ā Clear list of keywords to exclude
- Impact: Continued waste vs cleaned-up campaigns
Match Type Analysis:
- Without utm_term ā Cannot compare broad vs exact match performance
- With utm_term ā Data-driven match type strategy
- Impact: Guesswork vs optimized match type selection
Detection in UTMGuard
UTMGuard identifies paid search campaigns missing utm_term:
- Scans all traffic for paid search (utm_medium=cpc, ppc, paid-search)
- Identifies search platform campaigns
- Checks if utm_term parameter exists OR gclid present (Google Ads)
- Flags paid search without keyword tracking (excluding Google Ads with gclid)
- Recommends adding utm_term for keyword-level optimization
Audit Report Shows:
- Total paid search sessions without keyword data
- Affected platforms (Microsoft Ads, DuckDuckGo, etc.)
- Note: Google Ads with gclid NOT flagged (keyword data included)
- Implementation guide for dynamic keyword insertion
- Example utm_term format for each platform
Related Validation Rules
Related Validation Rules
Missing utm_content on Display Campaigns
Display ads without creative tracking
Consider Adding utm_id Parameter
Paid campaigns without cost import
Google Ads Auto-Tagging Conflict
gclid mixed with manual UTMs creates duplicates
Paid Traffic Missing Auto-Tagging
Paid channel without proper tracking
Frequently Asked Questions
Q: Does Google Ads require utm_term?
A: No. Google Ads auto-tagging (gclid) automatically includes keyword data. You do NOT need utm_term if gclid is enabled (recommended). Only add utm_term if you've disabled auto-tagging, but this is not recommended as you'll lose additional data that gclid provides (ad group, placement, etc.).
Q: What's better - Google Ads gclid or manual UTMs with utm_term?
A: gclid auto-tagging is far superior. Benefits: (1) Automatic - no manual work, (2) More data - includes keyword, match type, ad group, placement, (3) More accurate - no human error, (4) Native integration with GA4. Only use manual UTMs if you have specific requirements that prevent auto-tagging.
Q: Can I use utm_term for non-search campaigns?
A: Technically yes, but it's unconventional. utm_term is designed for paid search keywords. For other campaigns, use utm_content instead. Example: Display campaign creative variations ā use utm_content, not utm_term. Social media post variations ā use utm_content, not utm_term.
Q: How do I track broad vs exact match keywords?
A: Include match type in utm_term value. Example: utm_term=running-shoes-exact vs utm_term=running-shoes-broad. This enables GA4 reports comparing match type performance. Very useful for optimizing match type strategy and bid adjustments.
Q: Should utm_term match the exact search query or target keyword?
A: Use the target keyword you're bidding on, not the actual search query (which may vary). Example: Bidding on "running shoes" (broad match) ā User searches "best running shoes for women" ā Use utm_term=running-shoes-broad. The search query may vary, but utm_term represents your targeted keyword.
Q: Can I use dynamic keyword insertion for utm_term?
A: Yes, and it's recommended! Most ad platforms support dynamic parameters. Microsoft Ads: {QueryString}, Google Ads (if using manual UTMs): {keyword}, Yandex: {keyword}. Dynamic insertion is more accurate and requires zero maintenance compared to manual keyword URLs.
Q: What if I have 500+ keywords - do I need 500 unique URLs?
A: No! Use dynamic keyword insertion (see above). The ad platform automatically populates utm_term with the triggered keyword. One URL template works for all keywords: utm_term={QueryString} or utm_term={keyword}. Zero maintenance required.
Q: How do I handle misspellings and variations in utm_term?
A: Dynamic insertion captures actual search terms, including misspellings. In GA4 reports, you'll see all variations. For analysis, you can group related terms using GA4's search and replace feature or regex filters. Example: Group "runningshoes", "running shoes", "runing shoes" into "running-shoes" for cleaner reporting.
Q: Does utm_term affect Google Ads Performance Max campaigns?
A: Performance Max campaigns don't use traditional keywords, so utm_term is not applicable. Use auto-tagging (gclid) for Performance Max. Google automatically includes relevant signals without keyword-level detail (by design - Performance Max is automated).
ā 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
External Resources
- Google Ads Auto-Tagging Guide
- Microsoft Ads URL Tracking Parameters
- Google Campaign URL Builder
- UTM Parameter Best Practices
- GA4 Keyword Performance Reports
missing_term_search