utm_term

utm_term is the optional UTM parameter that identifies the paid search keyword that triggered a click. It was built into the original Urchin tracking system for AdWords reporting and remains the standard field for passing keyword data from search ads into Google Analytics. The value gets stored in GA4’s “Session manual keyword” dimension, where it appears alongside source, medium, and campaign in acquisition reports.
A tagged Google Ads URL with utm_term looks like this:
https://example.com/?utm_source=google&utm_medium=cpc&utm_campaign=spring_sale&utm_term=running_shoes
Here, running_shoes is the utm_term value. If the same ad group also bids on trail_running_shoes, that click arrives with utm_term=trail_running_shoes. Both clicks roll up to the same campaign, but GA4 splits them by keyword.
Why utm_term Matters
utm_term is the only standard UTM parameter built specifically for keyword-level reporting. utm_source identifies the platform (google). utm_medium identifies the channel type (cpc). utm_campaign identifies the initiative (spring_sale). None of those reveal which search query a user typed before clicking the ad. utm_term fills that gap.
For PPC accounts that auto-link Google Ads to GA4, keyword data flows through native integrations and utm_term is not required. For paid search platforms without that integration, like Microsoft Ads, utm_term is the only practical way to pass the matched keyword into GA4 reports.
Common utm_term Use Cases
utm_term has a narrower set of applications than the other UTM parameters. The standard cases are:
- Microsoft Ads (Bing) keyword tracking. Use dynamic insertion:
utm_term={keyword}. Bing replaces{keyword}with the matched keyword at click time. - Google Ads without auto-tagging. If auto-tagging is off, use
utm_term={keyword}in the final URL suffix to pass keyword data to GA4. - Other paid search platforms. Yahoo Japan, Yandex, Naver, and DuckDuckGo Ads all support keyword passing through utm_term.
- Native ad networks with keyword targeting. Taboola and Outbrain campaigns sometimes use utm_term to pass the matched topic or audience segment.
- Manual A/B testing of keywords. Rarely, marketers hard-code utm_term values to test specific keyword variants in non-search campaigns.
utm_term vs utm_content
The two optional UTM parameters get swapped often. Each has a distinct purpose:
| Parameter | What it tracks | Typical value |
|---|---|---|
| utm_term | The paid search keyword that triggered the click | running_shoes |
| utm_content | The ad creative, link placement, or variant that was clicked | headline_a |
A Google Ad bidding on running_shoes with two headline variants would carry utm_term=running_shoes&utm_content=headline_a on one creative and utm_term=running_shoes&utm_content=headline_b on the other. utm_term answers “which keyword?”. utm_content answers “which version of the ad?”.
Dynamic Keyword Insertion
Most paid search platforms support a placeholder syntax that replaces the value at click time. For Google Ads, the syntax is {keyword}:
https://example.com/?utm_source=google&utm_medium=cpc&utm_campaign=brand_terms&utm_term={keyword}
When a user clicks the ad after searching for “best running shoes”, Google replaces {keyword} with best+running+shoes, and GA4 records best running shoes in the Session manual keyword dimension. Microsoft Ads uses the same {keyword} syntax. Yandex uses {keyword}. Always verify the placeholder for the specific platform.
utm_term Best Practices
- Use lowercase. GA4 treats
utm_term=Running_Shoesandutm_term=running_shoesas different keywords, splitting one keyword across two rows. - Use dynamic insertion when available. Hard-coding utm_term defeats the purpose of keyword-level tracking. Use the platform’s placeholder syntax.
- Do not use utm_term for non-search campaigns. Email, organic social, and display campaigns have no keyword. Putting article titles or content names in utm_term breaks GA4’s “manual keyword” dimension.
- Skip auto-tagged Google Ads accounts. If GA4 is linked to Google Ads, keyword data flows through the integration. Adding manual utm_term creates duplicate or conflicting data.
- Keep keyword values clean. Strip extra spaces, currency symbols, and special characters before passing them through.
For non-search campaigns, use utm_content instead. Build tagged search URLs with consistent values using the free UTM builder at linkutm.
Frequently Asked Questions
What does utm_term mean?
utm_term identifies the paid search keyword that triggered a click on an ad. It is the standard UTM parameter for passing keyword data into Google Analytics and is most often populated through dynamic insertion in Google Ads, Microsoft Ads, and other search platforms. GA4 stores the value in the Session manual keyword dimension.
Is utm_term required?
No. utm_term is optional. Only utm_source, utm_medium, and utm_campaign are required by GA4. utm_term and utm_content are extra fields used when you need keyword-level or creative-level detail beyond the campaign rollup.
When should you use utm_term?
Use utm_term for paid search ads on platforms without native GA4 integration. Microsoft Ads, Yahoo Japan, Yandex, and similar networks all rely on utm_term to pass keyword data into GA4. Skip it on Google Ads accounts that are already auto-tagged, since the integration handles keyword reporting automatically.
What is the difference between utm_term and utm_content?
utm_term tracks the paid search keyword. utm_content tracks the ad creative, button, or link variant. A search ad for running_shoes running two headline tests would use utm_term=running_shoes on both and split the headlines with utm_content=headline_a and utm_content=headline_b.
Where do you see utm_term in GA4?
Open Reports, then Acquisition, then Traffic acquisition. Add “Session manual keyword” as a secondary dimension. GA4 splits traffic into rows based on the utm_term value passed in each URL.