Skip to main content

Shopify product structured data in 2026: what Google and AI assistants actually read

7 min read By DYODE

Most Shopify themes already output Product structured data, so the job in 2026 is rarely "add schema." It is finding out what your theme emits, filling the gaps Google documents for merchant listings, and making sure every value matches what a shopper sees on the page. This guide walks through each type, what Shopify ships by default, and how to check it.

If you want the wider picture of how AI shopping assistants find products, start with Is your store ready for ChatGPT and AI shopping agents? This post goes one level deeper on the markup itself.

What structured data does a Shopify store need?

A store selling online needs Product (or ProductGroup for items with variants) with a nested Offer on every product page, an Organization block that carries your brand details and store-wide return and shipping policies, and BreadcrumbList where your theme shows breadcrumbs. Reviews and ratings belong in the markup only when real customer reviews are visible on the page.

Google splits product markup into two experiences. Merchant listings are for pages where a shopper can buy, and support "more options for specifying detailed product information, like apparel sizing, shipping details, and return policy information." Product snippets are for pages where you can't buy, such as editorial reviews. A Shopify product page is a merchant listing, and Google notes that meeting the merchant listing requirements also makes the page eligible for product snippets.

What does a Shopify theme output by default?

Shopify's free themes print Product schema through the structured_data Liquid filter, which outputs Product for items without variants and ProductGroup for items with one or more. Dawn and Horizon also add an Organization block in the header. Neither adds BreadcrumbList, return policy, shipping details or ratings.

We checked the source of both themes. Dawn's main-product section and Horizon's product-information section each print the product through the filter in a JSON-LD script tag. The filter's documented example output covers brand, category, description, image, name, url and an offer with availability, price, priceCurrency and url.

The Organization block in each theme's header section is thin: shop name, logo, the social links set in theme settings, and the URL. Dawn also adds WebSite markup with a SearchAction on the home page.

Paid and custom themes vary widely. Review apps often inject their own rating markup, and SEO apps sometimes add a second Product block on top of the theme's. Two Product blocks with different prices on one page is the first mismatch to look for.

Which Product and Offer properties does Google read?

For merchant listings, Google requires three Product properties (name, image and offers) and two Offer properties (price and priceCurrency). Everything else is recommended, and the recommended list is where most Shopify stores leave value on the table: identifiers, brand, shipping, returns and variant attributes.

From Google's merchant listing documentation:

  • name, image, offers: required on Product
  • offers.price and offers.priceCurrency: required; the price must be greater than zero, and currency uses the ISO 4217 format
  • offers.availability and offers.itemCondition: recommended, and worth adding since stock status is one of the first things shoppers filter on
  • gtin (or gtin8, gtin12, gtin13, gtin14): recommended; Google asks for the numerical form, not a URL. Only add one if the barcode on the variant is real
  • brand: recommended, as a Brand with a name
  • color, size, material, pattern: recommended, and they matter most once you add variant markup
  • offers.shippingDetails and offers.hasMerchantReturnPolicy: recommended, covered below

Google also states it "may attempt to verify merchant listing product data before showing the information in search results." A price in your markup that differs from the price on the page, or from your Merchant Center feed, is a reason for Google to distrust both.

How should variants be marked up on Shopify?

Use ProductGroup with one Product per variant nested under hasVariant, declare which attributes vary with variesBy, and set productGroupID to the parent product's identifier. Shopify's structured_data filter already outputs ProductGroup when a product has variants, so most stores need to check the output, not rebuild it.

Google's product variants documentation says ProductGroup helps Google "better understand which products are variations of the same parent product" and makes them "eligible for display with variant information in merchant listing experiences." It supports six variesBy values: color, size, suggestedAge, suggestedGender, material and pattern.

The common Shopify gap is option naming. If your size option is called "Option 1" or your colors are stored as "Style," the markup can't map them to color and size cleanly. Name options the way shoppers search, which also helps the product page copy covered in how to write product pages AI shopping assistants recommend.

Where should return and shipping policies go?

Put your standard return and shipping policies on Organization, not on every Offer. Google recommends providing "a global return policy for your business under Organization markup" and the same for shipping, then using Offer-level markup only to override the global policy for specific products.

