← Back to blog
technicaljson-ldhow-to
March 21, 2026 5 min read

The 6 JSON-LD Fields Most Merchants Miss

Your product pages have JSON-LD markup. But are you using the fields that AI shopping agents actually need? These six are missing from most stores.

technicaljson-ldhow-to

Most merchants have some JSON-LD on their product pages. Shopify, WooCommerce, and BigCommerce all generate basic Product markup by default. The problem is what’s missing — six fields that AI shopping agents actively look for and almost never find.

These aren’t obscure edge cases. They’re the fields that determine whether an AI agent can confidently recommend your product or has to skip it for a competitor with better data.

1. AggregateRating

What it is: A summary of your product’s reviews — the average score and total count.

Why AI agents need it: When ChatGPT or Perplexity recommends a product, review data is a primary trust signal. An AI agent choosing between two similar products will favor the one it can verify has been purchased and reviewed by real customers. Without AggregateRating markup, the agent can’t surface your reviews even if you have thousands of them.

Good:

"aggregateRating": {
  "@type": "AggregateRating",
  "ratingValue": "4.6",
  "reviewCount": "2341",
  "bestRating": "5"
}

Bad: No rating markup at all, even though the product page displays 4.6 stars visually. The AI can’t read your star icons — it needs the data in JSON-LD.

2. Offers with availability and shippingDetails

What it is: The full Offer block including real-time availability status and shipping information.

Why AI agents need it: A bare-minimum Offer with just price and currency is useless for an AI agent comparing purchase options. Agents need to know: Is it in stock right now? How fast does it ship? What does shipping cost? Merchants who include shippingDetails give AI agents a reason to recommend them over competitors who only show a price.

Good:

"offers": {
  "@type": "Offer",
  "price": "89.00",
  "priceCurrency": "USD",
  "availability": "https://schema.org/InStock",
  "itemCondition": "https://schema.org/NewCondition",
  "shippingDetails": {
    "@type": "OfferShippingDetails",
    "deliveryTime": {
      "@type": "ShippingDeliveryTime",
      "handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "d" },
      "transitTime": { "@type": "QuantitativeValue", "minValue": 2, "maxValue": 5, "unitCode": "d" }
    },
    "shippingRate": { "@type": "MonetaryAmount", "value": "0.00", "currency": "USD" }
  }
}

Bad: "offers": { "price": "89.00", "priceCurrency": "USD" } — no availability, no shipping, no condition. The AI knows the price and nothing else.

3. Brand as Organization

What it is: The brand field structured as a proper Organization or Brand object, not just a text string.

Why AI agents need it: AI agents cross-reference brand data across sources. When your brand is a structured object with a name (and ideally a URL), the agent can verify it against other listings, your Merchant Center feed, and third-party databases. A plain string like "brand": "Acme" works, but "brand": { "@type": "Brand", "name": "Acme Athletics" } gives the agent more to work with for verification and citation.

Good:

"brand": {
  "@type": "Brand",
  "name": "Acme Athletics",
  "url": "https://acmeathletics.com"
}

Bad: "brand": "acme" — lowercase, abbreviated, no structure. The AI might not match this to “Acme Athletics” in your Merchant Center feed.

4. Product identifiers (gtin, mpn)

What it is: Global Trade Item Numbers (GTINs, UPCs, EANs) and Manufacturer Part Numbers that uniquely identify your product.

Why AI agents need it: Identifiers are the single strongest trust signal in product data. A GTIN tells the AI agent: this is a real product, not a dropshipper’s renamed listing. It enables cross-referencing with manufacturer databases, retailer listings, and comparison engines. Products without identifiers get a significantly lower confidence score across every AI shopping platform.

Good:

"gtin13": "0123456789012",
"mpn": "AA-RUN-W-001",
"sku": "ACME-WRUN-BLU-9"

Bad: None of these fields present. The AI has no way to verify the product exists outside your website.

5. Review markup

What it is: Individual Review objects nested within your Product markup, with author, rating, and review body.

Why AI agents need it: AggregateRating tells the AI the score. Individual Review markup tells it why. AI agents use review content to match products to specific shopper concerns. A review mentioning “held up great on a 3-day backpacking trip in the rain” helps an AI recommend that product for a query about durable waterproof gear. Without structured reviews, the AI only has your marketing copy to work with.

Good:

"review": [{
  "@type": "Review",
  "author": { "@type": "Person", "name": "Jamie R." },
  "reviewRating": { "@type": "Rating", "ratingValue": "5" },
  "reviewBody": "Wore these on a 3-day backpacking trip through Olympic National Park. Stayed dry in steady rain, great ankle support on rocky terrain."
}]

Bad: Reviews displayed on the page as HTML but not included in the JSON-LD. Visible to shoppers, invisible to AI agents.

6. additionalProperty for custom attributes

What it is: A catch-all field for product attributes that don’t have dedicated schema.org properties — things like materials, compatibility, certifications, or fit type.

Why AI agents need it: Schema.org’s Product type doesn’t have named fields for every possible attribute. additionalProperty is how you tell AI agents about your product’s waterproof rating, fabric blend, compatibility with specific devices, or sustainability certifications. Without it, these attributes only exist in your prose description — which the AI might parse, but with much lower confidence.

Good:

"additionalProperty": [
  { "@type": "PropertyValue", "name": "Material", "value": "Recycled polyester ripstop" },
  { "@type": "PropertyValue", "name": "Waterproof Rating", "value": "20,000mm" },
  { "@type": "PropertyValue", "name": "Fit Type", "value": "Regular" },
  { "@type": "PropertyValue", "name": "Certification", "value": "bluesign approved" }
]

Bad: These attributes mentioned in the product description paragraph but not structured as data. An AI agent might extract “waterproof” from your copy, but it won’t get “20,000mm” with any confidence.

The gap is the opportunity

Most stores have basic JSON-LD. Very few have complete JSON-LD. That gap is where AI visibility is won or lost. Adding these six fields doesn’t require a site redesign or a content overhaul — it requires treating your structured data as a first-class product asset and filling in the blanks that your platform’s defaults left empty.