Below is a practical, SEO-safe checklist for PrestaShop Product Schema (JSON-LD), aligned with Google Rich Results and schema.org best practices. This also fits well with your earlier preference of using ImageObject for the image property π
β 1. Use JSON-LD Only (Best Practice)
β Always use JSON-LD, not Microdata
β Place schema in:
- Product page footer, or
<head>via theme override or module
β One Product schema per product page
β 2. Mandatory Properties (Google)
Your Product schema must include:
"@type": "Product",
"name": "Product Name",
"image": [...],
"description": "Short product description",
"sku": "SKU123",
"offers": { }
β Missing required fields = no rich result
β 3. Image Best Practices (Very Important)
Since you prefer ImageObject, use:
"image": [{
"@type": "ImageObject",
"url": "https://example.com/img/product.webp",
"width": 800,
"height": 800
}]
β Use absolute URLs
β Minimum 1200px width recommended
β Use WebP if possible
β Match product image exactly
β Avoid thumbnail or lazy-loaded placeholders
β 4. Offers (Pricing & Availability)
Use Offer or AggregateOffer:
Single Price
"offers": {
"@type": "Offer",
"url": "https://example.com/product-url",
"priceCurrency": "INR",
"price": "1499",
"priceValidUntil": "2025-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
β Always include:
pricepriceCurrencyavailability
Multiple Variants (Size / Color)
"offers": {
"@type": "AggregateOffer",
"lowPrice": "1299",
"highPrice": "1799",
"priceCurrency": "INR",
"offerCount": "4"
}
β 5. Brand & Identifiers
"brand": {
"@type": "Brand",
"name": "Nike"
}
β Add GTIN when available:
"gtin13": "8901234567890"
β OR use:
mpnsku
β Never fake GTINs
β 6. Reviews & Ratings (High CTR)
Only show if real reviews exist:
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "128"
}
β Rating must match frontend
β No self-generated fake reviews
β Update dynamically
β 7. Variant Handling (PrestaShop Specific)
Best practice:
- One Product schema
- Use AggregateOffer
- Do NOT generate separate Product schema per combination
β 8. Availability Sync (Critical)
Availability must match:
β Stock status
β Delivery message
β Cart availability
Common values:
InStockOutOfStockPreOrderBackOrder
β 9. Description Rules
β Use short product description
β Plain text only (no HTML)
β No marketing keywords stuffing
β 10. Avoid Common Mistakes
β Multiple Product schemas on one page
β Mismatch price / stock
β Missing currency
β Using relative URLs
β Fake reviews
β Schema inside iframe
β 11. PrestaShop Implementation Tips
β Use override or custom module
β Hook into:
displayFooterdisplayHeader
β Clear cache after changes
β Regenerate schema on:
- Price update
- Stock update
- Review update
β 12. Validation & Monitoring
Tools:
β Google Rich Results Test
β Schema Markup Validator
β Google Search Console β Enhancements
Fix:
- βMissing field βoffersββ
- βInvalid price formatβ
- βAvailability mismatchβ
π₯ Ideal Product JSON-LD (PrestaShop Example)
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Running Shoes",
"image": [{
"@type": "ImageObject",
"url": "https://example.com/img/shoes.webp",
"width": 1200,
"height": 1200
}],
"description": "Lightweight running shoes for daily training.",
"sku": "RUN123",
"brand": {
"@type": "Brand",
"name": "Nike"
},
"offers": {
"@type": "Offer",
"price": "3499",
"priceCurrency": "INR",
"availability": "https://schema.org/InStock",
"url": "https://example.com/running-shoes"
}
}
π SEO Bonus Tips
β Add BreadcrumbList schema
β Add Organisation schema globally
β Add FAQ schema on product pages
β Use canonical URL in schema
Β
