Products Ecommerce

Product Page Blueprint — Ecommerce

The product page is where AI decides whether to recommend your item. This is the complete purchase graph — price, availability, shipping, returns. Without this data, AI cannot confidently tell a shopper "you can buy this here for $X with free shipping and 30-day returns."

What this page needs

The product page must give AI every detail a shopper would need to make a purchase decision. Price, availability, shipping cost, return policy, and ratings all belong here. This is the most detailed template in the ecommerce blueprint set.

Why these fields matter to AI

Each field in the template below serves a specific role in how AI systems discover, classify, and recommend your business.

Researched and tested by Minnesota AI

Product

name
Non-negotiable. AI cannot recommend or describe an unnamed product.
description
AI pulls this for product summarization when answering purchase queries. Must be specific — a tagline is not a description.
image
AI won't recommend a product it can't show. Visual evidence the product exists is a trust signal for purchase recommendations.
brand
AI uses brand to disambiguate similar products and answer brand-specific queries.
sku
AI uses SKU to disambiguate products with similar names across multiple stores.
offers
Without a complete Offer block AI cannot make a purchase recommendation. This is the most critical field for ecommerce.
aggregateRatingconditional
One of the strongest purchase recommendation signals. AI uses rating data to compare competing products for the same query.Not detected. If your product has no reviews yet this field is not applicable. If reviews exist, structured rating data significantly increases AI purchase recommendation confidence.

Offer

price
AI cannot make a purchase recommendation without a price. Must be numeric — not a range, not contact us.
priceCurrency
AI needs currency to present price correctly. A price without a currency is ambiguous.
availability
AI filters purchase recommendations by availability. An out-of-stock product should not be recommended for immediate purchase.
url
AI needs a direct purchase URL to route users to the checkout. Without it the recommendation has no completion path.
priceValidUntil
Without this AI cannot confirm the price is current. Stale prices reduce recommendation confidence.
shippingDetails
AI answers ships-to and arrival-by queries using this data. Without it AI cannot answer fulfillment questions.
hasMerchantReturnPolicy
Return policy is a high-liability signal. AI considers return policy before recommending purchases from unfamiliar stores.

Organization

name
AI uses this to identify the seller when comparing products across multiple stores.
url
Confirms the organization maps to an accessible domain.

WebSite

@id
All other schema nodes reference this ID. Without it the graph is disconnected.

Use This Prompt to Implement Your Schema

Copy this prompt and paste it into Claude, ChatGPT, Cursor, or any AI coding tool. It will ask for your business details and generate ready-to-use JSON-LD schema for your page.

Implementation Prompt · Product
You are implementing AIFDS-compliant JSON-LD structured data for a Ecommerce Product page.

AIFDS (AI-Friendly Data Structure) is a schema framework built on research into which
structured data fields AI systems actually read, parse, and use when deciding whether
to cite a page. Documentation at aifds.org.

Before generating any code, ask me for the following information in a single numbered list.
Do not generate schema until I have answered every required field.

REQUIRED — do not proceed without these:
1. Answer
2. Brand name
3. Collection name
4. Collection slug
5. Domain
6. Max handling days
7. Max transit days
8. Min handling days
9. Min transit days
10. Price
11. Price expiry date
12. Product description
13. Product image
14. Product name
15. Product page title
16. Product slug
17. Question
18. Rating value
19. Return days
20. Review count
21. Shipping cost
22. Sku
23. Store name

OPTIONAL — ask for these but proceed if I skip them:
1. aggregateRating

Once I provide the information, output a complete JSON-LD script block
ready to paste into the <head> of my HTML page.

Output requirements:
- Valid JSON-LD wrapped in <script type="application/ld+json"> tags
- schema.org vocabulary only
- Every AIFDS-required field for this industry and page type included
- Include this data attribute on the script tag: data-aifds="aifds.org Ecommerce Product"
- No placeholder text — omit missing optional fields rather than fill with examples
- After the code block, list any optional fields skipped that would strengthen AI citation

Generated schema follows the AIFDS framework. Fields were selected based on research into AI crawler behavior. View the research at minnesota.ai

Template — fill in your values

Copy the template below and replace every YOUR_* value with your own data. This block belongs in a <script type="application/ld+json"> tag in the <head> of your product page.

