A product page with a Product rich snippet (stars, price, "In stock") earns 11-14% organic CTR, vs 4-6% without. On 50,000 monthly impressions, that's 4,000 extra clicks. Yet Google only validates your rich snippet if the JSON-LD is strict — and 90% of sites get it wrong.
TL;DR
- Product schema + AggregateRating + Offer = full rich result.
- Mandatory validation via Google Rich Results Test before deploy.
- Include GTIN/MPN if available (+20% Google Shopping organic eligibility).
Anatomy of a complete Product rich snippet
`json
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Sneakers Urban Black 42",
"image": [
"https://kolonell.com/products/sneakers-urban-black-front.jpg",
"https://kolonell.com/products/sneakers-urban-black-side.jpg",
"https://kolonell.com/products/sneakers-urban-black-back.jpg"
],
"description": "Black urban sneakers in genuine leather, Vibram sole, made in Senegal. Sizes 39–46. Africa delivery 48-72h.",
"sku": "SNK-URB-BLK-42",
"mpn": "SNK-URB-BLK-42",
"gtin13": "3760123456789",
"brand": { "@type": "Brand", "name": "Kolonell Footwear" },
"review": [
{
"@type": "Review",
"reviewRating": { "@type": "Rating", "ratingValue": "5", "bestRating": "5" },
"author": { "@type": "Person", "name": "Aïssatou D." },
"datePublished": "2026-04-12",
"reviewBody": "Excellent comfort, Abidjan delivery in 48h."
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "189",
"bestRating": "5",
"worstRating": "1"
},
"offers": {
"@type": "Offer",
"url": "https://kolonell.com/en/products/sneakers-urban-black-42",
"priceCurrency": "XOF",
"price": "45000",
"priceValidUntil": "2026-12-31",
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock",
"seller": { "@type": "Organization", "name": "Kolonell" },
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": { "@type": "MonetaryAmount", "value": "2000", "currency": "XOF" },
"shippingDestination": { "@type": "DefinedRegion", "addressCountry": "SN" },
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": { "@type": "QuantitativeValue", "minValue": "1", "maxValue": "2", "unitCode": "DAY" },
"transitTime": { "@type": "QuantitativeValue", "minValue": "1", "maxValue": "3", "unitCode": "DAY" }
}
}
}
}
`
Next.js implementation (reusable component)
`tsx
import Script from 'next/script';
export function ProductSchema({ product }: { product: Product }) {
Need a professional website?
Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.
const schema = {
'@context': 'https://schema.org',
'@type': 'Product',
name: product.name,
image: product.images.map(i => i.url),
description: product.description,
sku: product.sku,
mpn: product.mpn,
gtin13: product.gtin13,
brand: { '@type': 'Brand', name: product.brandName },
aggregateRating: product.reviewCount > 0 ? {
'@type': 'AggregateRating',
ratingValue: product.avgRating.toFixed(1),
reviewCount: product.reviewCount,
} : undefined,
offers: {
'@type': 'Offer',
url: https://kolonell.com/en/products/${product.slug},
priceCurrency: product.currency,
price: String(product.price),
priceValidUntil: '2026-12-31',
itemCondition: 'https://schema.org/NewCondition',
availability: product.inStock
? 'https://schema.org/InStock'
: 'https://schema.org/OutOfStock',
seller: { '@type': 'Organization', name: 'Kolonell' },
},
};
return (
id={product-schema-${product.id}}
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
);
}
`
Common Schema Product mistakes
| Mistake | Consequence | Fix |
|---|---|---|
| Fake or copied reviews | Google penalty + manual risk | Real, verifiable, dated reviews |
| AggregateRating without reviewCount | Snippet rejected | Always include both |
Price without priceValidUntil | Search Console warning | Set realistic date |
Bad availability format | Rejection | Strict Schema URL (https://schema.org/...) |
Multiple Offer without AggregateOffer | Google confusion | Use AggregateOffer for price ranges |
| Made-up GTIN | Merchant Center penalty | Leave empty if unknown |
Google Shopping organic vs Ads
Since 2020, Google Shopping has a "Free" tab fed by Merchant Center feeds and Product rich snippets. To rank in this tab:
- Complete Product schema (✓ above)
- Verified Google Merchant Center account (free)
- Product feed XML/CSV or auto-crawled schema
- Published returns policy
- Published shipping policy
- Verified address (postcode, city, country)
- Product reviews ≥ 50 over 30 days for "Top quality store" badge
Many African e-commerce skip Merchant Center out of unfamiliarity — it's free and game-changing.
Real case — Dakar shoe store
Before rich snippet:
- "men sneakers" avg position: #14
- Organic CTR: 3.2%
- Product traffic: 4,800 visits/month
After complete Product schema + AggregateRating + Merchant Center:
- Avg position: #6 + organic Shopping appearance
- Organic CTR: 11.7%
- Product traffic: 18,200 visits/month (+279%)
- Conversions: +147% at constant rate
FAQ
Q: Need a GTIN for a local African brand?
A: Not mandatory if brand + mpn are filled. GS1 Senegal sells GTIN codes ~50,000 XOF for 5 years.
Q: How to avoid Google's fake-review penalty?
A: Never invent or buy reviews. Review schema must reflect real reviews stored in DB, verifiable.
Q: Does Product schema work on Bing/Yandex?
A: Yes — Bing supports Schema.org since 2017. For Bing, also create a Bing Webmaster Tools account and submit sitemap.
Q: Do rich snippets work in Wolof or Swahili?
A: Yes, Google indexes page content regardless of language. The schema JSON uses English (Schema.org vocabulary), but values (name, description) are in the content language.
Conclusion
Schema.org Product isn't complex or expensive — it's a properly filled JSON-LD file. But it's the #1 differentiator between a page stuck on page 2 and one ranking in Top 5 with stars + visible prices. Immediate ROI on next Google re-index (24-72h).
Mohamed Bah
Fondateur, Kolonell
Passionate about digital and entrepreneurship in Africa, Mohamed has been helping Sénégalese businesses with their digital transformation since 2020. Founder of Kolonell, he believes every SME deserves a professional and accessible online présence.


