Shopify metafields are the simplest way to add custom information to your theme without installing a page builder. They sit between Shopify’s standard fields (title, price, description) and full theme code edits, letting you store extra data per product, collection, or page and pull it into your theme through the editor. This guide walks through the full workflow: setting up metafield definitions, connecting them to your theme through dynamic sources, and knowing when to upgrade to metaobjects.

If you haven’t built out your catalog yet, start with our walkthrough on Shopify product setup workflow.

The approach below works on every OS 2.0 theme (Dawn, Horizon, Impulse, Prestige, Motion, Sense - everything published from 2021 onwards) without writing code. For older “vintage” themes the integration takes some Liquid edits, which I cover separately. Most stores can run this entire workflow in 30 minutes and never need a metafields app.

Key Takeaways
1
Metafields let you add custom data to any Shopify resource (product, collection, customer, order) and display it in your theme through dynamic sources - no apps required for OS 2.0 themes.
2
Create definitions in Settings > Custom Data before adding values. Definitions enable theme editor integration, admin UI validation, and clean migration if you change theme later.
3
Metafields store data per single resource (product, collection). Metaobjects let you define reusable content blocks (like brand profiles, FAQ groups, or specs templates) shared across resources - similar but different problems.

What Are Shopify Metafields?

Shopify metafields are custom key-value pairs you attach to a Shopify resource - products, variants, collections, customers, orders, pages, blog posts, or the store itself. Each metafield has a definition (name, type, validation rules) and a value. The Shopify admin treats them as first-class fields once you create the definition, so editors can fill them in without code.

The use case that matters most for theme customization: extending the product page beyond Shopify’s standard fields. If you sell skincare, you need fields for ingredients, skin type, and SPF. If you sell apparel, you need fit notes, fabric content, and care instructions. If you sell electronics, you need specs tables. None of that lives in Shopify’s defaults. Metafields let you add all of it, structured, and have your theme display it automatically.

Why Use Metafields Instead of Apps?

Three reasons. First, metafields are free and native. Most “custom field” apps cost $10-$30 a month and inject scripts into your storefront that slow it down. Metafields ship with Shopify and add zero page weight. Second, metafields survive theme changes. Data stored in app databases disappears when you uninstall the app or sometimes when you change theme. Data stored as Shopify metafields stays with the product forever, regardless of theme. Third, metafields are accessible to all of Shopify’s other systems - search, filters, Shopify Functions, marketing campaigns, AI features. App data isn’t.

The exceptions: if you need a visual page builder (Shogun, GemPages) for landing pages, those use their own data model and aren’t really competing with metafields. If you need conditional logic on a product configurator (custom builds, made-to-order), an app handles that better than raw metafields.

Step 1: Create a Metafield Definition

Go to Settings > Custom Data in your Shopify admin. Pick the resource type you’re adding fields to - Products is most common. Click “Add definition,” give it a name (e.g., “Ingredients”), and pick a type. The type determines what data the field accepts and how the theme can display it:

  • Single line text / Multi-line text - short descriptions, care instructions, sizing notes
  • Rich text - formatted content with bold, links, lists (best for ingredients or specs)
  • Integer / Decimal - numbers (weight, dimensions, SPF rating)
  • True/False - checkbox-style flags (e.g., “vegan”, “limited edition”)
  • Date / Date and time - release dates, expiry, drop schedules
  • File reference - PDF spec sheets, size charts, lookbook images
  • Product / Collection / Page reference - link products together (related products, gift bundles)
  • URL - external links (videos, brand pages, manufacturer sites)
  • Color - swatches that match the product (note: variant swatches use Variant Options, not metafields)

Definitions are the part most guides skip and most stores get wrong. Skipping the definition step and adding values directly works, but you lose the admin editor integration, the validation, and the theme editor’s dynamic source picker. Always define first.

Step 2: Add Metafield Values to Products

Go to any product page in your admin. Scroll to the bottom - you’ll see the metafield definitions you created appear as fields. Fill them in. The admin saves them automatically. For bulk editing, use the bulk editor (select multiple products from the product list, then click the metafield columns) or import them via CSV through the product import.

For large catalogs (1000+ products), use the bulk CSV import. The CSV format is documented in Shopify Help under product imports - each metafield gets its own column with the definition’s namespace and key (e.g., custom.ingredients). Filling 1000+ products manually takes hours. CSV takes minutes.

