

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

- 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

Choose according to what visitors can do on the page.
| Page purpose | Appropriate markup |
|---|---|
| Review or affiliate article without direct checkout | Product snippet |
| Individual product sold directly by your business | Merchant listing |
| Category or collection containing multiple products | ItemList |
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

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

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

For product schema markup, start with these fields, then add accurate supporting details.
| Object | Required information |
|---|---|
| Product for snippets | name plus at least one of review, aggregateRating, or offers |
| Product for merchant results | name, image, and offers |
| Offer | price, priceCurrency, and availability |
| AggregateRating | ratingValue 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

After the basics, prioritize product identity.
| Property | What to provide |
|---|---|
brand | The actual product brand |
description | An accurate description matching the page |
gtin | The assigned global trade identifier, with 8, 13, or 14 digits |
mpn, isbn | Manufacturer 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

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

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

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

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

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

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

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:
- Test a public product URL and inspect the detected Product, Offer, and ProductGroup information.
- Fix required-field errors, then use the Schema Markup Validator to check syntax and vocabulary. Assess warnings for relevant missing details.
- Compare markup with the visible price, currency, images, stock, and reviews.
- Test variant URLs directly, including sold-out combinations.
- 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

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

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.




