Move from keyword targeting to category targeting

Move category pages you target with keywords or reserved keys to category targeting, for ad ops and developers.

Keyword targeting is the approach where your site sends the category of a page as a keyword, and you target that keyword on Flights and Ads. This page is for ad ops and developers who use it, or who match category pages with reserved keys, and want to move some or all of it to category targeting. You can move one Flight at a time. To weigh the options first, see Transitioning to category targeting from an alternate approach.

🚧

Category targeting is enabled per network. If you do not see Category Targeting on your Flights, contact your Kevel representative.

When to move and when to stay

Keyword targeting, reserved keys and category targeting are all supported. Each is one condition on a Flight or Ad, and an Ad serves only when it passes every condition it has.

Move when you want:

  • A managed list. Your team and advertisers choose categories from a list Kevel loads for your network, instead of typing keywords that must match what your pages send.
  • The matched category in reports. Placement Category (Matched) shows the category that matched an Ad's rule. Keyword reports show the keyword.
  • Category bid modifiers. A modifier matches the category exactly, and is set in the Ad Server UI or Management API.
  • Advertisers who choose categories in Console. On the placements Kevel has enabled, Console's picker saves category rules. See Category targeting in Console.

Stay with keywords or reserved keys when you need:

  • Patterns. A reserved key with like or contains matches many category pages with one rule. Category targeting compares the whole value as text, with no wildcards.
  • A parent that matches its children. A keyword rule matches any page that sends that keyword, so a page can send each of its ancestors as a keyword. Category targeting matches the exact category only.
  • Requests that are not Decision API requests. Only the Decision API (/api/v2) carries a category. An Ad with category rules does not serve through /ados, /amp, /api/v1, /s/ or /vast3.

You can also split the move. Keep keywords where you need a pattern or a parent, and use category rules for the pages that map to one category each.

What changes and what you keep

Keyword targetingCategory targeting
What your request sendskeywordscategory on each placement
Where you set itKeywords on a Flight or Ad, or a Zerkel query in Custom TargetingCategory Targeting on a Flight or Ad
How it matchesExact, ignoring capitalization, against each keywordExact, case-sensitive, against the whole category
Parent categoriesA page matches every keyword it sendsA parent does not match its children
Combining rulesAND, OR and ! on a Flight, and OR on an Ad. Flight and Ad keywords must both passInclude and exclude rules. An Ad's rules replace its Flight's
A request with nothing to matchAn Ad that only excludes keywords still servesAn Ad with any category rule, even exclude-only, is not eligible
ReportsBy keyword, grouped on Sites and ZonesPlacement Category (Matched)
Bid modifiersKeyword modifiersCategory modifiers
Skip for one requestskipFilters with keywordskipFilters with category, set to true
Limits512 characters of keywords on a request25 rules per Flight and per Ad, which can be adjusted on request, and 200 characters per category

What you keep. Keyword targeting stays on the Flight or Ad until you remove it. You can send category and keywords on the same request, and sending category changes no delivery until an Ad has category rules.

Running both together. An Ad can carry keyword targeting and category rules at once. It serves only where both pass. An Ad that targets the keyword cat_dresses keeps serving on the same pages after you add an include rule for Dresses. The request must carry the keyword and a category that matches the rule.

Before you start

Where it applies. Flights and Ads that target category pages with keywords or reserved keys, set in the Ad Server UI or Management API.

What you need.

  • Decision API requests to /api/v2, where your pages can send a category on each placement. See Send a category in decision requests.
  • A list of the Flights and Ads that use category keywords, and the category each keyword stands for.
  • Your Kevel representative, who enables category targeting for your network and loads the list of categories.

What it does not do.

  • It does not convert your keyword rules. You create the category rules yourself, and the steps below show how each kind of keyword rule translates.
  • It does not match patterns or children. Where you need those, keep the keyword or reserved key and use category rules for the rest.
  • It does not change Console template campaigns. Advertisers who enter keywords there keep doing so. Category targeting in Console is for placements. See Category targeting in Console.

Move keyword targeting step by step

The order matters. Send the category first, because an Ad with category rules is not eligible on a request that carries none.

Take stock of your keyword targeting

Purpose. Know which rules you are replacing, so none is lost.

  1. List the Flights and Ads. In the Management API, read Keywords on each Flight and ActiveKeywords on each Ad. In the Ad Server UI, open each Flight's Keyword Targeting tab. Note every keyword that stands for a category page.
  2. Note the shape of each rule. Mark whether it includes the keyword, excludes it with !, or joins it to another keyword with a comma.
  3. Write the category each keyword stands for. A keyword such as cat_dresses stands for the category Dresses, or whatever value your pages will send in category. Mark each rule that relies on a pattern or a parent.

