Product Schema

How to Add Product Schema in Shopify

A practical Shopify guide to adding Product and Offer JSON-LD without creating conflicts with themes, SEO apps, review apps, variants, or Markets.

ShopGox Editorial5/23/2026en
How to Add Product Schema in Shopify

Shopify product schema should describe the product a shopper can actually buy: name, image, description, brand, price, currency, availability, URL, and review signals when they are real and visible.

The tricky part is that Shopify themes, SEO apps, review apps, and variant apps can all output JSON-LD. Before adding more markup, audit what already exists.

1. Audit existing Shopify schema first

Before you edit Liquid

  • check_circleOpen a product page and inspect all JSON-LD blocks.
  • check_circleCheck whether the theme already outputs Product schema.
  • check_circleCheck whether an SEO app outputs another Product entity.
  • check_circleCheck whether the review app outputs Review or AggregateRating markup.
  • check_circleCompare schema price, currency, availability, and URL against visible page content.
  • check_circleTest a product with variants, a product on sale, and an out-of-stock product.

2. Where to add Product schema in Shopify

In most Shopify themes, Product JSON-LD belongs in a product template or product section that has access to the product Liquid object. The exact file depends on your theme architecture, but common places include product JSON templates, main-product sections, or snippets included only on product pages.

3. Basic Shopify Product JSON-LD

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": {{ product.title | json }},
  "description": {{ product.description | strip_html | json }},
  "image": [
    {% for image in product.images limit: 6 %}
      {{ image | image_url: width: 1200 | prepend: "https:" | json }}{% unless forloop.last %},{% endunless %}
    {% endfor %}
  ],
  "brand": {
    "@type": "Brand",
    "name": {{ product.vendor | json }}
  },
  "sku": {{ product.selected_or_first_available_variant.sku | json }},
  "offers": {
    "@type": "Offer",
    "url": {{ shop.url | append: product.url | json }},
    "priceCurrency": {{ cart.currency.iso_code | json }},
    "price": {{ product.selected_or_first_available_variant.price | divided_by: 100.0 | json }},
    "availability": "https://schema.org/{% if product.available %}InStock{% else %}OutOfStock{% endif %}",
    "itemCondition": "https://schema.org/NewCondition"
  }
}
</script>

4. Handle variants carefully

Visual summary diagram for How to Add Product Schema in Shopify.

Shopify products often have variants for size, color, material, quantity, or subscription. If variants change price or availability, your schema should not claim one generic offer that contradicts the selected or canonical variant.

4. Handle variants carefully

Variant issueRiskFix
Selected variant price differsSchema price does not match visible priceUse selected_or_first_available_variant consistently.
Variant availability differsOut-of-stock variants appear availableReflect current variant availability when possible.
Variant images differSchema image does not match selected productInclude representative product images and variant-specific image when relevant.
Multiple apps output offersConflicting price and currencyChoose one authoritative schema source.

5. Shopify Markets, currency, and hreflang

If you use Shopify Markets, the same product may render different currencies, URLs, availability, and localized content. Product schema should match the market-specific page that the crawler and shopper see.

Markets checks

  1. 1The schema currency matches the rendered market currency.
  2. 2The schema URL matches the current market URL.
  3. 3Localized product descriptions do not conflict with canonical language signals.
  4. 4hreflang targets resolve to accessible localized pages.
  5. 5Availability and shipping promises are accurate for the market.

6. Add review schema only when reviews are real and visible

Review apps may output AggregateRating and Review markup. Do not manually invent review schema if the review content is not visible or if the app already outputs it. Duplicate review markup can create conflicts.

Breadcrumb schema helps explain product hierarchy. In Shopify, products can appear in multiple collections, so choose a stable breadcrumb strategy that matches the visible page rather than switching unpredictably.

8. Validate after theme and app changes

Validation checklist

  1. 1Test one simple product, one variant-heavy product, one sale product, and one out-of-stock product.
  2. 2Compare rendered JSON-LD to the visible page.
  3. 3Check whether SEO apps or review apps create duplicate Product entities.
  4. 4Confirm product images are crawlable.
  5. 5Confirm Product, Offer, Review, AggregateRating, and BreadcrumbList are internally consistent.
  6. 6Re-test after theme updates, app updates, and Markets changes.

FAQ

Does Shopify automatically add Product schema?keyboard_arrow_down

Many Shopify themes output some Product schema, but quality varies. Apps can also add schema. Always inspect the rendered page before adding another JSON-LD block.

Should Product schema go in the Shopify theme or an SEO app?keyboard_arrow_down

Either can work, but one source should be authoritative. Theme-level schema is often easier to align with Liquid product data, while apps may be easier for non-developers but can create duplicate output.

How should Shopify variants be represented in schema?keyboard_arrow_down

At minimum, the schema should not contradict the selected or canonical variant. Price, availability, SKU, image, and currency should align with what the shopper sees.

Can review apps conflict with Shopify product schema?keyboard_arrow_down

Yes. Review apps may inject Review or AggregateRating schema while the theme or SEO app also outputs rating data. Audit the final rendered JSON-LD, not just app settings.

Related tools

Related posts