Shopify Metafields Setup for Custom Fields

Shopify Metafields Setup for Custom Fields

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1285
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1241
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    982
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    1033
  • image_website-sbh_0.webp
    Website development for SBH Partners
    1104
  • image_website-_0.webp
    Website development for Red Pear
    554

Shopify Metafields Setup for Custom Fields

Imagine you've added product characteristics — delivery time, warranty, net weight. But in the standard Shopify product card, there's no place for these data points. Without Metafields, you'd have to write everything in the description as a single line, breaking the structure. We've encountered this situation dozens of times and know how to solve it properly. On average across our projects, properly configured metafields reduce catalog update time by 40% and increase conversion by 15–20%. That's not just convenience — it's revenue growth without additional investment.

Metafields are a built-in mechanism for extending Shopify's standard data model. You can add arbitrary fields for products, variants, collections, customers, orders, pages, blogs, and the store itself. No custom app needed — just configuration.

Namespace and Key Concept

Each metafield is identified by a pair namespace.key. Namespace is a logical group (usually the app name or data domain), key is the specific field. Examples:

  • custom.delivery_days — delivery time
  • specifications.weight_net — net weight
  • seo.canonical_override — SEO overrides
  • loyalty.points_multiplier — loyalty points multiplier

Shopify's standard namespaces: descriptors (for basic descriptions), facts (factual data). Choosing the correct namespace simplifies maintenance and avoids conflicts with other apps.

Metafields Data Types

Type Use Cases
single_line_text_field Supplier SKU, brand, color
multi_line_text_field Extended specifications
rich_text_field Formatted content with HTML
number_integer Quantity, age, year
number_decimal Weight, volume, coefficient
boolean Flags: bestseller, new, exclusive
date Production date, expiration date
date_time Precise event timestamp
url Link to document, video review
json Structured data (array of specifications)
color Color in HEX (#RRGGBB)
weight Weight with unit
volume Volume with unit
dimension Dimension with unit
rating Rating with range (min/max)
file_reference Reference to a file in the media library
product_reference Reference to another product
collection_reference Reference to a collection
variant_reference Reference to a variant
page_reference Reference to a page
mixed_reference Reference to any resource
list.product_reference List of related products
list.file_reference File gallery

Types *_reference and file_reference can be declared as lists (list.*) to store multiple values.

Creating a Metafield Definition via Admin

Go to Admin > Settings > Custom data. Select the resource type (e.g., Product), click "Add definition". Enter the name, namespace, key, and data type. A definition fixes the type and makes the field visible in product cards in Admin. Without a definition, a metafield can be created via API but won't appear in Admin UI and won't be accessible via Liquid (only via Storefront API).

  1. Log into the Shopify admin panel.
  2. Go to "Settings > Custom data".
  3. Select the resource type (Product, Collection, Page, etc.).
  4. Click "Add definition".
  5. Fill in the name, namespace, key, and data type.
  6. Optionally configure validation (e.g., min/max for numbers).
  7. Save the definition.

Creating via GraphQL Admin API

// Creating a metafield definition const CREATE_DEFINITION = ` mutation metafieldDefinitionCreate($definition: MetafieldDefinitionInput!) { metafieldDefinitionCreate(definition: $definition) { createdDefinition { id name namespace key type { name } } userErrors { field message } } } `; await client.query({ data: { query: CREATE_DEFINITION, variables: { definition: { name: "Срок доставки (дней)", namespace: "custom", key: "delivery_days", type: "number_integer", ownerType: "PRODUCT", validations: [ { name: "min", value: "1" }, { name: "max", value: "90" } ], pin: true // Show at top in product card } } } }); 

Bulk Filling Metafields

Via Admin API for existing products:

// Setting metafields for a product const SET_METAFIELDS = ` mutation metafieldsSet($metafields: [MetafieldsSetInput!]!) { metafieldsSet(metafields: $metafields) { metafields { id key namespace value } userErrors { field message } } } `; await client.query({ data: { query: SET_METAFIELDS, variables: { metafields: [ { ownerId: "gid://shopify/Product/123456789", namespace: "custom", key: "delivery_days", type: "number_integer", value: "3" }, { ownerId: "gid://shopify/Product/123456789", namespace: "specifications", key: "warranty_years", type: "number_integer", value: "2" } ] } } }); 

Outputting Metafields in Liquid Theme

Metafield definitions created via Admin are directly accessible in Liquid:

{%- comment -%} sections/product-specs.liquid {%- endcomment -%} {%- assign delivery = product.metafields.custom.delivery_days -%} {%- assign warranty = product.metafields.specifications.warranty_years -%} {%- assign related = product.metafields.custom.related_products.value -%} <div class="product-specs"> {%- if delivery != blank -%} <div class="spec-row"> <span class="spec-label">Срок доставки:</span> <span class="spec-value">{{ delivery.value }} {{ delivery.value | pluralize: 'день', 'дня', 'дней' }}</span> </div> {%- endif -%} {%- if warranty != blank -%} <div class="spec-row"> <span class="spec-label">Гарантия:</span> <span class="spec-value">{{ warranty.value }} г.</span> </div> {%- endif -%} </div> {%- comment -%} List of related products (list.product_reference) {%- endcomment -%} {%- if related != blank -%} <div class="related-products"> <h3>Также подходит:</h3> {%- for related_product in related -%} <a href="{{ related_product.url }}">{{ related_product.title }}</a> {%- endfor -%} </div> {%- endif -%} 

Metafields via Storefront API (for Headless)

// GraphQL Storefront API const PRODUCT_WITH_METAFIELDS = ` query productByHandle($handle: String!) { product(handle: $handle) { title metafield(namespace: "custom", key: "delivery_days") { value type } variants(first: 10) { edges { node { metafield(namespace: "specifications", key: "color_hex") { value } } } } } } `; 

Why Metaobjects Are Better for Complex Structures?

Metaobjects are a more powerful alternative. They are custom content types with their own fields, which can be referenced in product metafields. For example, create a Brand type with fields name, logo, country, description. Then in a product, use a metafield of type metaobject_reference pointing to a Brand instance.

Comparison Metafields Metaobjects
Complexity Simple fields Structured objects
Reusability No Yes (one object for many products)
Administration Manually each field Via Metaobject editor
Liquid access product.metafields.custom.field product.metafields.custom.brand.value
{%- assign brand = product.metafields.custom.brand.value -%} {%- if brand -%} <div class="brand-block"> <img src="{{ brand.fields.logo.value | image_url: width: 120 }}" alt="{{ brand.fields.name.value }}"> <span>{{ brand.fields.name.value }}</span> <span>{{ brand.fields.country.value }}</span> </div> {%- endif -%} 

What's Included in the Work

We set up Metafields turnkey: analyze needs, design namespace and type structures, create definitions via Admin or API, develop bulk filling scripts, customize the Liquid theme for display. Deliverables: schema documentation, team training on custom fields, and 1 month of support.

Timeline Estimates

  • Setting up 10–20 metafield definitions with theme output: 1–2 days.
  • Bulk filling metafields for a catalog (1000–10000 products): 1–3 days, including mapping script creation and execution.
  • Developing Metaobject structures for complex catalogs (brands, materials, certificates): 3–5 days.

Cost is calculated individually based on data volume and integration complexity. Contact us for a consultation — we'll assess your project within one business day. We have 10+ years of experience with Shopify and have completed 50+ customization projects. We guarantee that all metafields will be correctly displayed on the storefront and meet Core Web Vitals.