How can Product markup distinguish store categories from Google's taxonomy?

The Citead team, updated

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, category can hold plain text for a merchant's own product type or a CategoryCode object 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 Text or CategoryCode for category and permits an array that mixes strings with CategoryCode objects.
  • Plain text represents a custom product type, similar to the product_type product-feed attribute. Google recommends keeping custom product types under the 750-character limit.
  • A Google Product Category uses CategoryCode, similar to the google_product_category product-feed attribute. Its inCodeSet identifies Google's taxonomy and its codeValue carries an ID or category path.
  • Schema.org's category property describes a category for an item and permits greater signs or slashes to indicate a category hierarchy informally.
  • Schema.org's CategoryCode type defines codeValue as a short textual code that uniquely identifies the value and inCodeSet as 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.

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

  1. Google Search Central, "Merchant listing (Product, Offer) structured data", updated 8 September 2026
  2. Schema.org, "category", 16 September 2026
  3. Schema.org, "CategoryCode", 16 September 2026

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark