# Shopify Schema Markup: What Your Theme Adds {#post-title}

[XSeo](/blog/#blog-xseo)

By [B2B Gold](/about/#how-we-write) Published 6 November 2026

## Does Shopify add schema markup? {#does-shopify-add-schema-markup}

Yes. Shopify’s own Dawn and Horizon themes print schema markup without any app: each product with its price, brand and variants through Shopify’s `structured_data` filter, each blog post as an `Article`, and an `Organization` for the store. They leave out breadcrumbs, return and shipping policies, ratings, and any barcode you haven’t entered. Add only what’s missing.

> **Note:** The Shopify and Google pages cited in this guide were checked on 6 November 2026, the day we read the structured data on Shopify’s Dawn and Horizon demo stores.

Schema markup, or structured data, is code that describes a page in schema.org’s vocabulary; Google recommends JSON-LD, a `<script type="application/ld+json">` block in the HTML ([Google: introduction to structured data](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data), last updated 10 December 2025).

In Dawn and Horizon, product and blog post markup comes from Shopify’s `structured_data` Liquid filter: a `Product` for a product without variants, a `ProductGroup` for one with variants, an `Article` for a blog post. Shopify’s example output has a brand, an image and an offer with price, currency and availability, and nothing about ratings, shipping or returns ([shopify.dev: structured_data](https://shopify.dev/docs/api/liquid/filters/structured_data)). Organisation and website markup is the theme’s own code, so it varies by theme.

## What does your theme print, and what’s missing? {#what-does-your-theme-print-and-whats-missing}

Shopify’s Dawn and Horizon themes print product, blog post and organisation markup, and Dawn a site name. On their demo stores we found no breadcrumbs, no return or shipping policy and no ratings on any page we read, and a `gtin` only on variants that have a barcode.

| What Google reads | Google’s rule | Dawn 15.0.0 | Horizon 4.4.0 |
| --- | --- | --- | --- |
| `Organization` | No required properties; recommended on the home page | Every page: name, URL, social links, and the logo if set | Every page: name, URL, and the logo if set |
| `WebSite` | Name and URL, on the home page | Home page | Not printed |
| `Product` or `ProductGroup`, with offers | Required: name, image, an offer with price and currency | `ProductGroup`, a price per variant | `ProductGroup`, a price per variant |
| `brand` | Recommended | The product’s vendor | The product’s vendor |
| `gtin` | Recommended | Variants with a barcode (1 of 2) | Variants with a barcode (7 of 14) |
| `aggregateRating` | Recommended | Not printed | Not printed |
| `shippingDetails` | Recommended; one store-wide policy under `Organization` preferred | Not printed | Not printed |
| `hasMerchantReturnPolicy` | Recommended; one store-wide policy under `Organization` preferred | Not printed | Not printed |
| `BreadcrumbList` | At least two items; shown on desktop | Not printed | Not printed |
| `Article` | No required properties | Blog posts | Blog posts |

Source: our reading of Shopify’s [Dawn demo store](https://theme-dawn-demo.myshopify.com/) and [Horizon demo store](https://theme-horizon-demo.myshopify.com/) on 6 November 2026 (the home page, a product, a collection and a blog post on each, with no microdata on any of them) and each theme’s code ([Dawn 15.0.0](https://github.com/Shopify/dawn/tree/v15.0.0/sections), [Horizon 4.4.0](https://github.com/Shopify/horizon/tree/main/sections)). Google’s rules: [merchant listings](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing), [Organization](https://developers.google.com/search/docs/appearance/structured-data/organization), [breadcrumbs](https://developers.google.com/search/docs/appearance/structured-data/breadcrumb) and [Article](https://developers.google.com/search/docs/appearance/structured-data/article) (each last updated 8 September 2026), and [site names](https://developers.google.com/search/docs/appearance/site-names) (10 December 2025).

What the table means for your own store:

- **Barcodes become the `gtin`.** Horizon’s demo jacket has a `gtin` on exactly the 7 of its 14 variants with a barcode in Shopify, and it is that barcode; Dawn’s demo bag, on 1 of 2. Fill in the product’s **Barcode**, or use **Edit barcodes** for variants ([Shopify Help Center: barcodes](https://help.shopify.com/en/manual/products/details/barcodes)).
- **The vendor becomes the brand.** Both themes print the product’s vendor as its `brand`, so Horizon’s demo jacket is branded “Horizon (Default)”. Whatever your **Vendor** field holds is the brand Google reads.
- **Nothing says how variants differ.** Neither theme prints `variesBy`, the options that tell variants apart, which Google recommends for a product group ([Google: product variants](https://developers.google.com/search/docs/appearance/structured-data/product-variants), last updated 8 September 2026).
- **Collection pages carry no product markup**, as Google’s rules expect: product rich results support only pages about a single product or its variants ([Google: merchant listings](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing)).

A theme from another developer may print more, less, or the same thing twice, so check your own pages before adding anything.

## Which schema types matter for a Shopify store? {#which-schema-types-matter-for-a-shopify-store}

For a Shopify store, the schema types that matter are a product with its offers on product pages, `Organization` on the home page, `BreadcrumbList` on product, collection and blog post pages, and `Article` on blog posts. `LocalBusiness` matters only if customers visit a shop, and FAQ results are gone from Google.

| Type | Page | What Google uses it for |
| --- | --- | --- |
| `Product` or `ProductGroup` with `Offer` | Product pages | Merchant listings: price, availability, and shipping, returns and ratings if given |
| `Organization` (Google suggests the `OnlineStore` subtype) | Home page | Your logo, contact and business details, and a return and shipping policy for the whole store |
| `WebSite` | Home page | The site name Google shows |
| `BreadcrumbList` | Product, collection and blog post pages | The trail above a result, on desktop only |
| `Article` | Blog posts | Better title text, images and dates for the post |
| `LocalBusiness` | Home page or a page about the shop | Address and opening hours of a shop people visit; address and name are required |
| `Review`, `aggregateRating` | Inside the product | Review stars, when Google chooses to show them |
| FAQ | None | Nothing: Google stopped showing FAQ results on 7 May 2026 |

Source: Google’s pages above, plus [local business](https://developers.google.com/search/docs/appearance/structured-data/local-business) (last updated 8 September 2026) and [documentation updates](https://developers.google.com/search/updates).

For returns and shipping, Google prefers one store-wide policy under `Organization`, with an offer-level policy only where a product’s differs or there is no store-wide one. Merchant Center and Search Console also take both as account-level settings ([Google: merchant listings](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing), last updated 8 September 2026).

## How do you check what Google reads? {#how-do-you-check-what-google-reads}

To check what Google reads on a Shopify page, run its live address through Google’s Rich Results Test, then look at Search Console’s reports. The page’s source shows the JSON-LD blocks in its HTML.

1. Open a product page on your live store and view its source in your browser. Search for `ld+json`: each match is one block.
2. Paste the page’s address into the [Rich Results Test](https://search.google.com/test/rich-results) and run it. It shows the rich result types it found, such as merchant listings, product snippets or breadcrumbs, with any errors or warnings. It can’t read a page behind your store’s password, so paste the page’s code instead ([Search Console Help: Rich Results Test](https://support.google.com/webmasters/answer/7445569)).
3. Repeat with the home page, a collection and a blog post: each page type has its own markup.
4. In Search Console, open **Merchant listings** and **Product snippets** under **Shopping**, and **Breadcrumbs** under **Enhancements**. A report appears only once Google finds valid markup of that type ([Search Console Help: rich result reports](https://support.google.com/webmasters/answer/7552505)).
5. For one page, use **URL Inspection** to see what Google indexed, and **Test live URL** to test the page as it is now ([Search Console Help: URL Inspection](https://support.google.com/webmasters/answer/9012289)).

Search Console has no report for `Organization`, `WebSite` or `Article`. Test `Organization` and `Article` in the Rich Results Test, and `WebSite` in the Schema Markup Validator: Google says the Rich Results Test doesn’t support site names ([Google: site names](https://developers.google.com/search/docs/appearance/site-names)).

## How do you add what’s missing? {#how-do-you-add-whats-missing}

Add missing schema markup on Shopify in this order: fill in the Shopify fields your theme already prints, then add the rest through your theme’s code or an app embed. Whatever you add should join the theme’s product, never print a second one beside it.

| Approach | What it can add | What it takes | What to watch |
| --- | --- | --- | --- |
| Fill in Shopify’s fields | `gtin` (Barcode), `brand` (Vendor), category | Nothing new: the theme prints them | Only what your theme’s markup already includes |
| Edit the theme’s code | Anything, breadcrumbs and policies included | A developer who writes Liquid | The code lives in that theme: a new theme starts without it |
| An app embed | What the app offers | Switching it on in the theme editor, and again after a theme change | A second product beside the theme’s |
| Merchant Center or Search Console settings | Return and shipping policies, for Google only | A Merchant Center account, or a verified Search Console property | They are settings, not markup on your pages |

An app embed adds an app’s code to your store without editing the theme’s code ([shopify.dev: theme app extensions](https://shopify.dev/docs/apps/build/online-store/theme-app-extensions)). To switch one on, go to **Online Store**, click **Edit theme**, click the **App embeds** icon, turn the embed on and click **Save**. Sidekick can also turn an installed embed on or off from the theme editor. After you publish a different theme, turn your embeds on again in it: they aren’t active there by default ([Shopify Help Center: apps in your theme](https://help.shopify.com/en/manual/online-store/themes/customizing-themes/apps)).

Shopify’s filter gives the product an `@id`, and Google asks for related items on a page to be linked by `@id`, or it may not know they belong together ([Google: general structured data guidelines](https://developers.google.com/search/docs/appearance/structured-data/sd-policies#multiple-items), last updated 10 July 2026). More on that in [why Google sees two products on one page](/blog/shopify-review-stars-google/#why-does-google-see-two-products-on-one-page).

**Where a product page's structured data comes from**

1. **Your theme prints the product**Shopify's structured_data filter, with price, vendor and barcodes.
2. **Your review app adds ratings**Inside the theme's product, or as a product item of its own.
3. **An app embed adds what's missing**Breadcrumbs and policies, linked to the theme's product by its @id.
4. **Google reads the page as a whole**It may not connect items that aren't linked by @id.

Source: [Google Search Central, general structured data guidelines](https://developers.google.com/search/docs/appearance/structured-data/sd-policies), checked 6 November 2026

## Will schema markup get you rich results? {#will-schema-markup-get-you-rich-results}

Schema markup on a Shopify store makes a page eligible for a rich result, never certain of one: Google decides for each search whether to show it, weighing things such as the searcher’s location and device.

In Google’s words, structured data “enables a feature to be present” but “does not guarantee” it, even when the markup is correct ([Google: general structured data guidelines](https://developers.google.com/search/docs/appearance/structured-data/sd-policies)). The same guidelines rule out marking up content shoppers can’t see, so the return window in your markup should be the one your policy states.

## How do you add it with an app? {#how-do-you-add-it-with-an-app}

XSeo, which we build, adds structured data through one app embed, **XSeo structured data**, and only what your theme and other apps don’t already print. It reads your storefront first and joins product additions to your theme’s own product markup. Since its launch on 6 November 2026, XSeo is free.

1. In XSeo, open **Settings** → **Structured data** → **Manage**. The **Storefront** page opens.
2. **XSeo checks your storefront**: the **Storefront check** reads your home page, up to three products, one collection and one blog post the way search engines get them, and changes nothing.
3. **Choose what XSeo adds (below)**: under **What XSeo adds**, each type says whether XSeo adds it, skips it because your theme already has it, or adds only what your theme’s version leaves out.
4. **Turn on the app embed**: **Turn on in theme editor** opens the theme editor with **XSeo structured data** switched on, and you select **Save** there. An app can’t switch its own embed on.

The check lists each gap with its fix. It also names problems XSeo can’t fix, such as structured data that doesn’t parse or a product described twice, and, where it can tell, what printed each copy.

| XSeo can add | Where | From |
| --- | --- | --- |
| Organization: name, logo, social profiles | Home page | The **Organization details** you enter |
| Website name | Home page | The name in **Organization details**, or your store’s name |
| Breadcrumbs | Product, collection and blog post pages | Your store, collections and blogs |
| Blog posts | Posts whose theme prints no article | Shopify’s own article markup |
| Product ratings | Products with reviews | A review app XSeo supports, only when its reviews show on your product pages and nothing prints a rating already |
| Return and shipping policies | Home page and product offers | Shopify’s return rules; the fixed shipping rates of your general shipping profile |
| Your shop’s location | Home page, off by default | The address and opening hours you enter, only if customers can visit |

What it doesn’t do:

- **No second product.** When your theme’s product markup can’t be added to without a second copy, XSeo leaves product pages alone and says so.
- **Nothing before a check.** No type is added until a storefront check has read your store, and a password-protected store waits until it opens.
- **Not every shipping rate.** Carrier-calculated, weight-based and “rest of world” rates are skipped, and stores on Shopify’s market-driven shipping get none.
- **No FAQ markup**, and no fixes inside your theme’s own markup.

The embed never edits your theme’s files, and nothing stays behind when you turn it off or uninstall XSeo. XSeo writes to your theme only if you apply its AI crawler rules, and then only its own marked lines in `robots.txt.liquid`. Every type and state is in [how XSeo’s structured data embed works](/docs/xseo/structured-data/). XSeo improves what search engines read; they decide what they show.

> **Tip:** [XSeo, which adds the structured data your Shopify theme leaves out](/shopify/xseo/), is free, and its structured data stays off until you switch its app embed on.

## Frequently asked questions {#frequently-asked-questions}

### Do I still need FAQ schema? {#do-i-still-need-faq-schema}

No. Google stopped showing FAQ rich results on 7 May 2026 and removed their documentation on 15 June 2026 ([Google Search Central: documentation updates](https://developers.google.com/search/updates#removing-faq-rich-result), last updated 26 October 2026). Keep your questions and answers on the page for shoppers.

### Does structured data help in ChatGPT or Gemini? {#does-structured-data-help-in-chatgpt-or-gemini}

Google says its AI Overviews and AI Mode need no special schema.org markup, and asks that your structured data match the page’s visible text ([Google: AI features and your website](https://developers.google.com/search/docs/appearance/ai-features), last updated 10 December 2025). Shopify makes your products available to AI channels through Shopify Catalog, or through the Google & YouTube channel or Merchant Center for Google AI Mode and Gemini ([Shopify Help Center: agentic storefronts](https://help.shopify.com/en/manual/online-sales-channels/agentic-storefronts)); whether to keep those on is in [Shopify agentic storefronts: keep them on or opt out](/blog/shopify-agentic-storefronts/).

### Why are my review stars missing? {#why-are-my-review-stars-missing}

Review stars need your review app’s rating in the product’s markup, the reviews visible on the page, and Google’s decision to show them. Work through the five checks in [why Shopify review stars don’t show in Google](/blog/shopify-review-stars-google/). Stars on Google Shopping ads come from a reviews feed instead: [Google Shopping product ratings for Shopify](/blog/google-product-ratings-shopify/).

[XSeo - SEO & Image Optimizer](/shopify/xseo/)

XSeo is a free Shopify app for SEO and images. It writes SEO titles, meta descriptions and image alt text from templates or AI, compresses images in place with a 60-day backup, adds structured data through a theme app embed, manages redirects and checks the product data AI shopping reads. Runs you start show examples first, and Activity can undo them.

[Install free on the Shopify App Store](https://apps.shopify.com/xseo?utm_source=b2bgold.app&utm_medium=referral&utm_campaign=blog&utm_content=blog/shopify-schema-markup&utm_term=post-cta) [Plans and pricing](/shopify/xseo/#pricing) [XSeo docs](/docs/xseo/)

Need help with XSeo? Email [support@b2bgold.app](mailto:support@b2bgold.app).

## More on XSeo {#related-heading}

- 6 November 2026 **[Does Shopify Compress Images? What We Measured](/blog/shopify-image-compression/)** Shopify already serves resized WebP and AVIF copies of your images. We measured what its CDN sends, and where compressing the original still matters.
- 6 November 2026 **[How to Create URL Redirects in Shopify](/blog/shopify-url-redirects/)** Create, import and check URL redirects in Shopify: when Shopify adds one for you, why a redirect doesn't fire, and what Google says about 301s and 404s.
- 6 November 2026 **[How to Write Shopify Meta Titles and Descriptions](/blog/shopify-meta-title-description/)** Where to set meta titles and descriptions in Shopify, the limits Shopify and Google actually use, what to write for products, and why Google rewrites them.