JSON-LD · Product
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Product",
      "@id": "https://YOUR_DOMAIN.com/products/YOUR_PRODUCT_SLUG/#product",
      "name": "YOUR_PRODUCT_NAME",
      "description": "YOUR_PRODUCT_DESCRIPTION",
      "image": [
        "https://YOUR_DOMAIN.com/YOUR_PRODUCT_IMAGE_1.jpg",
        "https://YOUR_DOMAIN.com/YOUR_PRODUCT_IMAGE_2.jpg",
        "https://YOUR_DOMAIN.com/YOUR_PRODUCT_IMAGE_3.jpg"
      ],
      "brand": {
        "@type": "Brand",
        "name": "YOUR_BRAND_NAME"
      },
      "sku": "YOUR_SKU",
      "offers": {
        "@type": "Offer",
        "url": "https://YOUR_DOMAIN.com/products/YOUR_PRODUCT_SLUG/",
        "price": "YOUR_PRICE",
        "priceCurrency": "USD",
        "priceValidUntil": "YOUR_PRICE_EXPIRY_DATE",
        "availability": "https://schema.org/InStock",
        "seller": { "@id": "https://YOUR_DOMAIN.com/#organization" },
        "shippingDetails": {
          "@type": "OfferShippingDetails",
          "shippingRate": {
            "@type": "MonetaryAmount",
            "value": "YOUR_SHIPPING_COST",
            "currency": "USD"
          },
          "shippingDestination": {
            "@type": "DefinedRegion",
            "addressCountry": "US"
          },
          "deliveryTime": {
            "@type": "ShippingDeliveryTime",
            "handlingTime": {
              "@type": "QuantitativeValue",
              "minValue": "YOUR_MIN_HANDLING_DAYS",
              "maxValue": "YOUR_MAX_HANDLING_DAYS",
              "unitCode": "d"
            },
            "transitTime": {
              "@type": "QuantitativeValue",
              "minValue": "YOUR_MIN_TRANSIT_DAYS",
              "maxValue": "YOUR_MAX_TRANSIT_DAYS",
              "unitCode": "d"
            }
          }
        },
        "hasMerchantReturnPolicy": {
          "@type": "MerchantReturnPolicy",
          "applicableCountry": "US",
          "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
          "merchantReturnDays": "YOUR_RETURN_DAYS",
          "returnMethod": "https://schema.org/ReturnByMail",
          "returnFees": "https://schema.org/FreeReturn"
        }
      },
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": "YOUR_RATING_VALUE",
        "reviewCount": "YOUR_REVIEW_COUNT"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://YOUR_DOMAIN.com/#organization",
      "name": "YOUR_STORE_NAME",
      "url": "https://YOUR_DOMAIN.com"
    },
    {
      "@type": "WebSite",
      "@id": "https://YOUR_DOMAIN.com/#website",
      "name": "YOUR_STORE_NAME",
      "url": "https://YOUR_DOMAIN.com"
    },
    {
      "@type": "ItemPage",
      "@id": "https://YOUR_DOMAIN.com/products/YOUR_PRODUCT_SLUG/#webpage",
      "url": "https://YOUR_DOMAIN.com/products/YOUR_PRODUCT_SLUG/",
      "name": "YOUR_PRODUCT_PAGE_TITLE",
      "isPartOf": { "@id": "https://YOUR_DOMAIN.com/#website" },
      "mainEntity": { "@id": "https://YOUR_DOMAIN.com/products/YOUR_PRODUCT_SLUG/#product" }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://YOUR_DOMAIN.com/products/YOUR_PRODUCT_SLUG/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://YOUR_DOMAIN.com/" },
        { "@type": "ListItem", "position": 2, "name": "YOUR_COLLECTION_NAME", "item": "https://YOUR_DOMAIN.com/collections/YOUR_COLLECTION_SLUG/" },
        { "@type": "ListItem", "position": 3, "name": "YOUR_PRODUCT_NAME", "item": "https://YOUR_DOMAIN.com/products/YOUR_PRODUCT_SLUG/" }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://YOUR_DOMAIN.com/products/YOUR_PRODUCT_SLUG/#faqpage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "YOUR_QUESTION_1",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "YOUR_ANSWER_1"
          }
        },
        {
          "@type": "Question",
          "name": "YOUR_QUESTION_2",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "YOUR_ANSWER_2"
          }
        }
      ]
    }
  ]
}

Frequently asked questions

Why use ItemPage instead of WebPage for product pages?

ItemPage is a subtype of WebPage that specifically signals "this page is about a single item." AI systems use this distinction to prioritize product pages in shopping-related queries. A generic WebPage could be anything — an article, a contact page, a landing page. ItemPage removes that ambiguity and tells AI this page exists to describe and sell one product.

When should I omit aggregateRating?

Omit the aggregateRating node if the product has zero reviews. Including an aggregateRating with a reviewCount of 0 or a missing ratingValue is invalid and can trigger structured data errors. Only add aggregateRating once the product has at least one review with a numeric rating. For new products, leave this node out entirely and add it later when reviews come in.

Can I reuse the same shipping and return policy across all products?

Yes. If all products share the same shipping and return terms, you can use identical OfferShippingDetails and MerchantReturnPolicy blocks on every product page. AI evaluates these at the product level, so each page needs the data even if it is the same. For stores with variable shipping (e.g., oversized items), customize the shippingRate and deliveryTime per product.

Test your structured data

Paste your URL and see exactly what AI systems can read from your site.

Open Validator →