Step 3: Display Metafields in Your Theme (Dynamic Sources)

This is where most guides get vague. Here’s the actual click path on an OS 2.0 theme:

  1. Go to Online Store > Themes > Customize on your active theme.
  2. Navigate to a product page template.
  3. Add a new section or block (Text, Image, Collapsible Tab - whichever fits).
  4. Click into the text field. You’ll see a small database icon next to it. Click that - it opens the Insert Dynamic Source picker.
  5. Pick your metafield from the list. Save.

The block now pulls the metafield value for each product automatically. No template editing, no Liquid code. The same approach works for image fields (use an Image block), file references (Button block linking to the file), and URL fields.

If the dynamic source picker is greyed out or empty, you forgot Step 1 (you added a value without creating a definition). Go back to Settings > Custom Data and add the definition.

Step 4: Vintage Themes (Pre-OS 2.0)

Themes published before 2021 (Brooklyn, Debut, Narrative, the original Boundless) don’t support dynamic sources. You need Liquid code edits to display metafields. The syntax:

{{ product.metafields.custom.ingredients }} - replaces “custom” with your namespace and “ingredients” with your key. Add it inside the product template (typically sections/product-template.liquid or similar). For rich text fields, use {{ product.metafields.custom.ingredients | metafield_tag }} to render the HTML properly.

If you’re on a vintage theme, this is the moment to consider upgrading to an OS 2.0 theme instead. Vintage themes are end-of-life - Shopify stopped major updates to them in 2023. For a step-by-step, see our guide on how to update a Shopify theme.

Metafields vs. Metaobjects: When to Use Which

Shopify added metaobjects in 2023 and most guides still treat them as the same thing. They’re not. The difference:

  • Metafields attach data to an existing Shopify resource. Each product has its own values. Use for: per-product specs, per-collection banners, per-customer preferences.
  • Metaobjects are reusable content blocks defined independently of any single product. Use for: brand profiles you reference across products, FAQ groups that appear in multiple places, structured testimonials.

Practical test: if the data is specific to one resource, use a metafield. If you’d write the same content into multiple products, define it once as a metaobject and reference it. Most stores need both - metafields for product specs, metaobjects for brand-level content.

Common Mistakes

Four patterns I see when auditing stores:

  1. Adding values before definitions. Values without definitions work but break theme editor integration. Always define first.
  2. Mixing namespaces randomly. Use custom as your namespace unless you have a specific reason not to. App-installed metafields use their own namespaces (e.g., shopify--reviews) - leave those alone.
  3. Storing data in product descriptions instead. A spec table dumped into the description is harder to maintain, breaks responsive layout, and isn’t queryable. Metafield it.
  4. Forgetting to handle empty fields. If a metafield is empty for some products, your theme will render an empty heading. Wrap dynamic source blocks in conditional logic (the OS 2.0 theme editor has a “Hide if empty” toggle on most blocks - use it).

When to Add a Metafields App

The native workflow above covers 90% of use cases. The 10% where an app helps:

  • Visual repeater layouts - if you need a “team members” or “ingredient list with images” repeater on every product, apps like Easy Tabs or Custom Fields by Bonify make repeater UIs easier than native metafield references.
  • Front-end editing - if non-admin users need to fill in metafields (e.g., dropshipping virtual assistants), an app provides a cleaner UI than the admin.
  • Cross-product mass updates - bulk-update workflows that go beyond CSV import.

For app options when you need them, see our review of the 7 best Shopify metafield apps.

Quick Reference: Theme Editor Click Path

Whenever you forget the steps, this is the short version:

  1. Settings > Custom Data - create definition
  2. Product page (admin) - fill in value
  3. Online Store > Themes > Customize - find text/image block, click database icon, pick metafield
  4. Save - theme renders the value automatically across all products

For broader Shopify theme customization beyond metafields, our pillar guide on Shopify store design best practices covers the wider context, and the hub post on customization of Shopify themes indexes the full set of customization guides on this site.

Once you have metafields wired into your theme, the next step is using them well on the product page. Our guide to Shopify product page design walks through size guides, FAQ blocks, and trust signals built on metafields and metaobjects.