Hey everyone!
I'm running into a confusing Product schema markup issue and would love to get your thoughts on the best approach.
I have an e-commerce product page for "Premium Braided Cords" that comes in multiple color options (Red, Blue, Gold, Silver, etc.). Each color variant has a different price ranging from $79.75 to $88.25.
Current Setup:
- Single product page (not separate pages for each color)
- Dropdown selector for color options
- Price updates dynamically when customer selects a color
- All variants share the same product name and description
The Problem
Google Search Console is throwing this error on my Product structured data:
"Either 'price' or 'priceSpecification.price' should be specified (in 'offers')"
My Current Schema Code
{
"@type": "Product",
"name": "Premium Braided Cords",
"sku": "PBC-500",
"description": "Available in multiple colors with brass or nickel finish...",
"offers": {
"@type": "Offer",
"priceCurrency": "USD",
"minPrice": "79.75",
"maxPrice": "88.25",
"priceValidUntil": "2026-10-02"
}
}
My Questions
- Why doesn't Google accept minPrice/maxPrice in a regular Offer? These properties seem perfectly logical for products with price variations based on options.
- What's the correct way to structure this schema? Should I be using a different @type for the offers section, or is there a property I'm missing?
- Has anyone successfully resolved this for similar multi-variant products? What schema structure did you end up using?
- If I use a single price value, which one should I choose? The lowest price? The most popular variant? Won't that create a mismatch when users see different prices on the actual page?
- Should I consider creating separate product pages for each color variant instead? (Really hoping to avoid this as it would mean managing dozens of additional pages)
- Will this error affect my eligibility for rich results in search? The products are showing fine now, but I'm worried about future impact.
And on top of that, I'm not getting clicks on the products. I've more that 100 products which has this issue.
I tried On Page as well as Off Page as well.