This checklist ensures all Product and SoftwareApplication schemas meet Google's merchant listing requirements and prevent validation errors.
"image": [
"https://www.pgelephant.com/og-image.jpg",
"https://www.pgelephant.com/logo.png"
]- Must be an array or single string
- Must be full URL (not relative path)
- Should include multiple images when possible
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://www.pgelephant.com/download",
// REQUIRED for merchant listings
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "US",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 30,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn"
},
// REQUIRED for merchant listings
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "0",
"currency": "USD"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "US"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 0,
"maxValue": 0,
"unitCode": "DAY"
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 0,
"maxValue": 0,
"unitCode": "DAY"
}
}
}
}-
/www/components/SEO/ProductSchema.tsx- FIXED ✅- Added
imagefield - Added
hasMerchantReturnPolicy - Added
shippingDetails
- Added
-
/www/components/SEO/AdvancedSEO.tsx- FIXED ✅- Added
imagefield - Added
hasMerchantReturnPolicy - Added
shippingDetails
- Added
-
/www/components/SEO/OrganizationSchema.tsx- NO OFFERS ✅- Organization schema doesn't need these fields
-
/www/app/layout.tsx- FIXED ✅- Main SoftwareApplication schema
- Added all required fields
-
/www/app/ram/page.tsx- FIXED ✅- RAM Product schema
- Added all required fields
-
/www/app/page.tsx- Uses ProductSchema component ✅- Inherits fixes from ProductSchema.tsx
/www/app/rale/page.tsx- No structured data/www/app/fauxdb/page.tsx- No structured data/www/app/pgraft/page.tsx- No structured data
-
Always include image field
"image": [ "https://www.pgelephant.com/og-image.jpg", "https://www.pgelephant.com/logo.png" ]
-
Always include complete offer with policies
- Copy the complete offer structure from ProductSchema.tsx
- Never create minimal offers without return/shipping policies
-
Use existing components when possible
- Prefer
ProductSchemacomponent over inline schemas - Use
AdvancedSEOcomponent for complex pages
- Prefer
-
Google Rich Results Test
https://search.google.com/test/rich-results- Test URL after deployment
- Verify all required fields show green checkmarks
- Check for warnings and resolve them
-
Schema.org Validator
https://validator.schema.org/- Paste JSON-LD directly
- Verify no errors or warnings
-
Google Search Console
https://search.google.com/search-console- Check "Merchant listings" report weekly
- Monitor for new issues
- Request validation after fixes
❌ DON'T DO THIS:
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
}
// Missing: url, hasMerchantReturnPolicy, shippingDetails❌ DON'T DO THIS:
"@type": "SoftwareApplication",
"name": "Product Name",
// Missing: image field
"offers": { ... }✅ DO THIS:
{
"@type": "SoftwareApplication",
"name": "Product Name",
"image": ["url1", "url2"],
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD",
"url": "https://...",
"hasMerchantReturnPolicy": { ... },
"shippingDetails": { ... }
}
}# Check for schemas with offers but missing policies
cd www
grep -r "@type.*Offer" --include="*.tsx" --include="*.ts" | \
xargs -I {} grep -L "hasMerchantReturnPolicy" {}
# Check for Product/SoftwareApplication without images
grep -r "@type.*(Product|SoftwareApplication)" --include="*.tsx" --include="*.ts" | \
xargs -I {} grep -L '"image"' {}If Google reports new merchant listing errors:
- Run automated checks above
- Identify affected files from error report
- Add missing
imagefield - Add complete
hasMerchantReturnPolicyobject - Add complete
shippingDetailsobject - Test with Rich Results Test tool
- Deploy changes
- Wait 24-48 hours
- Request validation in Google Search Console
- Monitor for resolution
// Complete Product/SoftwareApplication Schema Template
const productSchema = {
"@context": "https://schema.org",
"@type": "SoftwareApplication", // or "Product"
"name": "Product Name",
"description": "Product description",
"url": "https://www.pgelephant.com/product",
// REQUIRED: Image field
"image": [
"https://www.pgelephant.com/og-image.jpg",
"https://www.pgelephant.com/logo.png"
],
// Other fields (applicationCategory, operatingSystem, etc.)
"applicationCategory": "DatabaseApplication",
// REQUIRED: Complete offer with all policies
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://www.pgelephant.com/download",
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "US",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 30,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn"
},
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "0",
"currency": "USD"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "US"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 0,
"maxValue": 0,
"unitCode": "DAY"
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 0,
"maxValue": 0,
"unitCode": "DAY"
}
}
}
}
}- Date: 2025-10-03
- Status: All schemas validated and fixed
- Next Review: Before adding any new product pages
If you add new product schemas, ensure this checklist is followed and update this document with the new file locations.