k-sync
Back to blog

Shopify metaobjects vs WooCommerce custom post types (2026)

How Shopify Metaobjects compare to WooCommerce Custom Post Types (CPTs) — for storing size guides, FAQs, ingredients, team members, and custom content types after migrating from WooCommerce.

·By k-sync
5 min read · 1,009 words

WooCommerce stores built on WordPress often use Custom Post Types (CPTs) to store structured content beyond products and posts — testimonials, team members, size guides, ingredient lists, recipes, FAQs, brand pages. When migrating to Shopify, this custom content doesn't have a direct migration path. Shopify Metaobjects (introduced 2022) are the closest equivalent, but the paradigm is different. Here's how to think about the transition.

What WooCommerce Custom Post Types are

WordPress's Custom Post Types are a way to create new content types beyond posts and pages. Common WooCommerce store CPTs:

CPTs are registered via register_post_type() in PHP, and fields are stored via ACF (Advanced Custom Fields), Meta Box, or Pods. The content is highly structured and queryable.

Shopify Metaobjects

Shopify Metaobjects (launched 2022) are Shopify's equivalent: structured, reusable content objects with custom fields. Available on all Shopify plans.

A Metaobject is defined by a type (you define the name) and a set of fields (text, number, date, file, product reference, color, etc.). For example:

Metaobject type: "brand"
Fields:
  - name (single_line_text)
  - logo (file)
  - description (multi_line_text)
  - website_url (url)
  - origin_country (single_line_text)

You then create entries of this type (one per brand), and display them in your theme using Liquid or via the Storefront API.

Comparison: WooCommerce CPT vs Shopify Metaobjects

FeatureWooCommerce CPT (ACF)Shopify Metaobjects
Define custom content typePHP code or CPT UI pluginAdmin UI or API
Custom fieldsACF, Meta Box, PodsBuilt-in field types (20+ types)
Display in templatesWP_Query + theme templatesLiquid metaobject references + storefront API
Reference from productsACF relationship fieldMetafield reference type on product
List/archive pageCPT archive template (auto or custom)Requires custom theme section or page with metaobject list Liquid code
SEO indexabilityCPT archive is indexable (Yoast manages)Metaobject pages not auto-created — need explicit page creation
URL structure/testimonials/slug/ or customNot auto-generated — display via existing page or collection
API accessWordPress REST APIShopify Storefront API + Admin API

Common CPT → Metaobject migrations

Brand pages

If your WooCommerce store has brand CPTs (Yith Brands, Perfect Brands for WooCommerce), migrate to Shopify Metaobjects:

  1. Export brand data from WooCommerce (name, logo URL, description, website) via CPT export plugin or manual CSV
  2. Create a "brand" Metaobject definition in Shopify Admin → Content → Metaobjects
  3. Import brand entries via Shopify Admin CSV import or Admin API
  4. On each product, add a Metafield of type "metaobject reference" linking to the brand Metaobject
  5. Display brand info in product theme template via product.metafields.custom.brand.value

Size guides

If size guides were stored as CPTs with measurement tables:

  1. Create a "size_guide" Metaobject with fields for the size table content (multi_line_text or rich_text)
  2. Enter each size guide as a Metaobject entry
  3. Reference the size guide from each product via a metafield
  4. Theme section reads the metafield and displays the size guide in a modal or tab

Testimonials / social proof

For testimonials stored as CPTs with photo, name, quote, company fields:

FAQs

FAQ CPTs (question + answer fields):

What Metaobjects don't fully replace

CPT archive pages with SEO

WordPress CPT archives (e.g., /brands/ listing all brands) are automatically generated and indexable. Shopify Metaobjects don't auto-generate pages. You need to:

Complex CPT relationships

ACF's flexible content layouts, repeater fields, and complex nested relationships are difficult to replicate in Metaobjects. For very custom data structures, a Shopify custom app or headless approach may be more appropriate.

CPTs used for content marketing (not product data)

If you used CPTs for blog-like content (recipes, tutorials, guides with rich content), Shopify's blog system may be a better destination. Shopify blogs support custom templates and can be organized by tags. For content that doesn't need to be structured data, migrating to Shopify pages or blog posts is simpler than Metaobjects.

Migration approach for CPTs

  1. Inventory all CPTs: List all registered CPTs in WordPress (wp-admin → CPT UI or code search for register_post_type). Note the fields stored per CPT.
  2. Categorize by destination:
    • Product-linked data (size guides, brand info) → Metaobjects + product metafields
    • Content marketing (recipes, tutorials) → Shopify Blog or Pages
    • Simple lists (FAQs, testimonials) → Metaobjects or hardcoded theme section
    • Complex structured content → consider a custom app or headless CMS
  3. Create Metaobject definitions: Define types and fields in Shopify Admin → Content → Metaobjects before importing data.
  4. Export and import data: Export CPT entries to CSV from WordPress, import to Shopify via Admin API or Metaobject CSV import.
  5. Connect to products/pages: Add metafield references on products linking to the Metaobjects.
  6. Build theme display: Ensure theme sections or templates render the Metaobject data correctly.

Metaobjects are a capable feature for structured content, but the migration requires more manual work than product data. The key distinction: product and variant data migrate through tools like k-sync automatically, while CPT data requires a separate, custom migration process specific to each CPT type.

Migrate your store with k-sync

Connect your WooCommerce store, validate your products, and push to Shopify in minutes. Free for up to 50 products.

Get started free

Related reading

Browse all migration guides