Google has updated Search Central guidance with clearer rules for marking sale prices in Product structured data, giving ecommerce sites a more direct way to state when a discount starts and ends.
Google’s merchant listing documentation separates three price concepts: active price, strikethrough price, and member price. The active price is the amount currently offered. A strikethrough price is the higher regular price shown during a sale. A member price is tied to a loyalty program tier.
For sale pricing, Google says the current active price becomes the sale price when a second price is provided as the original price and marked with https://schema.org/StrikethroughPrice. The active sale price should not be marked with priceType.
The sale duration guidance adds timing to that setup. Merchants can mark the start with validFrom and mark the end with either validThrough or priceValidUntil, using ISO 8601 date or date-time formatting. Google recommends providing both a start and an end date, and including time and time zone details for accuracy in Google systems.
Where the sale dates belong
If Offer.price contains the active sale price, Google says the sale dates can be placed on the Offer node. If the sale price is expressed inside a PriceSpecification node, the validFrom and validThrough properties should be placed on that sale price node instead. Google says priceValidUntil is not applicable to PriceSpecification.
That distinction matters for product templates that generate pricing markup automatically. A store may show the correct discount on the page but still give Google invalid or ambiguous pricing data if the schema places dates on the wrong object, leaves the original price unmarked, or uses an expired priceValidUntil value. Google’s docs say a listing may not display if priceValidUntil points to a past date.
How this connects to Merchant Center
Merchant Center already has feed attributes for sale prices. Google’s product data specification says sale_price should be submitted in addition to the regular price attribute and should match the landing page and checkout pages. It also says sale_price_effective_date defines the sale price date range, uses ISO 8601 format, and should be used with sale_price.
The Search Central update brings similar timing logic to on-page schema. It does not replace product feeds for merchants using Merchant Center, but it gives Google another structured product data source to compare against the page and feed.
What ecommerce sites should check
- Active price: The current buyable price should appear as
Offer.priceor as an activeUnitPriceSpecification, withoutpriceType. - Regular price: The higher original price should be marked as
https://schema.org/StrikethroughPricewhen a sale price is active. - Sale dates:
validFromshould be earlier than or equal tovalidThroughorpriceValidUntil. Date-time values should include a time zone where possible. - Correct placement: Dates should sit on the
OfferwhenOffer.priceis the sale price, or on the salePriceSpecificationwhen the sale price is modeled there. - Membership pricing: Member prices should use
validForMemberTier, notpriceType. Google says a price specification containing both properties is ignored. - Feed consistency: Sale price data should match across the product page, structured data, Merchant Center feed, and checkout.
The category update came with it
The same July 7 documentation update also added detail for Product.category. Google says the property can accept plain text values for merchant-defined categories and CategoryCode objects for Google Product Category values. For merchants, this is a related data-quality change: product category, price, sale dates, availability, shipping, and return data are all part of the product information Google’s merchant listing documentation asks merchants to define or keep accurate.
Structured data is not a shortcut
The update is useful, but it is not a promise of richer display. Google’s merchant listing guidance says structured data can make product pages eligible for merchant listing experiences, and its troubleshooting guidance says features that consume structured data are not guaranteed to appear in Search.
Google also recommends putting Product structured data in the initial HTML for merchants optimizing shopping results. Its documentation warns that JavaScript-generated Product markup can make Shopping crawls less frequent and less reliable, especially for fast-changing product availability and price.
For most ecommerce teams, the work is practical. Sites using Shopify, WooCommerce, custom product templates, feed apps, or SEO schema plugins should review generated Product markup before seasonal promotions, especially if prices change often.

Tech Help Canada Staff researches, writes, and reviews practical content for business owners and professionals. Our coverage spans business, marketing, SEO, technology, and the tools and systems people use to grow and operate online. We focus on clear, useful information backed by research, hands-on experience, and editorial review. Learn more about our team and editorial standards. Need help with something? Contact Us







