Search Term Targeting
About the New Search Term Targeting FeatureKevel’s new Search Term Targeting feature is the recommended way to match ads to shopper search queries within search-result inventory. It offers a dedicated, purpose-built solution that improves relevancy, offers fuzzy matching, and standardizes integrations compared to previous keyword or custom targeting configurations.
This feature may not be enabled for your account yet. If you don’t see it available in your UI or API configuration, please contact your Kevel account team to express interest and get support migrating to the new setup.
In the meantime, you can continue using keyword or custom targeting. Documentation for that approach is available here.
How Matching Works
Search Term Targeting supports two match types—Broad (default) and Strict—allowing you to balance flexibility and precision. Kevel matches the search term passed with ad decision requests against terms saved to Flights and Ads.
Match Types
Broad Match (Default)
Broad matching asks: "Is this query about the same topic?"
- Word order can be rearranged (e.g., "shoes running" matches "running shoes")
- Allows partial term matches (e.g., "running" matches "running shoes")
- Typo-tolerant with edit distance of ~1 character
- Case insensitive
- Preserves word boundaries: "ice cream" and "icecream" are treated as different terms
Use Broad when you want to cast a wide net and match shoppers browsing a general category.
Strict Match
Strict matching asks: "Is this query saying the same thing?"
- Exact word order required: Terms must appear in the same sequence
- All target words required: The query must contain all words from the targeted term
- No extra words: The query cannot contain unrelated words
- Typo tolerance: Minor typos are still allowed (edit distance ~1)
- Case insensitive
- Whitespace is ignored: "ice cream" and "icecream" are treated as equivalent (but "ice-cream" with a hyphen is different)
Use Strict when you want to match shoppers with specific purchase intent, regardless of whether they use spaces in compound words.
Additional Matching Details
Positive and Negative Targeting
You can specify search terms as either positive (terms you want to match) or negative (terms you want to exclude). This applies to both Broad and Strict match types and allows you to control both where your ads should and should not appear.
Setup TipWhen entering search terms, try to be at least as specific as your shoppers—but not more. Overly generic or high-level terms (e.g. just 'shampoo') may match undesired queries or none at all.
What’s Not Supported
- No semantic matching (e.g., “ascorbic acid” ≠ “vitamin C”)
- No support for broad synonyms or category-based inference (e.g., “hair care” won’t match “shampoo”)
Matching Examples
The table below shows how shopper queries match against targeted search terms for both Broad and Strict match types:
| Shopper Query | Broad: "shampoo" | Broad: "kids shampoo" | Strict: "kids shampoo" |
|---|---|---|---|
| shampoo | ✅ | ✅ (partial match) | ❌ (missing "kids") |
| shamoo | ✅ (typo) | ✅ (partial+typo) | ❌ (missing "kids") |
| kids shampoo | ❌ (extra term) | ✅ | ✅ |
| shampoo kids | ❌ (extra term) | ✅ (reordered) | ❌ (wrong order) |
| kids shamoo | ❌ (extra term) | ✅ (reordered+typo) | ✅ (typo) |
| kid shampoo | ❌ (extra term) | ✅ (stemming) | ✅ (stemming) |
| kids shampoo sale | ❌ | ❌ (extra term) | ❌ (extra word) |
Key differences:
- Broad allows word reordering and partial matches; Strict requires exact order and all words
- Broad preserves word boundaries; Strict ignores whitespace (e.g., "ice cream" = "icecream")
- Both allow minor typos and basic stemming (e.g., "kid" → "kids")
- Neither allows extra unrelated words in the query
Whitespace Handling
Because Strict ignores whitespace, it can match more queries than Broad in some cases:
| Shopper Query | Target Term | Broad | Strict |
|---|---|---|---|
| ice cream | icecream | ❌ | ✅ |
| icecream | ice cream | ❌ | ✅ |
| cream ice | ice cream | ✅ | ❌ |
This is intentional: Strict is "strict" about meaning (word order), not spelling (word boundaries).
Note: if only negative search terms are included, ads will be eligible for any shopper query except those that match the negative term(s).
Adding Search Terms
You can add search terms when configuring a Flight or Ad using the Management API and UI. Each term should reflect a query that you want your ad to match. Search terms set on Ads will override any set at the Flight level.
UI
To configure Search Terms on Flights, use the Search Term Targeting panel on the Flight editor screen:
To configure Search Terms on Ads, use the field within the Delivery Settings panel in the Ad editor modal.
API
To configure Search Terms on Flights and Ads, use the Create or Update Flight or Ad endpoint and include the SearchTerms parameter. This parameter expects an array of objects with the following fields:
Term(required): The search term stringIsExclude(required): Boolean indicating whether to positively or negatively match this termMatchType(optional): Either"Broad"(default) or"Strict"
Example:
{
...
"SearchTerms": [
{
"Term": "shampoo",
"IsExclude": false,
"MatchType": "Broad"
},
{
"Term": "kids shampoo",
"IsExclude": false,
"MatchType": "Strict"
}
]
}Including the Search Term in Ad Decision Requests
When making ad decision requests, include the searchTerm parameter with the string value of the shopper query. Example:
{
"placements": [
{
"divName": "div0",
"networkId": 23,
"siteId": 667480,
"adTypes": [
5
]
}
],
"user": {
"key": "abc123"
},
"searchTerm": "shampo"
}Bid Modifiers
Bids can be modified based on matched search terms. Search term bid modifiers use exact matching—the fuzzy logic described above for targeting purposes is not currently applied in this context.
UI
To configure Search Term Bid Modifiers on Flights, use the Bid Modifiers panel on the Flight editor screen and select the "Search Term" type then enter the value to match against:
API
To configure Search Term Bid Modifiers on Flights on Flights, use the Create or Update Flight endpoint and include the BidModifiers parameter with an entry for the desired search term as shown in the example snippet below:
{
...
"BidModifiers": [
{
"Match": {
"SearchTerm": {
"Term": "kids shampoo"
}
},
"Multiplier": 2
}
]
}See Bid Modifiers for more details on how this functionality works.
Reporting
Event and request logs contain search term data including:
SearchTerm: The search term as passed verbatim in the ad decision requestMatchedSearchTerm: The specific targeted term that matched the shopper queryTargetedSearchTerms: The term(s) as they were saved on the Ad or Flight, organized by match type (broad/strict) and targeting direction (include/exclude)
Example log snippets:
{
"SearchTerm": "shampo",
"MatchedSearchTerm": "shampoo",
"TargetedSearchTerms": {
"broad": {
"include": ["shampoo", "kids shampoo"],
"exclude": ["dog shampoo"]
},
"strict": {
"include": ["premium shampoo"]
}
}
}{
"Decisions": [
{
...
"Selections": [
{
...
"SearchTerm": "cat food",
"MatchedSearchTerm": "cat food",
"TargetedSearchTerms": {
"broad": {
"include": ["cat food", "pet food"]
},
"strict": {
"include": ["premium cat food"]
}
}
}
]
}
],
...
"SearchTerm": "cat food"
}Reporting on Search Terms using Kevel's Reporting API and report generation UI will be available in a future release.
Ignore Targeted Search Terms with Skip Filters
In cases where you want to make an ad decision request that ignores search term targeting, use Skip Filters. This allows ads that are targeted to search terms to be eligible to serve when the search term on the ADR is omitted or doesn't match. This is useful when ads from a Flight may be shown on search results pages and other non-search contexts (e.g. category pages or product detail pages) — when an ADR comes from a non-search page, include the skipFilters parameter in the placement as shown below to only apply other eligible targeting criteria.
{
"placements": [
{
"skipFilters": {
"searchTerm": true
},
"divName": "div0",
"networkId": 23,
"siteId": 667480,
"adTypes": [
5
]
}
],
"user": {
"key": "abc123"
}
}Forecast
Forecasting performance based on Search Terms will be available in a future release.
Updated about 2 hours ago