Validation. You have a list of Flights and Ads, with the categories each targets, the rules that join a category to another keyword, and the rules that rely on patterns or parents.

Send the category on every placement

Purpose. Give Kevel the category of each page before any rule depends on it. Nothing changes in delivery.

  1. Choose the value for each category page. It becomes the category ID, so use the form you want people to see in the picker. That can be an ID, a name, or a breadcrumb such as Grocery > Dairy for pages in a hierarchy. Use one value for each page. Matching is case-sensitive and exact. Reports show each value as sent.
  2. Add category to each placement. Put it inside each entry of placements, and keep sending keywords. Kevel splits a breadcrumb at your network's delimiter, > by default, for logs and reports. The delimiter never changes matching. If your category names contain >, ask your Kevel representative to set another. See Send a category in decision requests.
  3. Cover every placement where an Ad with category rules should serve. An Ad with any category rule, including one that only excludes, is not eligible on a request that has no category. A keyword exclusion behaves differently: an Ad that only excludes keywords still serves on a request that has no keywords.

Validation. Run a report grouped by Placement Category, as described in Report on categories. Your values appear on the pages you expect, and each page appears under one value. If Placement Category is not in the Group By panel, ask your Kevel representative to enable it, or run the report through the Reporting API.

Ask Kevel to enable it and load the category list

Purpose. Get a list that your team and advertisers choose from, and that equals what your pages send. Kevel performs this step.

  1. Send your Kevel representative the values. Share the category values from the previous step, and say whether they come from your product feed or from a separate list. Ask for category targeting to be enabled for your network and the list loaded. Kevel can build the list from your product feed each time it ingests a feed file. If you use a separate list, you keep it current. See Targetable categories.
  2. Compare one real value from each source. The ID in the list must equal the value your pages send. An ID that does not match saves and never serves, and nothing reports an error. Correct variants in the source first: mixed capitalization, values cut off, or a stray prefix.

Validation. Category Targeting appears in the Flight sidebar, and the Categories picker lists your categories. GET /v1/category-catalog returns them with Id, Name and ParentId. The picker and the endpoint read the first 10,000 categories.

Add category rules next to your keywords

Purpose. Prove the rules on one Flight while the keywords keep delivery as it is.

  1. Pick one Flight. Use a test Flight, or a live Flight whose Ads you can watch.
  2. Open Category Targeting. Select Include to serve only on the categories you pick, or Exclude to serve everywhere except them. Search for the categories, select them and select Add. The steps for Ads and for the Management API are in Set up category targeting.
  3. Translate each keyword rule. Use the table below.
  4. Leave the keywords in place. The Ad must pass both, so delivery stays the same where the two agree.
Your keyword ruleThe category rule
One keyword for one category page, such as cat_dressesInclude Dresses
Several rules on separate lines, which are alternativesInclude each category
A ! rule on a category keywordExclude that category, on its own rather than beside a broad include
A category keyword joined to another keyword, such as cat_dresses,saleInclude Dresses and keep sale as a keyword. The Ad must pass both
Different categories paired with different other keywordsOne Flight or Ad for each pairing
A parent that matched its child pages because they sent it as a keywordSelect the parent and each child, or keep the keyword. Select all next to a parent adds its children and not the parent

Put the rules at one level. An Ad with its own category rules uses them instead of its Flight's, so a Flight that includes Grocery and an Ad that includes Toys serves that Ad on Toys pages only. Keyword targeting behaves differently, because Flight and Ad keywords must both pass.

If a Flight targets more than 25 categories, ask your Kevel representative to raise the limit for your network, or spread the categories across Flights. If a script updates your Flights, make it send CategoryTargeting on every update. An update that leaves it out clears the saved rules, unless your network uses partial updates.

Validation. The categories appear in the Flight's table with their ID, type and name, and a GET on the Flight returns the CategoryTargeting you saved.

Test the rules

Purpose. See each behavior before live traffic depends on it.

Allow a few minutes after you save a rule, because a decision can briefly return mixed results right after an edit. Send Decision API requests for a Flight that includes Grocery and targets the keyword cat_grocery. Add flightId to the placement to consider that Flight alone.

RequestResult
category is Grocery, and keywords include cat_groceryThe Ad can serve
category is a different valueNot eligible
No categoryNot eligible, even when the keyword matches
category is Grocery, and the keywords do not include cat_groceryNot eligible, because the keyword targeting still applies

If any placement sends skipFilters with keyword to bypass keyword targeting, send category set to true on that placement as well. See skipFilters.

