Product Schema Markup for Shopify and WooCommerce

product schema markup
Illustrated product surrounded by structured data.

Your product page can show the correct price while its hidden markup tells Google something different. Product schema markup gives search engines structured data about your product’s name, price, stock status, and other buying details.

For a Kolkata retailer using Shopify or WooCommerce, consistent product data matters, especially for INR prices and selectable variants. Choose the right Google product presentation, then connect the markup to your store’s live fields.

Key Takeaways

Product information arranged as connected objects.
  • Choose merchant listing markup for products customers can purchase directly from your store.
  • Generate JSON-LD from live product fields rather than maintaining separate prices and stock values.
  • Test eligibility and syntax separately, then monitor changes after publishing.

Structured data can make a page eligible to appear in rich results. It doesn’t guarantee enhanced display or improve ordinary rankings.

Choose Product Snippets or Merchant Listings

Editorial review compared with a retail listing.

Choose according to what visitors can do on the page.

Page purposeAppropriate markup
Review or affiliate article without direct checkoutProduct snippet
Individual product sold directly by your businessMerchant listing
Category or collection containing multiple productsItemList

A collection shouldn’t describe its entire assortment as one purchasable Product. Our guidance on structured data for collection pages covers that distinction.

Product Snippets for Editorial Pages

Bottle beside an editorial review journal.

Product snippets suit pages where visitors cannot purchase the item directly, including editorial reviews discussing advantages and disadvantages.

For example, an affiliate review of a Nintendo Switch OLED can describe the product and the site’s own assessment. However, it shouldn’t present the publisher as the seller when checkout happens elsewhere.

Use genuine review content published on your own site. Copying another retailer’s ratings doesn’t create an eligible review.

Merchant Listings for Buyable Product Pages

Sandals displayed with a dispatch parcel.

Merchant listings apply when customers can buy directly from you. They support additional shopping details, including apparel sizing, shipping information, and return policies.

A Shopify saree page or WooCommerce footwear page should therefore use this approach. According to Google’s Product structured data guidance, meeting merchant listing requirements also makes the page eligible for product snippets.

You don’t need two conflicting versions of the same product to pursue both presentations.

Required Product Schema Markup Properties

Product surrounded by core data fields.

For product schema markup, start with these fields, then add accurate supporting details.

ObjectRequired information
Product for snippetsname plus at least one of review, aggregateRating, or offers
Product for merchant resultsname, image, and offers
Offerprice, priceCurrency, and availability
AggregateRatingratingValue plus ratingCount or reviewCount

An image is required for merchant listings; product snippets don’t universally require one. Availability uses a schema.org ItemAvailability URL, such as https://schema.org/InStock. Any aggregateRating must be based on genuine first-party reviews hosted on your site. The aggregateRating rating and review counts must match those reviews.

Recommended Identifiers and Product Details

Tea packaging with identifier details.

After the basics, prioritize product identity.

PropertyWhat to provide
brandThe actual product brand
descriptionAn accurate description matching the page
gtinThe assigned global trade identifier, with 8, 13, or 14 digits
mpn, isbnManufacturer number or book identifier, where applicable

The brand property identifies the product’s actual brand. Never invent identifiers or substitute an internal SKU for a GTIN. Don’t use copied third-party scores.

A JSON-LD Example Using Live Shopify Fields

Lamp framed by structured data layers.

This Liquid template generates JSON-LD for a single-variant Shopify product:

{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": {{ product.title | json }},
  "image": {{ product.featured_image | image_url: width: 1200 | prepend: "https:" | json }},
  "offers": {
    "@type": "Offer",
    "price": {{ product.price | divided_by: 100.0 | json }},
    "priceCurrency": {{ cart.currency.iso_code | json }},
    "availability": "https://schema.org/{% if product.available %}InStock{% else %}OutOfStock{% endif %}"
  }
}

The generated object belongs inside a script element with type application/ld+json. Use schema.org property names, and don’t add it alongside existing conflicting Product markup.

Prices need a period decimal separator and no currency symbol. Currency uses a three-letter ISO 4217 code, such as INR or USD.

Implement Markup on Shopify and WooCommerce

Product page beside packing materials.

First, inspect the product schema markup on an existing product page. Both platforms can already generate structured data, so another schema tool may introduce conflicting prices or duplicate descriptions.

Assign one system responsibility for the main product data. Review tools can contribute ratings, but their output must describe the same product.

Shopify Product Schema Implementation

Folded clothing beside a product management device.

Shopify themes can generate JSON-LD through Liquid’s structured_data filter. Shopify’s ecommerce schema guide describes this built-in approach.

Populate product titles, descriptions, images, prices, stock, brand, and identifiers before changing templates. Then test the storefront output, including unavailable options.

For a no-code route, use a compatible app to fill gaps in your existing implementation. Keep its product fields connected to Shopify instead of entering separate values.

If custom code is necessary, duplicate the theme before editing. Also inspect review and SEO apps, since either may add another Product object.

WooCommerce Product Schema Implementation

