In short. Use Text for a store's custom product type and CategoryCode with Google's taxonomy URL for a Google Product Category.
Definition: In Product markup,
categorycan hold plain text for a merchant's own product type or aCategoryCodeobject for a code in Google's Product Taxonomy. The two forms can appear together in an array, so store classification and Google's controlled category can be recorded as separate values.
Key facts
- Google's merchant listing documentation, updated 8 September 2026, accepts
TextorCategoryCodeforcategoryand permits an array that mixes strings withCategoryCodeobjects. - Plain text represents a custom product type, similar to the
product_typeproduct-feed attribute. Google recommends keeping custom product types under the 750-character limit. - A Google Product Category uses
CategoryCode, similar to thegoogle_product_categoryproduct-feed attribute. ItsinCodeSetidentifies Google's taxonomy and itscodeValuecarries an ID or category path. - Schema.org's
categoryproperty describes a category for an item and permits greater signs or slashes to indicate a category hierarchy informally. - Schema.org's
CategoryCodetype definescodeValueas a short textual code that uniquely identifies the value andinCodeSetas the set or URL containing that code.
Which value represents a store category?
Use a plain Text value when the label belongs to the store's own catalog structure. Google describes this form as a custom product type and relates it to product_type in product feeds. A value such as Dresses can therefore express the merchant's own category label. The documentation recommends keeping each custom product type under the 750-character limit.
Use CategoryCode when the value is intended to identify a Google Product Category, or GPC. Google's documentation assigns the object the CategoryCode type, then uses inCodeSet for a Google Product Taxonomy URL. codeValue can contain a GPC ID such as 2271 or the full path Apparel & Accessories > Clothing > Dresses.
Schema.org gives category a wider vocabulary. Its property definition accepts CategoryCode, Text, Thing, URL, and PhysicalActivityCategory, and describes greater signs or slashes as informal hierarchy markers. Google's merchant listing guide supplies the narrower interpretation relevant to this Search feature: plain text is the custom product type, while CategoryCode is the GPC form.
How should a taxonomy path be encoded?
Google's category property guidance requires the path separator > when a CategoryCode uses the path format. Each path segment must contain at least one letter, while numeric IDs are also accepted. The inCodeSet URL in Google's example is https://www.google.com/basepages/producttype/taxonomy-with-ids.en-US.txt.
The following JSON-LD fragment follows Google's example and combines two taxonomy values with two store labels. The taxonomy objects share the same inCodeSet and use different codeValue forms.
"category": [
{
"@type": "CategoryCode",
"inCodeSet": "https://www.google.com/basepages/producttype/taxonomy-with-ids.en-US.txt",
"codeValue": "2271"
},
{
"@type": "CategoryCode",
"inCodeSet": "https://www.google.com/basepages/producttype/taxonomy-with-ids.en-US.txt",
"codeValue": "Apparel & Accessories > Clothing > Dresses"
},
"Dresses",
"Special Occasion > Wedding & Bridal Party Dresses"
]
Google states that multiple category values are allowed, including several GPC codes or paths and several custom product type strings. Schema.org's CategoryCode definition supplies the general model behind the object: codeValue identifies the category code and inCodeSet identifies the set that contains it.
Where should this markup be placed?
The category values belong on the Product object for the product being described. Google's technical guidance says merchant listing experiences support pages focused on a single product or variants of that product, and recommends product pages instead of pages that list products or a category of products. A category label in Product markup therefore describes the product's classification; it does not turn a store category page into a single-product page.
Check that each plain text label matches the store's visible product classification and that each CategoryCode points to Google's taxonomy through inCodeSet. Google's merchant listing implementation guidance provides the Rich Results Test for critical markup errors and URL Inspection for checking how Google sees a deployed page.
Related terms
- Product structured data
- Offer structured data
- Does every Schema.org property have a Google rich result feature?
- How should product variants be represented in structured data?
FAQ
Can a plain text value be a Google Product Category?
Google's merchant listing documentation reserves plain Text for a custom product type. Use a CategoryCode object when the value represents a Google Product Category and provide its taxonomy URL through inCodeSet.
Can one Product contain both forms?
Yes. Google allows the category property to be an array mixing plain text strings and CategoryCode objects. This lets the markup carry a store label and one or more GPC values on the same Product.
Can I write a taxonomy path without a CategoryCode object?
Google's example includes plain text paths for custom product types and CategoryCode objects for GPC paths. The object form identifies the taxonomy through inCodeSet; the plain text form represents the merchant's own product type.
Sources
- Google Search Central, "Merchant listing (Product, Offer) structured data", updated 8 September 2026
- Schema.org, "category", 16 September 2026
- Schema.org, "CategoryCode", 16 September 2026
Check how a page reads to answer engines. Open the GEO score analyzer