# Shopify Product Structured Data: What Google Reads

> Shopify product structured data is generated from your fields. A missing GTIN or one-line description makes your schema.org markup useless for Shopping.

- Published: 2026-07-13
- Author: Importier Team
- Category: Agentic Commerce / AI Product Descriptions
- Canonical: https://www.importier.app/blog/shopify-product-structured-data

---

A merchant installs a schema.org plugin. The plugin outputs valid JSON-LD. Google Search Console confirms structured data is detected. Yet the products still do not appear as rich results in search, and Google Shopping shows half the catalogue.

The plugin was doing its job. The underlying product data was not.

Shopify product structured data is auto-generated from whatever data sits in your product fields. The markup format is correct by default. The quality depends entirely on what you have put in: title, description, barcode, vendor, and metafields. A product with no GTIN, a one-line description, and no vendor produces schema.org markup that tells Google almost nothing useful.

Understanding which Shopify fields map to which schema.org properties, and what Google does with each, is the practical starting point for improving how your products appear in search, Shopping, and AI-generated recommendations.

## How Shopify generates schema.org markup

Shopify injects schema.org Product markup as JSON-LD on every product page automatically. No app, plugin, or theme modification is required to have structured data present.

The Liquid templates that ship with every Shopify theme include the Product schema block. When a product page loads, Shopify reads the product's data fields and serialises them into a JSON-LD `<script>` block that search engines read.

<Callout label="The key principle">The schema.org output quality is a direct reflection of your product data quality. Improve the data and the structured data improves automatically. No schema plugin required.</Callout>

There is a practical consequence to this. Merchants who install schema plugins to "improve" their structured data are usually not doing anything the theme was not already doing. The only way to improve the schema output is to improve the source data.

## The schema.org fields Shopify populates

Each schema.org property maps to a specific Shopify data field. Here is the full mapping for the properties Google uses:

<table>
  <thead>
    <tr>
      <th>Schema.org property</th>
      <th>Shopify field</th>
      <th>Notes</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code>name</code></td>
      <td>Product title</td>
      <td>Populated for every product</td>
    </tr>
    <tr>
      <td><code>description</code></td>
      <td>Body HTML</td>
      <td>Plain text version. Empty if body HTML is blank.</td>
    </tr>
    <tr>
      <td><code>brand/name</code></td>
      <td>Vendor</td>
      <td>Empty if vendor is blank or set to store name</td>
    </tr>
    <tr>
      <td><code>sku</code></td>
      <td>SKU (first variant)</td>
      <td>Empty if no SKU set</td>
    </tr>
    <tr>
      <td><code>gtin</code> / <code>gtin13</code></td>
      <td>Barcode</td>
      <td>Empty if no barcode. Critical for Shopping.</td>
    </tr>
    <tr>
      <td><code>image</code></td>
      <td>Product images</td>
      <td>First image URL</td>
    </tr>
    <tr>
      <td><code>offers/price</code></td>
      <td>Price (first variant)</td>
      <td>Always present</td>
    </tr>
    <tr>
      <td><code>offers/availability</code></td>
      <td>Inventory status</td>
      <td>In stock / out of stock</td>
    </tr>
    <tr>
      <td><code>additionalProperty</code></td>
      <td>Metafields</td>
      <td>Only certain metafield namespaces</td>
    </tr>
  </tbody>
</table>

The first five rows are where most Shopify stores have gaps. Price and availability are automatically accurate. Everything else depends on what the merchant has entered.

![A professional handheld barcode scanner reading a product barcode on a warehouse shelf.](/blog/shopify-product-structured-data/01.jpg)

<Divider label="The properties that determine Google Shopping eligibility" />

## The GTIN property and Google Shopping inclusion

