E-commerce
Outcome
Section titled “Outcome”Represent one purchasable product with current price, availability, and evidence-backed ratings.
Local validation — Builders reject unknown properties and expose
safeParse()for external data.Schema.org — The vocabulary defines property meaning; it does not guarantee any search appearance.
Google eligibility — Google requirements are additional and can change. Valid markup never guarantees a rich result.
Prerequisites
Section titled “Prerequisites”- A trustworthy canonical URL and
baseUrl. - Current, visible data from your domain source.
- Related builders:
Product,Offer,AggregateOffer,Review,AggregateRating.
Recommended graph
Section titled “Recommended graph”Product— primary nodeOfferAggregateOfferReviewAggregateRating
Minimal example
Section titled “Minimal example”import { Product } from '@unschema-graph/core';
const entity = Product({ "name": "Mechanical keyboard", "sku": "KB-001", "brand": "Acme"});Production pattern
Section titled “Production pattern”Choose Offer for one purchasable price and AggregateOffer for a genuine range. Refresh price and availability with the page data.
const result = Product.safeParse(cmsData);if (!result.success) { throw new Error(result.error.issues.map((issue) => issue.message).join('\n'));}
const graph = buildJsonLdGraph([result.data], { baseUrl: 'https://example.com' });Environment variants
Section titled “Environment variants”| Astro | Svelte 5 / SvelteKit | Core |
|---|---|---|
<Schema items={items} /> |
<Schema items={items} /> |
serializeJsonLd(buildJsonLdGraph(items)) |
Common errors and diagnosis
Section titled “Common errors and diagnosis”- Price or availability differs from visible content. Compare the source data,
safeParse()result, and JSON-LD in the built HTML. - Using AggregateOffer for a single price. Compare the source data,
safeParse()result, and JSON-LD in the built HTML. - Publishing ratings that are not collected and shown by the site. Compare the source data,
safeParse()result, and JSON-LD in the built HTML.
Validation
Section titled “Validation”- Run
safeParse()at the data boundary. - Inspect the script in built HTML.
- Run
unschema-graph auditagainst the output directory. - Schema.org / official documentation.
Final checklist
Section titled “Final checklist”- Marked-up content is visible and current.
- Every reusable identity has a stable
@id. - Local validation and the build audit pass.
- Eligibility is understood as non-guaranteed.
Go deeper: graphs and references, validation, audit CLI.