Ceramic bowl beside an online storefront.

WooCommerce includes product schema functionality, although themes and extensions can alter the output. Begin with the product editor’s price, stock status, SKU, images, and description.

For variable products, maintain price and availability on each variation. A parent product’s minimum price doesn’t describe every selectable option.

An SEO plugin with WooCommerce integration can add missing fields without manual JSON-LD editing. Disable overlapping product schema features if they create contradictory data.

After changes, clear relevant caches and test the public product URL. Logged-in previews can hide problems that shoppers and Google encounter.

Model Product Variants and Price Changes

Four clothing variants arranged together.

Use Product for an individual item or variant. Use ProductGroup to connect variants sharing a parent product.

Google’s product variant documentation uses productGroupID for the group identifier, variesBy for distinguishing attributes, and hasVariant for related Product entries. Color and size use the property URLs https://schema.org/color and https://schema.org/size.

Each variant needs its own identifier, such as a SKU or GTIN. Its brand, attributes, image, offer, and stock status must accurately describe the selected option.

For a single-page selector, the group normally uses the base canonical URL. Variant URLs must restore the corresponding selection, including its price and availability.

For Google’s multi-page model, there isn’t one canonical URL representing the entire group. Keep grouping identifiers consistent and don’t use ProductGroup.url for that setup.

Our product variant URL guidance connects these markup decisions with ecommerce SEO and indexing.

A variant selection URL doesn’t automatically need its own search listing, but it must reproduce the product state described by its offer.

Price-drop eligibility uses Offer, not AggregateOffer. Google observes price changes over time, so keep the current offer accurate. An invented previous price or a manually added sale label doesn’t establish eligibility.

Represent Shipping Regions Accurately

Delivery route across served and excluded regions.

Attach shipping details with shippingDetails and OfferShippingDetails to the relevant offer. Describe each destination with shippingDestination and DefinedRegion.

For free shipping to New York customers, use addressCountry of US, addressRegion of NY, and a shippingRate MonetaryAmount with a value of 0 and currency of USD.

Add separate shipping details for regions with different charges, and set shippingRate to the actual amount and currency. A Kolkata store offering free domestic shipping should define its actual service area, use INR, and set shippingRate to 0.

For an excluded destination, Schema.org supports doesNotShip: true alongside the relevant DefinedRegion. Google’s merchant listing guide covers supported shipping and return information.

Don’t describe threshold-based free shipping as unconditional. Keep shipping data consistent with your Google Merchant Center feed, and show delivery estimates and return rules to shoppers.

Validate Eligibility, Then Maintain Accuracy

Magnifying glass beside validation panels.

Validation needs two checks for product schema markup. Google’s Rich Results Test evaluates eligibility for supported Google presentations. The Schema Markup Validator checks Schema.org syntax and vocabulary, not Google’s display eligibility.

Use this deployment sequence:

  1. Test a public product URL and inspect the detected Product, Offer, and ProductGroup information.
  2. Fix required-field errors, then use the Schema Markup Validator to check syntax and vocabulary. Assess warnings for relevant missing details.
  3. Compare markup with the visible price, currency, images, stock, and reviews.
  4. Test variant URLs directly, including sold-out combinations.
  5. Publish a small batch, then monitor product reports and URL Inspection in Search Console. Compare feed data with Google Merchant Center.

Every declared product fact must match information available to users on the live page. The JSON-LD script is hidden, but its claims shouldn’t be.

Keep Google Merchant Center data aligned too. Schema availability values differ from feed values: OutOfStock and BackOrder correspond to feed values such as out_of_stock and backorder.

Our guide to fixing Shopify product feed errors covers mismatches across store fields, landing pages, and feeds.

Re-test with the Schema Markup Validator after theme updates, plugin changes, bulk imports, and changes to shipping rules. Passing validation doesn’t guarantee a rich result; Google decides whether to display one.

Frequently Asked Questions

Product, rating, and shipping objects.

Can I add schema without a developer? Often, yes. Existing Shopify theme output or WooCommerce integrations can handle baseline markup. Apps and plugins can fill gaps, but competing implementations need attention.

Do I need reviews to qualify? No. A Product can meet snippet requirements through valid offers instead of aggregateRating. Any ratingValue must reflect genuine reviews, so never create ratings to fill an empty field.

Does AI use product schema? Structured data provides machine-readable product facts. However, it doesn’t guarantee inclusion or citations in AI shopping answers.

Must I rewrite markup whenever a price changes? Dynamic implementations read updated store fields. Hardcoded prices require manual maintenance and can fall behind the visible page.

Conclusion: Keep Product Facts Consistent

Product packaged beside ready-to-ship parcels.

Reliable product schema markup starts with accurate live data. Choose the appropriate presentation, describe variants separately, and test what your storefront publishes.

If your Shopify theme or WooCommerce plugins produce conflicting markup, Get In Touch With Us for help aligning your product pages and technical SEO.

The price and stock shoppers see should be the same facts search engines receive.

Recommended Posts