Google has made a major change to the structured data requirements for its merchant listings, adding clarification on how to use structured data to indicate the duration of sale prices. In total there are three new additions, but the biggest change by far is the addition of a new category property. Although this is not a “required” structured data property, it is still recommended.
New category property
In Schema.org structured data, a type is a classification of an entity, to say what something is. A structured data property is an attribute of the type, it can indicate what type of type or add other descriptive details about the type.
Google has added a new category property to structured product data, allowing merchants to categorize products in a more granular way directly in markup rather than relying solely on feed attributes. It also gives merchants a way to link the web page’s structured data to Google’s own product taxonomy, bridging the gap between what is tagged on the page and what is submitted through the Merchant Center feed.
Google’s new category property accepts either plain text or a Category code object.
Plain text
Plain text works like the existing product_type attribute in product feeds. This is a custom category label that merchants define themselves.
Category code
CategoryCode is a structured object that allows you to declare a Google Product Category (GPC) directly in markup, using inCodeSet to point to Google’s taxonomy and codeValue to specify the category, either by numeric ID or full path. The CategoryCode object corresponds directly to the Google Product Category (GPC) specific to the merchant feed. CategoryCode allows merchants to put that same GPC value directly into their structured data on the page instead of it only appearing in the merchant feed.
Here is an example of structured data showing how this works:
"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’s new guidelines explain:
“Text or CategoryCode
Specifies the product categories. This property can accept an array of values, mixing plain text strings and CategoryCode objects.
Custom product types: Plain text values represent your custom product category, similar to the product_type attribute in product feeds. We recommend limiting custom product types to the 750 character limit.
Google Product Category (GPC): To specify a GPC, similar to the google_product_category attribute in product feeds, use the CategoryCode type.
Set @type to CategoryCode.
Set inCodeSet to a Google Product Taxonomy URL (for example, “https://www.google.com/basepages/producttype/taxonomy-with-ids.en-US.txt”).
Set codeValue to the GPC ID (for example, “2271”) or the full category path (for example, “Clothing & Accessories > Clothing > Dresses”).
When using path format, use > as a separator between levels. Each segment of the path must contain at least one letter. Digital IDs are also accepted.
You can provide multiple category values. For example, you can include multiple GPC codes or paths and multiple custom product type strings.
Structured data over the duration of the sale
Google also added a new section to the merchant listing structured data documentation that allows merchants to express the duration of a sale. It adds new documentation on three properties:
- PriceValidUp to
- validFrom
- validThrough
Here are the new explanations:
“priceValidUntil
Date
The date and time after which the price will no longer be available, in ISO 8601 format. Your ad may not be displayed if the priceValidUntil property specifies a date in the past. For more details and markup examples, see Sale Duration.
validFrom
DateTime or DateThe price validity start date and time, in ISO 8601 format. For more details and markup examples, see Duration of the sale.
validThrough
DateTime or DateThe date and time the price expires, in ISO 8601 format. For more details and markup examples, see Duration of the sale.
Duration of the sale
Finally, there is a whole new section on sale duration. The sale duration is simply the date that matches the three structured data properties, priceValidUntil, validFrom, and validThrough. It tells Google exactly when a sale price starts and ends. It aims to keep sale prices accurate in search results, so that a listing does not continue to show an offer after it expires.
The new documentation explains:
« Duration of the sale
To specify the period for which a sale price is active, use the following schema.org properties in ISO 8601 format (for example, 2025-12-31T23:59:59+01:00):Start date and time: Use the validFrom property.
End date and time: Use the validThrough property or the priceValidUntil property.Best practices:
Provide both a start date/time and an end date/time to clearly define the sales period.
Make sure that the start date/time (of the validFrom property) is before or equal to the end date/time (of the validThrough property or the priceValidUntil property).We recommend including time and time zone in ISO 8601 format for accuracy in Google systems.
Where to place properties:
On the Offer node: You can add the validFrom property and (validThrough property or priceValidUntil property) directly to the Offer node. These dates apply when the price property on the Offer node represents the current active sale price.On a PriceSpecification node: If the sale price is defined in a PriceSpecification node (usually without the priceType property when a StrikethroughPrice value is also present), add the validFrom property and the validThrough property to that specific PriceSpecification node. Note that the priceValidUntil property is not applicable to the PriceSpecification type.
How it benefits merchants
Google’s new documentation allows merchants to express category and sale price details directly in structured data, helping Google display accurate product information in search results. New properties of structured data create unity between Schema.org structured data and Merchant Feed Google Product Category (GPC) data. Category now maps to product_type and google_product_category from Merchant Center feeds, and sale duration maps to sale_price_effective_date, so merchants have a way to express them at the page level instead of relying solely on the feed.
Featured image by Shutterstock/allegro