The store-wide types:

  • Returns: a MerchantReturnPolicy nested under Organization through hasMerchantReturnPolicy. It needs either applicableCountry plus returnPolicyCategory, or a merchantReturnLink to your policy page. A finite return window also needs merchantReturnDays. returnMethod, returnFees and refundType are recommended
  • Shipping: a ShippingService nested under Organization through hasShippingService, with shippingConditions for cost and delivery time (Google's shipping policy guide). For a per-product override, Offer takes shippingDetails as an OfferShippingDetails with shippingRate, shippingDestination and deliveryTime

Know the precedence before you spend time here. Google's merchant listing documentation ranks sources from strongest to weakest: product-level feeds in Merchant Center, Content API settings, Merchant Center or Search Console settings, product-level markup, and last, Organization-level markup. If your shipping and returns are already set in Merchant Center, that is what Google uses. The markup still helps other systems that read your pages, and it should agree with Merchant Center.

Should you add review and rating markup?

Only if real customer reviews are visible on the product page. AggregateRating and Review are recommended Product properties, but Google's review snippet guidelines require that marked-up review content be "readily available to users from the marked-up page," and they ban undisclosed incentivized reviews.

Two traps catch stores. First, Google says that when an entity controls reviews about itself, pages using Organization or LocalBusiness markup are "ineligible for star review feature." Store-wide ratings on your Organization block won't earn stars. Second, Google's structured data policies prohibit markup that is misleading, naming "fake reviews" directly, and violations can bring a manual action that removes rich result eligibility.

The same rule applies to policies. If you don't offer returns, say so with the right returnPolicyCategory or leave the property out. Never mark up free shipping, a 30-day window or a rating you don't have. Omitting a property you can't back up is accurate. Inventing one is a spam signal.

Do AI assistants read Product schema?

Partly, and the vendors say less than the marketing around them. OpenAI says ChatGPT shopping considers "structured metadata from first-party and third-party providers (e.g., price, product description)" when picking products (OpenAI Help Center). It does not say whether that means your page's JSON-LD or a feed.

Google is more direct about its own AI features. Its guidance on AI experiences in Search says to make sure "all the content in your markup is also visible on your web page" and to "ensure that your Merchant Center and Business Profile information is up-to-date."

The practical reading: structured data is one input among several, and accuracy matters more than volume. The AI crawler side, including which bots can fetch the page at all, is in robots.txt and llms.txt for AI crawlers. Whether any of this turns into visits shows up in tracking ChatGPT, Perplexity and Gemini traffic in GA4.

How do you validate Shopify structured data?

Run a product URL through Google's Rich Results Test to see which features the page qualifies for, use the Schema Markup Validator to see every type on the page, and watch the Merchant listings and Product snippets reports in Search Console for errors across the whole catalog.

A short checklist for each template:

  1. Test one product with variants and one without, since the filter outputs different types for each
  2. Count the Product or ProductGroup blocks. There should be one
  3. Compare the marked-up price, availability and rating with what the page shows, including sale prices
  4. Confirm the JSON-LD is in the raw HTML, not added by a script after load
  5. Check Search Console's Merchant listings report a few days after changes, since Google notes re-crawling can take several days

Our free store scan covers the first pass. On a sampled product page it checks for Product or ProductGroup JSON-LD in the raw HTML and whether that markup carries an offer price, checks the home page for Organization schema, and checks that the product title and price appear in the raw HTML. It doesn't validate return, shipping or review markup, so pair it with the Rich Results Test.

If the scan or Search Console turns up gaps, DYODE's AEO and GEO optimization work covers structured data alongside crawler access and page content on Shopify Plus and BigCommerce stores. For a review of your theme's markup before the next release, get in touch.

About DYODE. Founded in 2016 by former heads of E-Commerce at PacSun and Tilly’s. Shopify Premier Partner.

Add DYODE as a preferred source on Google Google shows you more from the sources you pick.

Rather talk it through?

A strategist replies within 1–2 business days, and your written estimate usually follows in 1–2 weeks.

Get my scope estimate

Most projects are scoped within 1–2 weeks.