Validation. After some traffic, a report grouped by Placement Category (Matched) shows the categories that matched the Ad's include rules. The Ad serves on the pages you expect and on no others.

Remove the keyword targeting

Purpose. End with one mechanism, without leaving an Ad untargeted.

  1. Check that each Ad has a category rule. The rule can be the Ad's own or its Flight's. An Ad with neither is eligible on every category page once its keywords go.
  2. Move the bid modifiers. A keyword modifier stops applying when you stop sending its keyword. Add a Category modifier for the same category first, as described in Set up category targeting. Only one modifier applies to a request, the one that gives the highest price.
  3. Remove the category keywords. Delete them from the Flight's keywords or the Ad's ActiveKeywords, and leave every keyword that is not a category.
  4. Repeat Flight by Flight. Stop sending the category keywords on requests only when no Flight or Ad still targets them.

Validation. The requests in the test table still return the same results with the keywords gone, and the Ads serve on the pages you expect.

Roll back

Delete the category rules from the Flight or Ad. In the Ad Server UI, remove each category in Category Targeting on the Flight, or in Delivery Settings on the Ad. Removal saves at once. In the Management API, send CategoryTargeting as an empty list. The keyword targeting you kept then continues as before.

If you already removed the keywords, add them back first and delete the rules after. An Ad with neither is eligible on every category page.

Keep sending category and keep the loaded list. Neither changes delivery. If you ask Kevel to turn category targeting off for your network, delete the rules first. With it off, Kevel ignores saved rules, so Ads that carried them serve on every category page, including Ads that excluded categories.

What reporting looks like before and after

  • Before. You report by keyword, and you can group by keyword on Sites and Zones. If your pages send category, Placement Category shows each page's category as well.
  • After. Placement Category (Matched) shows the category that matched an Ad's include rule. An Ad that only excludes categories has no matched category, and neither does an Ad without rules.
  • Fill rate by category. Read it from Placement Category. Placement Category (Matched) is a performance dimension, so request counts and fill rate do not apply to it.
  • One report, one group. A report cannot combine category dimensions with keyword dimensions. While you run both, make one report by keyword and one by category. A request that mixes them returns MutuallyExclusiveDimensions.

Reports by keyword keep working for as long as your requests carry the keyword. See Report on categories.

Move reserved keys

📘

This part is for category pages you match with a Zerkel query on $keywords in Custom Targeting, such as $keywords like "*dress*". If you use keyword targeting only, skip it. The steps above still apply for sending the category, enabling it and testing.

A reserved key query matches by pattern, so one query covers many category pages, including pages you add later. Category rules name each category. If the pattern is what you need, keep it.

To move a pattern to category rules:

  1. List what the pattern matches. List the keywords your pages send that the pattern matches. A report grouped by keyword on Sites and Zones shows them. A pattern such as *dress* matches Party Dresses and Summer Dresses, so each page becomes a category with its own rule.
  2. Add an include rule for each category. Select each one on the Flight or Ad. A parent does not match its children, so select every page you want.
  3. Keep the rest of the query. If the query joins the pattern to other conditions, such as device or location, leave those in Custom Targeting. The Ad must pass both until you edit the query.
  4. Test, then edit the query. After the tests above pass, remove the $keywords pattern from the Zerkel query on the Flight or Ad.
  5. Add a rule for each new category page. A pattern picks up new pages by itself. Category rules do not, so review the values in a report grouped by Placement Category from time to time.

Category rules are set on Flights and Ads. If the pattern is on a Channel, add the rules to the Flights in that Channel. Reserved keys other than $keywords are not affected.

Troubleshooting

What you seeWhy it happens and what to do
An Ad stopped serving after you added category rules.The Ad must now pass its category rules and its keywords. Check that the request carries a category that equals the saved ID, character for character. See How category targeting matches Ads.
An Ad with an exclude rule stopped serving on some requests.Those requests carry no category. An Ad with any category rule is not eligible without one. Send a category on every placement.
An Ad serves on every category page after you removed its keywords.It has no category rule, its own or its Flight's. Add the rules, or add the keywords back.
A parent category does not include its children.Matching is exact. Select each child, or keep the keyword or reserved key for that page.
Category Targeting is missing from the Flight sidebar.It is not enabled for your network. Contact your Kevel representative.
Placement Category (Matched) is empty for an Ad.The Ad has no include rule, or only excludes categories, or no request carried a category that equals the rule.
A report returns MutuallyExclusiveDimensions.The report mixes category and keyword dimensions. Run one report for each.
A saved category never matches.The saved ID differs from what your pages send in spacing or wording, for example Grocery>Dairy against Grocery > Dairy. Save the exact value.

Related


What’s Next

Set up category targeting and send the category