Product and Variant Schema for Shopping Agents: Limits and Evidence
Product structured data is a publisher-supplied description of a catalog, not a private API into an autonomous agent. Consumers that support the vocabulary may use it, and Google documents product-snippet and merchant-listing features, but each provider controls crawling, indexing, retrieval, ranking, recommendation, and citation. This guide covers ProductGroup, exact variant Product nodes, Offer, genuine ratings, identifiers, specifications, and the evidence that validation can — and cannot — establish.
What product structured data is — and is not
Schema.org is a shared vocabulary for labeling the meaning of content. JSON-LD can express a merchant's product-family, variant, offer, and identity claims in a form supporting consumers can parse. The visible page, feed, and structured data still need to agree.
Google's structured-data guidance says supported markup can help its systems understand a page and make it eligible for specific richer treatments. That statement does not extend automatically to another provider, an AI answer, or an undisclosed agent pipeline. Treat schema as a public declaration with provider-specific validation rules, not as a guaranteed product API.
Markup records what the publisher asserts. A validator can test structure and some provider rules; only an independent public observation can show what a surface displayed, and it cannot by itself prove why.— ClickRadius Institute
Product: the anchor node
An exact sellable item or variant can be represented as a Product node when the page and target provider support it. Populate only facts that apply to that exact item, and follow the current property requirements for the provider feature being targeted.
Identifiers: GTIN, MPN, SKU
Identifiers label an exact product within different issuer and catalog scopes. They can support matching by consumers that recognize them, but markup does not reveal whether an external agent performed that match. Provide every identifier that legitimately applies:
- GTIN (
gtin, or the specificgtin13/gtin8/gtin12forms) — the genuine assigned global trade item number, when one exists. - MPN (
mpn) — the manufacturer's part number, when assigned. - SKU (
sku) — your internal stock-keeping identifier; stable and useful within your own catalog and feed.
A genuine shared identifier may help a supporting consumer recognize that two records concern the same exact item. It does not import another record's review or offer, prove an entity merge, or establish that a provider will use the match.
ProductGroup and variant architecture
When a catalog exposes variants, model the family as a ProductGroup, name its variant dimensions with variesBy, and connect exact Product nodes with hasVariant or isVariantOf. Choose a single-page or multi-page variant architecture from the site's real selector and URL behavior. Bind each variant's SKU or GTIN, canonical URL, image, and Offer — including price and availability — to that exact variant.
A single-page architecture can describe a group and selectable variants on one canonical page. In a multi-page architecture, each directly selectable variant has its own canonical URL and variant-specific facts; follow the target provider's current documentation for the group representation it expects on each variant page.
Attributes with additionalProperty
Named Schema.org properties cover common attributes such as color, size, material, and weight. Where the vocabulary and target feature permit it, a category-specific fact can use additionalProperty with a PropertyValue containing a name, value, and applicable unitText or unitCode. That labels a specification; it does not prove that a shopping agent extracted or ranked it.
Offer: the commercial terms
An Offer connected to an exact Product through offers can state applicable commercial terms. Populate only current facts supported by the page and commerce source:
priceandpriceCurrency— the exact current price and currency for this offer.availability— the applicable current stock state, synchronized with the visible page and checkout.priceValidUntil— the real end date when the stated price has one.shippingDetails(viaOfferShippingDetails) — applicable shipping cost, destination, and delivery-time terms.hasMerchantReturnPolicy(viaMerchantReturnPolicy) — the applicable return policy and conditions.
Shipping and return markup must agree with the exact public policy and offer. It can make those publisher claims explicit for a supporting provider feature, but it does not replace the policy page or establish that an external agent retrieved or answered from the fields.
AggregateRating and Review: real reviews only
AggregateRating and Review make claims about other people's experiences. Their use depends on genuine evidence, exact subject identity, visible-page parity, and the target provider's eligibility rules; a valid rating declaration does not prove an external trust or recommendation effect.
The rule is simple and non-negotiable: only mark up ratings that are real, that pertain to the product on the page, and that are visibly displayed to human visitors on that same page. Fabricated or inflated ratings violate structured data policies, and they run directly into the U.S. Federal Trade Commission's 2024 rule prohibiting fake and deceptive reviews and endorsements, which carries civil penalties. According to the FTC, the rule targets exactly the kind of manufactured social proof that markup can be abused to fake.
A rating value is an evidence claim, not a decorative field. Publish it only for the exact qualifying subject, reviews, aggregation, visible presentation, and provider feature; otherwise omit it.— ClickRadius Institute
If reviews live on a third-party platform, do not copy or reassign them without the rights, provenance, subject match, and provider eligibility required for the intended use. An exact-identity link to an external profile remains a reference; it does not import that profile's ratings into the Product node.
Brand and Organization: keep the subjects separate
Brand can identify the brand associated with the product, while Organization can describe the selling or manufacturing organization when that is the correct subject. Do not collapse brand owner, manufacturer, seller, marketplace, and product into one node. Bind legal name, URL, address, contact point, and relationships to their verified holders.
A sameAs value asserts that its URL identifies the exact same subject; it does not prove control, legitimacy, reputation, or provider trust. Verify the subject and current public record independently, and keep publisher claims separate from external corroboration.
What validation and observation can establish
Syntax validation can show that JSON-LD parses. Vocabulary validation can show whether properties are used in their defined domains and ranges. A provider test can report eligibility for that provider's supported feature. Visible-page review can test factual parity, and a later public observation can record what a surface returned. None of those states exposes a shopping agent's private parse or proves that markup caused selection.
Consistency still matters: price, availability, identifiers, variant relationships, visible content, and applicable feed data should not contradict one another. Record each check as its own evidence rather than collapsing successful generation, provider acceptance, public rendering, and external-engine use into one claim.
A validation checklist before you ship
- Validate syntax and eligibility. Run every template through Google's Rich Results Test and the Schema.org validator. Fix errors before worrying about warnings.
- Confirm identifiers. Ensure a GTIN (where one exists), MPN and stable SKU are present and correct on every product.
- Trace variants. Confirm the
ProductGroup,variesBy,hasVariant/isVariantOf, URLs, images, identifiers, and offers match the real selector and URL architecture. - Reconcile each public representation. Price, availability, and key specifications must match across schema, visible page content, and any applicable merchant feed.
- Audit ratings for honesty. Every AggregateRating must map to real, displayed reviews. Remove any that do not.
- Complete the Offer. Verify shippingDetails and hasMerchantReturnPolicy are populated, not left blank.
- Check the entity graph. Confirm Organization sameAs links point to live, correct profiles, and that Brand is referenced consistently.
ClickRadius examines observable product-site structured data within the five weighted AI Readiness evidence families and can prepare eligible on-site corrections. A supported effect is applied only with current authorization for the exact revision and a capable connection; off-site corroboration remains guided work. Schema is a declaration, not proof that a shopping agent will use it.
Markup, provider eligibility, and external outcomes are separate
Even complete and honest product markup does not establish eligibility for an AI shopping answer. It may satisfy part of a named provider feature's published rules; that provider can still decline to crawl, index, retrieve, rank, recommend, or cite the page. Off-site retailer and review records are separate observations whose subject, controller, facts, and time must be verified. Keep the declaration, validation result, provider receipt, public-origin reread, and later engine observation as distinct evidence.
Frequently asked questions
Which product identifiers should I publish — GTIN, MPN or SKU?
Publish every identifier that truthfully applies: a genuine GTIN where one exists, an MPN for the manufacturer's part number, and the merchant's stable SKU. Each has a different scope. Accurate identifiers may help a supporting consumer distinguish products, but they do not prove an external match or recommendation.
Is it safe to add AggregateRating schema to my product pages?
Only when the rating represents qualifying, genuine reviews about that exact product, is visibly displayed on the page, and follows the applicable provider and consumer-protection rules. Do not publish invented, inflated, or invisible ratings. If the evidence is absent or ineligible, omit the property.
How should product variants be modeled?
Use ProductGroup for the family, variesBy for its variant dimensions, and hasVariant or isVariantOf for the exact Product nodes. Choose a single-page or multi-page architecture from real URL and selector behavior, and bind each variant's identifiers, URL, image, Offer, price, and availability to that variant.
The free AI Readiness Score estimates five weighted evidence families at the submitted URL, including observable schema evidence; it does not simulate or prove a shopping agent's use. ClickRadius plans can add governed correction preparation and separate monthly AI Presence observations across ChatGPT, Gemini, Perplexity, Claude, and Grok.