Why each field earns its place
Name, description, and brand are the grounding trio — they let the engine identify the product unambiguously. GTIN connects the PDP to Merchant Center, marketplaces, and review sites covering the same product. Image feeds the visual layer. Offers is required for any transactional answer and any draft cart — the agent-readability score weights price and availability hardest because an agent cannot recommend what it cannot price. additionalProperty, material, and color give the engine enough detail to characterize the product beyond a generic mention. aggregateRating and review feed the social-proof dimension of ranking. Each missing field narrows the surface over which the PDP can be cited.
FAQPage as the amplifier
Pair Product schema with a FAQPage block on the same PDP. Four to six buyer-phrased questions let engines pull your answers directly into generated responses — one of the cheapest, highest-leverage moves in the discipline. Keep the visible FAQ and the schema in exact sync; drift between them trips validators and reads as manipulation.
A complete working example
A full Product JSON-LD block for a hypothetical trail shoe. Adapt the values; on Shopify, populate them from metafields per the companion metafields post.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Trailrunner Pro 7",
"description": "Lightweight trail-running shoe for rocky terrain. Rockered midsole, aggressive lug pattern, 245 g per shoe in size M9.",
"sku": "TR-PRO-7-M9-CLAY",
"gtin13": "0810123456789",
"brand": { "@type": "Brand", "name": "Northbound Running" },
"image": [
"https://cdn.example.com/tr-pro-7-clay-1.jpg",
"https://cdn.example.com/tr-pro-7-clay-2.jpg"
],
"material": "Recycled engineered mesh upper, TPU overlays",
"color": "Clay",
"audience": { "@type": "PeopleAudience", "suggestedGender": "unisex" },
"countryOfOrigin": "Vietnam",
"additionalProperty": [
{ "@type": "PropertyValue", "name": "Stack height", "value": "28 mm heel / 22 mm forefoot" },
{ "@type": "PropertyValue", "name": "Lug depth", "value": "4 mm" },
{ "@type": "PropertyValue", "name": "Weight", "value": "245 g (size M9)" }
],
"offers": {
"@type": "Offer",
"url": "https://northbound.example.com/products/trailrunner-pro-7",
"priceCurrency": "USD",
"price": "175.00",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 30,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn"
}
},
"aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.6", "reviewCount": "847" }
}
</script>
Validation and cadence
Run every PDP through Google's Rich Results Test and the schema.org validator — the first confirms rich-result eligibility, the second catches schema-level errors tooling-specific validators miss. Re-validate after any theme change; ongoing drift usually traces to a price-update edge case or a missing image. The free product schema generator produces a starting block from any PDP URL, and eCommerce Insights validates JSON-LD across the full catalog weekly, flagging exactly which fields are missing on which SKUs. The schema for AI search guide carries the field-by-field depth this post compresses.
Key takeaways
- Core fields: name, description, sku, gtin, brand, image, offers. High-return additions: additionalProperty, material, color, return policy, real ratings.
- Most PDPs ship the Google-minimum set; the additions are where citations are won.
- FAQPage on the PDP is the cheapest amplifier available. Keep it synced with the visible block.
- Offers completeness is the largest input to agent-readability — agents act on price and availability.
- Validate on change; wire fields to metafields so updates happen automatically.