# Product and Offer markup matched to the visible example

The completed product.html and product.jsonld use only the five supplied product fields. The page shows HarborMug Blue Insulated Stainless Steel Mug, SKU HM-BLUE-001, price 24.00 USD and In stock. JSON-LD expresses the same offer with the Schema.org InStock URL.

## Implemented JSON-LD

```json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "HarborMug Blue Insulated Stainless Steel Mug",
  "sku": "HM-BLUE-001",
  "offers": {
    "@type": "Offer",
    "price": "24.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}
```

## Checks actually completed

The JSON parsed successfully. Chromium rendered the complete example page; the product name, SKU, price, currency and stock text were checked against the JSON-LD. The example has one H1 and a server-delivered JSON-LD script. No aggregate rating, customer review, image URL, GTIN, sale expiry or shipping entitlement was invented. render-validation.json contains the observed DOM and parsed data.

## Before merchant publication

A product photograph was not supplied. Obtain the real image and final product URL before targeting merchant listing eligibility; do not use a placeholder image as product evidence. Google distinguishes product snippets from merchant listings and provides feature-specific requirements. See [product snippets](https://developers.google.com/search/docs/appearance/structured-data/product-snippet) and [merchant listings](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing), inspected for this execution.

This run verifies JSON syntax and visible-data parity; it does not claim a Google Rich Results Test pass, Search Console approval or search appearance. The reserved store.example domain identifies a fictional implementation specimen. On the real store, use the approved URL, add the real image and run the appropriate external validators before release. Keep price and availability sourced from the same record as the visible page so later stock changes cannot leave stale markup.
