- What Google Actually Added — Two Distinct Capabilities
- Capability 1 — Product.category With CategoryCode Support
- Capability 2 — Sale Duration Properties
- Why This Update Matters Now — The AI Shopping Connection
- Implementation Checklist — Getting Both Additions Right
- Frequently Asked Questions
- The Bottom Line
E-commerce structured data has always carried a quiet inconsistency: what you could declare in your Google Merchant Center feed was richer than what you could express directly on your product pages through schema.org markup. Category classification and time-bound sale pricing both existed as mature Merchant Center feed attributes — product_type, google_product_category, and sale_price_effective_date — with no clean, direct page-level equivalent. Google's July 7, 2026 documentation update closes that gap, bringing on-page structured data into full alignment with Merchant Center feed capabilities for the first time.
I manage SEO for e-commerce clients across fashion, home goods, and specialty retail. Every time a client asked why their on-page product schema couldn't express a limited-time sale as precisely as their Merchant Center feed could, the honest answer was that the schema.org properties simply weren't formally documented for that purpose on Google's side. This update removes that gap entirely. This article covers exactly what changed, how to implement both new capabilities correctly, and why getting the sale duration properties right matters more than it might first appear.
What Google Actually Added — Two Distinct Capabilities
Google's July 7, 2026 update to the Merchant Listing structured data help document introduces two separate but related additions, both explicitly framed as aligning schema.org markup with existing Merchant Center feed attribute capabilities.
Capability 1 — Product.category With CategoryCode Support
Previously, merchants adding Product markup directly to their web pages had a single, ambiguous category property to work with. Google's update clarifies that Product.category now formally accepts two distinct data types, giving merchants precise control over how their category information is interpreted.
| Category Mode | Equivalent Feed Attribute | Use Case | Example |
|---|---|---|---|
| Plain text | product_type | Your own internal categorization, in your own words | "Men's Trail Running Shoes" |
| CategoryCode object | google_product_category | Maps products to Google's standardized taxonomy for more precise query matching | Apparel & Accessories > Shoes > Athletic Shoes |
The CategoryCode object uses two properties working together: inCodeSet references Google's own product taxonomy as the code system being used, and codeValue specifies the exact category — either by numeric ID or full taxonomy path. This gives merchants a direct, page-level way to tell Google "this is a Google Product Category, not just my internal label," which Google states improves how accurately listings match relevant search queries.
// Product.category — CategoryCode implementation example { "@context": "https://schema.org", "@type": "Product", "name": "AeroBoost Pro Running Shoes", "category": { "@type": "CategoryCode", "inCodeSet": "https://www.google.com/basepages/producttype/taxonomy.en-US.txt", "codeValue": "Apparel & Accessories > Shoes > Athletic Shoes" } }
Capability 2 — Sale Duration Properties
The second addition is a new "Sale duration" section in Google's documentation, explaining how three schema.org properties work together to declare exactly when a promotional price is valid — and, critically, when it stops being valid.
| Property | Function | Placement |
|---|---|---|
| validFrom | The date and time the sale price becomes active. | Offer or PriceSpecification |
| validThrough | The date and time the sale price ends. | Offer or PriceSpecification |
| priceValidUntil | The specific date after which the stated price should no longer be trusted for purchase. | Offer (commonly with validThrough) |
// Sale duration — full implementation example { "@context": "https://schema.org", "@type": "Product", "name": "AeroBoost Pro Running Shoes", "offers": { "@type": "Offer", "price": "64.99", "priceCurrency": "GBP", "availability": "https://schema.org/InStock", "validFrom": "2026-07-10T00:00:00+01:00", "priceValidUntil": "2026-07-15T23:59:59+01:00" } }
If your priceValidUntil value is in the past, your rich result listing may stop displaying entirely. This is not a cosmetic issue — it directly affects whether your product shows a price at all in Google Shopping and Search rich results. Time-limited promotions running without regularly updated priceValidUntil dates risk their entire rich result disappearing once the stated date passes, even if the sale itself was extended or a new price took over. Keeping these dates current is not optional if you run any form of time-limited promotion.
Why This Update Matters Now — The AI Shopping Connection
This update doesn't land in isolation. It arrives as Google's Universal Cart ecosystem — the AI-powered cross-merchant shopping hub spanning Search, Gemini, YouTube, and Gmail — continues expanding its merchant base throughout 2026. AI shopping systems evaluate structured data to determine merchant trustworthiness and to accurately represent time-sensitive offers to shoppers. A merchant whose category classification is precise and whose sale timing is machine-readable down to the hour gives AI shopping systems considerably more confidence than one relying on ambiguous plain-text category labels and static, potentially stale pricing claims.
"I've managed product feed accuracy for e-commerce clients for years, and the disconnect between Merchant Center feed richness and on-page schema always struck me as an unnecessary gap — one that occasionally produced contradictory signals when a feed said one thing about a sale's timing and the page schema said something less precise or nothing at all. The July update closes that gap directly. For a fashion retail client running rotating weekly promotions, we've already rebuilt their product schema template to auto-populate validFrom and priceValidUntil directly from their promotion calendar system, rather than relying on manual updates that previously lagged behind actual sale timing by a day or more. That lag was quietly producing rich result eligibility issues nobody had diagnosed correctly until this update gave us the specific properties to audit against."
Implementation Checklist — Getting Both Additions Right
Audit Your Current Product.category Implementation
Check whether your existing product schema uses plain text category values, a CategoryCode object, both, or neither. If you're using plain text only, evaluate whether adding a parallel CategoryCode mapping to Google's product taxonomy would improve query matching accuracy — particularly for products in categories with ambiguous or highly specific naming conventions.
Map Your Products Against Google's Product Taxonomy
Google's product taxonomy file is publicly available and provides both numeric IDs and full category paths. Cross-reference your product catalogue against this taxonomy to identify the correct codeValue for each product category. This is a one-time mapping exercise that pays off across your entire catalogue once built into your product data pipeline.
Audit Every Active Sale for Correct Duration Properties
Review every product page currently running a time-limited promotion. Confirm validFrom, validThrough, and priceValidUntil are present, accurate, and reflect the actual promotion timing — not a default template value left unchanged from a previous campaign. This audit alone often surfaces stale pricing data that has been silently affecting rich result eligibility.
Automate Sale Duration Updates From Your Promotion Calendar
Manual updates to priceValidUntil are the most common failure point — someone forgets to update the date when a sale is extended, or a template default gets left in place after a promotion ends. Wherever possible, connect your product schema generation to your promotion management or pricing system directly, so validFrom and priceValidUntil update automatically whenever a sale's timing changes.
Validate Using Google's Rich Results Test
After implementing both additions, run affected product pages through Google's Rich Results Test to confirm the schema parses correctly and the sale duration properties are read as expected. Cross-reference against your Merchant Center feed data for the same products to ensure consistency between your feed's sale_price_effective_date and your page schema's validFrom/priceValidUntil — contradictory signals between the two sources undermine the trust signal both are meant to provide.
Frequently Asked Questions
The Bottom Line
Google's July 7, 2026 update to Merchant Listing structured data documentation closes a long-standing gap between what merchants could declare in their Merchant Center feed and what they could express in on-page schema.org markup. The Product.category property now formally supports both plain text and Google's structured CategoryCode taxonomy mapping, while the new Sale duration mechanism — validFrom, validThrough, and priceValidUntil — gives merchants precise, time-bound control over promotional pricing that Google actually reads correctly. Audit your current implementation against both additions this week. Map your catalogue against Google's product taxonomy. And critically, automate your priceValidUntil updates from your promotion calendar — because a stale date silently costs you rich result eligibility, and most merchants won't notice until traffic has already dropped.
Driven by advanced SEO expertise, deep marketing analytics, high-impact content strategy
With 5+ years of hands-on experience, I specialize in holistic search strategies that don’t just rank—they drive real, measurable business growth. I’ve worked across industries including healthcare, hospitality, legal, e-commerce, and professional services, helping brands dominate their target markets. My approach bridges the gap between raw data and creative execution. Every strategy I build is rooted in rigorous market analysis, structured SEO frameworks, and tailored content ecosystems—no templates, no shortcuts. Whether you’re a single-location brand or scaling across multiple cities, I create data-driven marketing systems designed to compound results and grow with you.
Need Help Optimizing Google Merchant Listings?
Get a free SEO audit from DigitalArka. We'll optimize your Merchant Listing schema, Product structured data, CategoryCode implementation, pricing markup, and AI search visibility to help your products earn more clicks and sales.
Get Your Free SEO Audit →