## Metafields store what your product description was never meant to hold
Every Shopify product has a description field. Most merchants use it for everything: marketing copy, technical specifications, care instructions, size notes, compatibility warnings. The result is a wall of mixed content that serves neither the buyer reading it nor Google trying to index it.
Metafields exist to separate structured attribute data from narrative product copy. A product description answers "why should I buy this?" Metafields answer "what exactly is this?" — and the distinction matters for SEO because Google treats those two things differently.
When you store material as a metafield value and render it in your theme HTML, Google can index it as an attribute, map it to its product knowledge graph, and use it to qualify your product for more specific search queries. When you bury material in a paragraph inside the description, Google reads it as prose — possibly, sometimes, at whatever confidence level its parser happens to assign. Structured data is always better than hoping the parser does the right thing.
This post covers the full workflow: what metafields are, which ones matter most for SEO, how to render them so Google can see them, how to connect them to structured data and your Merchant Center feed, and the mistakes that make all of this invisible despite the work you put in.
---
## What metafields are (and why they matter more than your product description)
### Standard product fields vs. metafields — what each is for
Shopify ships a fixed set of standard product fields: title, description, price, images, vendor, product type, tags, weight. These cover what you need to sell a product in most cases.
Metafields extend that model. They let you attach any additional structured data to a product (or variant, collection, customer, order, or other resource) with a defined type, namespace, and key. A furniture merchant might add a dimensions metafield (value: "72"W × 36"D × 30"H") and a material_finish metafield (value: "white oak veneer"). A supplement brand might add serving_size, certifications, and allergen_warnings. An apparel merchant might add fabric_weight_gsm and fit_type.
None of these fit cleanly in the standard description field without turning it into a spec sheet. Metafields let you store them cleanly and render them selectively.
### Category metafields vs. custom metafields — the distinction that matters for Google Shopping
This is the most important distinction in this post for merchants who sell on Google Shopping.
Custom metafields are ones you define yourself. You pick the namespace, the key, the type. They are yours to use however you want, and they can store anything. Google does not know they exist unless you render their values in your HTML or structured data.
Category metafields are a standardized attribute set that Shopify introduced in 2023 as part of its product taxonomy update. When you assign a product to a Shopify product category — for example, "Health & Beauty > Health Care > Medical Supplies & Equipment > Braces & Supports" — Shopify surfaces a set of predefined attribute fields for that category. These are the category metafields. They are standardized across all merchants, which means Shopify knows exactly how to map them to external feeds.
The practical consequence: category metafields flow directly into your Google Merchant Center feed through the native Shopify Google channel. Custom metafields do not — not automatically.
### How Shopify's category metafields map to Google's product taxonomy
Google's product data specification (the Google Product Category, or GPC, taxonomy) contains over 6,000 specific category codes. Shopify's product taxonomy is built to align with this. When you assign a Shopify category and fill in the category metafields, Shopify handles the GPC code mapping in the feed — you do not need to manually enter a GPC string.
This is not abstract. A product with a correctly assigned category and populated category metafields will have a higher feed quality score in Merchant Center than an identical product with only title, description, and price. Feed quality score affects Shopping ranking in free listings.
---
## The SEO case for metafields: what Google can actually see
### How Googlebot reads metafields (only if they're rendered in your theme's HTML)
Googlebot crawls HTML. It does not query your Shopify database, call your Admin API, or read the metafield values you have stored but not displayed. The only way a metafield contributes to SEO is if its value appears somewhere in the rendered HTML of your page — either as visible text on the storefront or inside a schema block in the page source.
This is the most common metafield SEO mistake. Merchants spend time carefully populating metafields in the admin, then check traffic and see no change, because they never connected the metafields to the theme.
### Metafields that remain hidden in the admin vs. metafields visible on the page
A metafield exists in Shopify's database from the moment you save a value. It is "visible" in the admin UI if the definition exists under Settings → Custom data. But that is admin visibility, not storefront visibility.
Storefront visibility requires either:
1. Using the Shopify theme editor to connect the metafield to a content block on the page (available for metafield definitions with content blocks enabled), or
2. Writing Liquid code that accesses the metafield via product.metafields.namespace.key and outputs its value somewhere in the template.
There is no middle path. If neither of those two things has been done, the value is invisible to Google regardless of how carefully it was entered.
### The difference between metafield visibility for Google vs. Google Merchant Center feed
Here is where the model splits. For organic search (Google crawling your storefront), a metafield value must appear in your HTML. For Google Merchant Center (Google pulling your Shopping feed), category metafields flow through the Shopify-native channel directly — no rendering required. The Shopify channel reads the structured metafield data from the API and maps it to feed attributes.
So you can have a product where the dimensions metafield improves your Shopping feed quality (because Shopify sends it to GMC) but does not improve your organic rankings (because you have not rendered it on the product page). The SEO win comes only when you do both.
---
## High-SEO-value metafields to add first
Not all metafields are equally valuable for search. Here are the ones that move the needle most.
### Materials and ingredients (searchable attributes, feeds rich results)
Material is one of the most frequently queried product attributes in Google Shopping and semantic search. "Cotton linen blend dress," "stainless steel water bottle," "walnut wood cutting board" — these compound queries combine a product type with a material, and they are highly transactional.
A material metafield (Shopify also surfaces this as a category metafield for apparel and home goods) lets you store this value once and render it in:
- Visible product page content (spec table or attribute list)
- Product JSON-LD schema as the material property
- Your Merchant Center feed as the material attribute
Each surface independently increases the probability that a material-qualified query finds your product. For ingredients in food, supplements, or cosmetics, the same logic applies — ingredient metafields feed both organic rich results and feed quality.
### Dimensions and weight (critical for furniture, fitness, B2B products)
Buyers searching for furniture, fitness equipment, storage solutions, or B2B supplies often include dimensions in their query. "36 inch wide bookshelf" or "60x80 yoga mat" are real commercial queries with direct purchase intent.
Storing dimensions in a structured metafield (rather than buried in a description paragraph) lets you render them in a spec table that Google can read as structured data, and pass them cleanly to your Merchant Center feed. Shopify's category metafields include dimension attributes for relevant categories — use them.
### Compatibility and fit guides (reduces bounce, increases dwell time)
Compatibility information is one of the highest-value additions for automotive, electronics, and sporting goods merchants. A brake pad that lists compatible vehicle makes and models, or a phone case that lists compatible models, earns long-tail traffic from queries like "brake pads for 2019 Honda Civic" that no generic product title would capture.
Fit guides serve a similar function for apparel. A size chart metafield rendered as a table on the product page reduces sizing uncertainty, increases time on page, and earns the kind of dwell signal that Google uses as a proxy for page quality.
### Certifications, ratings, and compliance (trust signals for AI and users)
Certifications are structured factual claims: USDA Organic, NSF Certified, CE marked, Energy Star rated. Google's product knowledge graph understands several of these. Storing them as a list-type metafield and rendering them on the page — either visibly or in JSON-LD — tells both human buyers and AI search engines that your product has verifiable external validation.
For AI-cited search results (Google AI Overviews, Perplexity, ChatGPT), certification data is the kind of concrete, verifiable claim that gets quoted. "This vitamin D supplement is NSF Certified" is a statement an AI answer engine can confidently cite. "High-quality, premium supplement" is not.
### Care instructions and usage (FAQ-style content Google pulls for featured snippets)
Care instructions are a frequently featured-snippeted content type. "How to wash a linen shirt," "how to clean a stainless steel pan," "how to store fresh pasta" — these informational queries often pull content directly from product pages. Storing care instructions as a metafield and rendering them as a structured list or FAQ section on the product page positions you for these snippets without requiring a separate blog post.
---
## Connecting metafields to schema markup
### Using metafield values to populate Product schema (offers, brand, material properties)
Schema markup is where metafields stop being just visible text and become machine-readable structured data that directly powers rich results. The @type: "Product" JSON-LD block in your product template can reference metafield values via Liquid, pulling live attribute data rather than hard-coded strings.
The key properties to populate from metafields:
- material — from your material metafield
- brand — from your vendor field or a brand metafield
- sku — from Shopify's native product.selected_or_first_available_variant.sku
- gtin — from a GTIN/barcode metafield (if stored separately from Shopify's native barcode field)
- description — from the product description (keep this separate from metafield values — descriptions are prose, schema description is prose)
### How to render metafields in JSON-LD via Liquid
Here is a working Liquid snippet for a product template that includes metafield values in Product schema. Place this inside a block in your product.json section or product.liquid template:
``liquid
{% assign p = product %}
{% assign mat = p.metafields.custom.material %}
{% assign cert = p.metafields.custom.certifications %}
{
"@context": "https://schema.org/",
"@type": "Product",
"name": {{ p.title | json }},
"description": {{ p.description | strip_html | json }},
"image": {{ p.featured_image | img_url: 'master' | prepend: 'https:' | json }},
"brand": {
"@type": "Brand",
"name": {{ p.vendor | json }}
},
"sku": {{ p.selected_or_first_available_variant.sku | json }},
{% if mat != blank %}
"material": {{ mat.value | json }},
{% endif %}
{% if cert != blank %}
"award": {{ cert.value | json }},
{% endif %}
"offers": {
"@type": "Offer",
"url": {{ shop.url | append: p.url | json }},
"priceCurrency": {{ cart.currency.iso_code | json }},
"price": {{ p.selected_or_first_available_variant.price | money_without_currency | json }},
"availability": {% if p.available %}"https://schema.org/InStock"{% else %}"https://schema.org/OutOfStock"{% endif %},
"itemCondition": "https://schema.org/NewCondition"
}
}
`
The key pattern is the {% if mat != blank %} conditional. Metafields that have not been populated return blank — including the conditional prevents empty schema properties, which would trigger validation errors in Google's Rich Results Test.
### Using the Obsess AI schema generator to automate this process
Writing this Liquid by hand for every metafield you want to expose is tedious, and it is easy to introduce syntax errors that invalidate the entire schema block. The Obsess AI schema generator reads your product metafield definitions and generates the corresponding JSON-LD Liquid automatically — including the null-safety conditionals. You paste the output into your product template and validate with the Rich Results Test.
---
## Displaying metafields on your storefront (so Google can see them)
### Connecting metafields to your theme via the theme editor (no-code approach)
If you are on an Online Store 2.0 theme (Dawn, Sense, Trade, Craft, Studio, or any theme that uses JSON templates), you can connect metafields to existing content blocks without touching code.
The workflow:
1. Go to Settings → Custom data → Products and create your metafield definition (or verify it exists)
2. Open the Online Store → Customize theme editor and navigate to your product template
3. Select a content block that accepts dynamic sources (typically a text block or a metafield block)
4. Click the Connect dynamic source icon and select your metafield from the dropdown
This outputs the metafield value as visible HTML on the product page. Googlebot sees it. No Liquid required.
The limitation: this approach works only for simple content blocks. Complex layouts — spec tables, accordion FAQs, structured attribute lists — still require Liquid.
### Accessing metafields via Liquid in custom sections
For more control, access metafields directly in Liquid using the object syntax:
`liquid
{% assign dimensions = product.metafields.custom.dimensions %}
{% if dimensions != blank %}
- Dimensions
- {{ dimensions.value }}
{% endif %}
`
The namespace (custom in this example) is whatever namespace you defined when creating the metafield definition. Shopify recommends using custom as the namespace for merchant-defined metafields and reserving other namespaces for app-owned data.
For list-type metafields (an array of values), use:
`liquid
{% assign care_list = product.metafields.custom.care_instructions %}
{% if care_list != blank %}
- {{ instruction }}
{% for instruction in care_list.value %}
{% endfor %}
{% endif %}
`
### Testing with Google's Rich Results Test after connecting
After connecting metafields to your theme — either via the editor or Liquid — validate the result with Google's Rich Results Test. Enter your product URL and check:
1. That the Product type is detected
2. That the properties you expected to populate (material, brand, etc.) appear in the detected schema
3. That there are no warnings about missing required fields
If a metafield value is blank for the product you are testing, the test will not show that property — that is expected. Test with a product that has all metafields populated to verify the full schema output. You can also cross-reference using the Obsess AI SEO checker to audit metafield coverage across your catalog.
---
## Metafields and Google Merchant Center
### How category metafields sync to the Merchant Center feed via Shopify's integration
The Shopify Google channel (the native integration, not a third-party app) reads your product data through the Admin API and maps it to Google's product feed specification. Category metafields — specifically those created by Shopify when you assign a product taxonomy category — are included in this sync.
When you assign a product to the "Apparel & Accessories > Clothing > Tops & Tees" category and fill in the category metafields (gender, age group, color, size, material), the Shopify channel maps those values to the corresponding Google feed attributes: gender, age_group, color, size, material. These attributes directly affect where your product appears in Shopping results.
Products with these attributes populated consistently outperform equivalent products without them in Google's free Shopping listings — because Google can match them to more specific search queries and has higher confidence in the accuracy of the product data.
### Which metafields directly improve Shopping feed quality scores
Google's Merchant Center Diagnostics tab shows a "Feed quality" section that surfaces products with missing or low-quality attributes. The attributes most commonly flagged for missing values align almost exactly with Shopify's category metafield set:
- GTIN / barcode — Required for products sold by multiple merchants; critical for Google to match your product to existing knowledge graph entries
- Brand — Required for most product types
- Material — High importance for apparel, home goods, jewelry
- Color — Required for apparel; strongly recommended for others
- Gender and Age group — Required for apparel
- Size — Required for clothing and footwear
If you see feed disapprovals in Merchant Center for "missing required attribute," the fix in most cases is populating the corresponding category metafield in Shopify. You do not need a supplemental feed or a third-party app for these — the native channel handles the mapping.
For more on fixing feed disapprovals and optimizing your Merchant Center connection, see our full GMC optimization guide.
---
## Common metafield SEO mistakes
### Adding metafields but not rendering them in the theme
Stated clearly: metafield values that are not in your storefront HTML do nothing for organic SEO. This mistake is so common it is worth saying again. You can have a pristine, carefully curated set of 15 metafields across your entire catalog, and if none of them are connected to your theme or schema, Googlebot has never seen a single one of them.
Before you invest time populating metafields at scale, verify that the rendering layer exists. View source on a product page that has metafield values and search for the metafield content. If it is not there, stop and fix the template first.
### Duplicating information already in the product description (cannibalization risk)
If your product description already says "Made from 100% organic cotton" in the third paragraph, and your material metafield says "100% organic cotton," and your JSON-LD schema says "material": "100% organic cotton", you now have the same claim in three places. This is not harmful in the catastrophic sense, but it does add noise and slightly increases the chance of inconsistency if the description is later updated without updating the metafield.
The cleaner pattern: keep the description as narrative prose, use metafields as the source of truth for attribute values, and reference the metafields from your schema. The schema is the clean structured version; the description is the story. They can coexist without duplicating exact strings if you write the description as sentences rather than restatements of attributes.
For more on keeping content distinct and avoiding self-competition, see our post on Shopify keyword cannibalization.
### Using internal SKU codes instead of customer-readable values
A metafield with the value MTL-COT-ORG-WHT` does not help Google or buyers understand what the product is made of. Metafields rendered on the storefront are read by Googlebot as text content — the same rules that apply to visible copy apply here. Use human-readable values: "100% organic cotton," "brushed stainless steel," "FSC-certified maple wood."
The same applies to internal taxonomy codes you might use in your ERP or warehouse system. If those are useful internally, store them in a separate metafield with a different namespace and render only the customer-facing values in your theme.
---
## Where to go from here
The workflow for metafield SEO is:
1. Identify which metafield definitions you need based on your product category — start with Shopify's category metafields for your top revenue products
2. Populate values using the admin, the bulk editor, or the Admin API
3. Render them in your theme via the theme editor (for simple content blocks) or Liquid (for structured layouts)
4. Inject values into JSON-LD schema using the Liquid patterns in this post
5. Validate with the Rich Results Test on a fully-populated product page
6. Check your Merchant Center Diagnostics for feed quality improvements from the category metafield sync
The Shopify SEO checklist at /guides/shopify-seo-checklist includes a metafields section with the specific fields to audit for each major product category.
Obsess AI reads your product metafields and uses them to generate SEO-optimized product descriptions and meta tags — structured attribute data goes in, consistent, keyword-informed copy comes out. Run your free product SEO audit to see which products in your catalog are missing high-value metafield coverage.