The `gtin` property is the most consequential gap in most Shopify catalogues. [Google's Shopping policies](https://support.google.com/merchants/answer/6219078) require GTINs for products that have them assigned by the manufacturer. Products without a GTIN where one exists are typically disapproved from Shopping, not just ranked lower.

When Shopify's schema.org markup includes a valid GTIN, Google can cross-reference the product against its product knowledge graph. A GTIN-matched product receives richer Shopping treatment: Google fills in specification data from its own database, matches the product across sellers, and surfaces it in comparison results.

A product without a GTIN is an unverified entity. Google has only the merchant's title and description to work from, with no external confirmation of what the product is.

The Shopify barcode field maps directly to the GTIN property. A barcode entered in the correct GS1 format (EAN-13, UPC-A, or ISBN-13) produces valid schema.org GTIN output. A blank barcode field produces no GTIN property in the markup at all.

For merchants importing products from supplier CSVs, the barcode column is often present in the source data but not mapped correctly during import. Read more about [how to add barcodes to Shopify products in bulk](https://importier.app/blog/shopify-add-barcode-to-products): completing this field at import time is the highest-impact schema improvement available.

<Compare withoutTitle="Products without GTIN" withTitle="Products with valid GTIN" withoutItems="No GTIN property in schema.org output | Google cannot cross-reference against product knowledge graph | Higher disapproval risk in Google Merchant Centre | Treated as unverified product entity in Shopping | No comparison results across sellers" withItems="gtin13 property present in JSON-LD | Google matches product to its database, adds spec data | Qualifies for Merchant Centre approval | Appears in Google Shopping comparison results | Participates in price comparison across retailers" />

![Close-up of vintage letterpress metal type blocks set in a compositing tray, ready for printing.](/blog/shopify-product-structured-data/02.jpg)

## The description property and AI Overviews

The `description` schema.org property maps to the plain text version of your Shopify body HTML. This is what Google reads when deciding whether to cite your product page as a source in AI Overviews, answer shopper queries, and determine what the product is actually about.

A three-sentence description telling Google that a product is "high quality and perfect for everyday use" provides almost no signal. Google cannot determine from this text what specific use cases the product serves, what attributes it has, or what queries it should answer.

An AI-generated description that includes the product category, key specifications, material, dimensions, use case, and compatible scenarios gives Google substantive text to index and cite. [Google's AI Overviews guidance](https://developers.google.com/search/docs/appearance/ai-overviews) emphasises that the richness of the source content determines whether a page is surfaced in AI-generated responses.

Read more about [how Shopify product descriptions affect Google ranking](https://importier.app/blog/shopify-product-description-google-ranking). The same principles that improve organic ranking also improve schema.org signal quality.

<PullQuote>Your schema.org markup is only as informative as the product description it draws from. A generic description produces generic structured data.</PullQuote>

## The brand property and entity resolution

The `brand/name` property maps to Shopify's vendor field. This is used by Google for brand entity resolution: matching the product to a known brand in Google's knowledge graph.

A product with vendor set to your store name instead of the actual brand name produces schema.org markup that identifies the brand as your store. Google cannot resolve this to the manufacturer brand, which affects Shopping results for brand-name searches and limits the structured data benefit.

The fix is straightforward: set the vendor field to the manufacturer brand name at import time. For a catalogue of 200 branded products where the vendor field has been left as the store name or left blank, a bulk update during import captures this correctly for every product.

## Category metafields as additionalProperty

Shopify's category attributes (the taxonomy-aligned metafields for material, colour, size, age group, and similar properties) appear in the schema.org markup as `additionalProperty` items when populated.

This is the structured data layer that AI shopping agents read for faceted queries. A query from an AI agent for "waterproof hiking boot, brown, size 10, under $200" resolves against the `additionalProperty` values in the Product schema. A product without metafields for waterproofing, colour, and size has no structured response to that query.

The 22 Importier Industry Packs each map to Shopify's Standard Product Taxonomy, pre-configuring the correct category attributes for each product type. Read more about [how to use Importier to populate Shopify product data fields automatically](https://importier.app/blog/shopify-product-data-quality): completing metafields at import time means the schema.org `additionalProperty` output is populated from the first day.

<TipBox />

![A quality control inspection workbench with precision calipers measuring a manufactured component in a jig fixture.](/blog/shopify-product-structured-data/03.jpg)

## What the SKU field does in structured data

The `sku` schema.org property maps to the SKU of the first variant. Google uses SKUs for product matching in Merchant Centre and for cross-referencing between product data sources.

An accurate SKU matching the manufacturer's part number is useful for B2B and trade-focused catalogues where buyers search by part number. For consumer products, the GTIN is more important than the SKU for structured data purposes.

If your products have manufacturer part numbers rather than GTINs (common for industrial and technical products), the SKU field is where those should go. The schema.org output will include the part number, which can help for part-number searches.

## The aggregateRating property

One schema.org property that Shopify does not auto-generate from native product data is `aggregateRating`, the star rating rich result. This requires a review app that injects its own schema.org block alongside Shopify's.

Product pages with `aggregateRating` in their schema qualify for star rating display in search results. This is one of the few schema improvements that genuinely requires a third-party app. The underlying data (review count and average) comes from review system, not from Shopify's native product fields.

The rest of the schema.org properties (name, description, brand, GTIN, SKU, offers, image) come entirely from Shopify's native data fields. Improving those fields improves the schema; no plugin changes are needed.

## Steps for auditing your schema quality

<Steps items="Step 1: Run a structured data test. Use Google's Rich Results Test (search.google.com/test/rich-results) on any product URL. It shows exactly what schema.org properties Google reads from the page and flags which required or recommended properties are missing. | Step 2: Identify the gaps. The most common: missing gtin (blank barcode field), missing brand/name (vendor set to store name), and thin description (fewer than 100 words with no attribute details). Note which products have each gap: the GTIN gap is usually the full catalogue, not individual products. | Step 3: Fix at the data level, not the markup level. There is no schema plugin that adds a GTIN that does not exist. The fix is completing the barcode field. For a bulk catalogue, this means importing with the barcode column mapped correctly or running barcode enrichment to fill blanks automatically. | Step 4: Regenerate descriptions where thin. Products with minimal body HTML produce minimal schema descriptions. Batch regenerating descriptions for products under 100 words in the description field directly improves the schema output. | Step 5: Populate category metafields. Industry Pack metafields appear as additionalProperty in schema.org output. For catalogues where metafields have not been configured, applying the relevant Industry Pack adds a structured data layer that was previously absent." />

![A single ornate gilded picture frame leaning against a white wall, completely empty inside.](/blog/shopify-product-structured-data/04.jpg)

## What merchants commonly get wrong

The most widespread misconception about Shopify structured data is that schema plugins improve it. They do not. They replicate what Shopify already outputs, sometimes with minor formatting differences.

The second misconception is that adding schema markup is a one-time task. Because the schema output reflects live product data, schema quality degrades whenever product data degrades: when suppliers change their data formats, when barcode fields are left blank during a bulk import, or when descriptions are imported without modification from supplier sheets.

Read more about [what product data quality means for Shopify stores and how to audit it](https://importier.app/blog/shopify-product-data-quality). Schema quality is a downstream measure of data quality. Maintaining both requires the same discipline.

## What to take away from this

Shopify's schema.org Product markup is built in and automatic. The output is correct in format from the start. What varies is the content, and that content comes entirely from your product data fields.

Key points:

- Shopify auto-generates schema.org JSON-LD on every product page. No plugin is required to have structured data present.
- The `gtin` property maps to the Shopify barcode field. A blank barcode produces no GTIN in the markup and increases disapproval risk in Google Merchant Centre.
- The `description` property maps to body HTML. Thin or generic descriptions produce thin structured data. AI Overviews and Shopping results draw from the same text.
- The `brand/name` property maps to the vendor field. Setting vendor to your store name instead of the manufacturer brand prevents correct brand entity resolution.
- Category metafields (Industry Pack attributes) appear as `additionalProperty` in schema.org. This is the structured layer AI shopping agents read for faceted queries.

Try Importier free at [importier.app](https://importier.app): bulk import with barcode mapping, AI descriptions, and category metafield completion all improve your schema.org output automatically.
