Shopify product schema and SEO: the fields Shopify leaves out

Shopify handles a lot of technical SEO for you, which is why the parts it does not handle are so often left broken for years. Two things account for most of the lost ground on a Shopify store: product structured data that stops short of what Google can use, and a URL structure that generates duplicates by design. Both are fixable without leaving the platform.

·11 min read

What your theme is probably emitting

Most Shopify themes output a JSON-LD Product block on product pages. Typically it carries name, description, image, sku, an Offer with price and availability, and — if a review app is installed and configured — an aggregateRating.

That is enough to be eligible for a product rich result, and it is where most stores stop. The fields commonly missing are the ones that decide how the result actually looks:

  • brand — omitted or set to the shop name on every product, including ones you did not make.
  • gtin / mpn — the identifiers Google uses to match your product to the same product elsewhere. Missing these makes you harder to place in shopping surfaces.
  • priceValidUntil — an Offer without it can be treated as stale.
  • shippingDetails and hasMerchantReturnPolicy — these can surface delivery and returns information directly in the result, and most stores have neither.
  • itemCondition — assumed new, but worth stating if you sell refurbished or second-hand.
  • Per-variant offers — a product with five variants at different prices should emit an AggregateOffer or multiple Offers, not one price pretending to be all of them.

The duplicate schema problem

A very common finding: two Product blocks on the same page. One from the theme, one from a review or SEO app, disagreeing about the rating or the price. Google picks one, and you do not get to choose which.

  • Decide which source owns the Product entity and turn the other off. Most review apps have a setting for exactly this.
  • If an app must add the rating, have it merge into the theme's block rather than emit its own.
  • Re-test after every app install. This breaks silently, and nothing in your admin will tell you.

The same applies to aggregateRating specifically: only mark up ratings that are real and visible on the page. Structured data describing reviews a visitor cannot see is a manual-action risk, and Google has been increasingly direct about self-serving markup.

The URL problems Shopify creates for you

Shopify generates several URLs for the same product by design. Most stores never notice, because the canonical tags mostly hold — but "mostly" is doing real work in that sentence.

PatternWhat it isWhat to do
/collections/x/products/yThe same product under every collection containing it.Themes canonicalise to /products/y. Verify yours does, and link internally to the canonical form.
/collections/allEvery product, duplicating your real collections.Leave indexable only if it serves a purpose; otherwise link away from it and let it fall out.
/collections/x?sort_by=…&filter=…Faceted navigation — potentially thousands of near-identical URLs.Canonical to the unfiltered collection. Do not link to filtered states from navigation.
/collections/tag-nameAuto-generated tag pages, frequently thin or empty.Noindex the thin ones. Keep and expand only tags with genuine search demand.
/products/y?variant=123Variant URLs.Canonical to the parent product unless a variant genuinely warrants its own page.

The tag pages are the one worth checking today. A store with a few hundred products can generate several thousand tag URLs, most with one or two products on them, and that volume of thin pages is a real drag on how the rest of the site is crawled.

Structured data beyond Product

  • BreadcrumbList on product and collection pages — cheap, well supported, and changes how the URL is displayed in results.
  • FAQPage where you have genuine questions and answers rendered on the page. Rich result eligibility is narrower than it was, but it remains a strong signal of what the page answers.
  • Organization on the homepage, with a stable @id other blocks reference. This is what ties your brand together across the site.
  • Article on blog posts and guides, with real datePublished and dateModified. Invented freshness dates are treated the same way as invented ratings.

Do not mark up things that are not on the page. Structured data describes visible content — the moment it starts describing content only crawlers see, it is a violation rather than an optimisation.

AEO and GEO: the same work, one step further

Answer Engine Optimisation and Generative Engine Optimisation are the current names for being cited by AI assistants and AI search results rather than only ranking in a list of links. In practice the work overlaps almost entirely with good technical SEO, with a different emphasis.

  • Unambiguous facts. A model quoting your product needs the material, the dimensions, the shipping origin and the returns window stated plainly — in the page text, not only in an image or a spec PDF.
  • Answer the question in the first paragraph. Content that buries the answer under four hundred words of preamble is skipped in favour of content that does not.
  • Structured data as the machine-readable copy of the same facts, agreeing with what the page says.
  • Be citable. A page with a clear author, a real update date and specific claims is a safer citation than an anonymous one, and the systems doing the citing behave accordingly.

None of this is a separate project. A store with correct product schema, honest reviews, clean URLs and pages that answer questions directly is already most of the way there.

Frequently asked questions

Does Shopify add product structured data automatically?

Themes do, not the platform — so what you get depends on the theme, and Dawn, a premium theme and a heavily customised theme will each emit something different. Test a real product URL rather than assuming, because a theme update can change it.

Should I noindex my Shopify collection tag pages?

Noindex the thin ones, which on most stores is nearly all of them. Keep a tag page indexable only where it targets genuine search demand and has enough products to be worth landing on — and if it is worth keeping, it deserves a written intro rather than a bare grid.

Can I add structured data to Shopify without an app?

Yes. It is a JSON-LD block in your theme's product template, built from the product object and its metafields. That is usually cleaner than an app, because the data comes straight from Shopify and there is no second source disagreeing with the theme.

How long until structured data changes show up in search?

Days to weeks. Request indexing on one URL in Search Console to confirm the markup parses, then watch the Enhancements reports — they lag by several days, so a report that has not moved after 48 hours is not yet evidence of anything.

Get the technical SEO done properly

A fixed-scope audit and fix: product schema, canonicals, thin pages and the redirects nobody set up. Shopify-specific, not a generic SEO checklist.