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.
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:
- Testimonials: Customer reviews/case studies stored as CPTs, displayed in widgets or shortcodes across the site
- Team members: About page staff profiles with photo, title, bio fields
- Brand/manufacturer pages: Each brand has its own CPT entry with logo, description, linked products
- Size guides: Per-product or category-specific size measurement tables
- Recipes: For food/beverage stores — recipe CPTs with ingredients, steps, linked products
- FAQ entries: Structured FAQ items used across multiple product pages
- Portfolio items: For stores that also showcase work (e.g., custom furniture makers)
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
| Feature | WooCommerce CPT (ACF) | Shopify Metaobjects |
|---|---|---|
| Define custom content type | PHP code or CPT UI plugin | Admin UI or API |
| Custom fields | ACF, Meta Box, Pods | Built-in field types (20+ types) |
| Display in templates | WP_Query + theme templates | Liquid metaobject references + storefront API |
| Reference from products | ACF relationship field | Metafield reference type on product |
| List/archive page | CPT archive template (auto or custom) | Requires custom theme section or page with metaobject list Liquid code |
| SEO indexability | CPT archive is indexable (Yoast manages) | Metaobject pages not auto-created — need explicit page creation |
| URL structure | /testimonials/slug/ or custom | Not auto-generated — display via existing page or collection |
| API access | WordPress REST API | Shopify 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:
- Export brand data from WooCommerce (name, logo URL, description, website) via CPT export plugin or manual CSV
- Create a "brand" Metaobject definition in Shopify Admin → Content → Metaobjects
- Import brand entries via Shopify Admin CSV import or Admin API
- On each product, add a Metafield of type "metaobject reference" linking to the brand Metaobject
- 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:
- Create a "size_guide" Metaobject with fields for the size table content (multi_line_text or rich_text)
- Enter each size guide as a Metaobject entry
- Reference the size guide from each product via a metafield
- 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:
- Create a "testimonial" Metaobject type
- Import entries via CSV or Admin API
- Display in a testimonial section on the homepage or product pages using a Metaobject list section in the theme
FAQs
FAQ CPTs (question + answer fields):
- Create a "faq" Metaobject type with question (single_line_text) and answer (rich_text) fields
- Import all FAQ entries
- Create an FAQ page in Shopify Pages and add a Metaobject list section that displays FAQ entries in accordion format
- For product-specific FAQs: add a FAQ list metafield to products referencing individual FAQ Metaobjects
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:
- Create a Shopify page manually (or via a custom theme template) that queries and lists Metaobjects
- Or recreate brand landing pages as Shopify collection pages (each brand = a collection)
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
- 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.
- 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
- Create Metaobject definitions: Define types and fields in Shopify Admin → Content → Metaobjects before importing data.
- Export and import data: Export CPT entries to CSV from WordPress, import to Shopify via Admin API or Metaobject CSV import.
- Connect to products/pages: Add metafield references on products linking to the Metaobjects.
- 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 freeRelated reading
Migrating a luggage and travel accessories store from WooCommerce to Shopify (2026)
How to migrate a luggage, travel bags, or travel accessories WooCommerce store to Shopify — luggage specifications, airline compliance, TSA lock, warranty and durability claims, and luggage retail Shopify setup.
Migrating a motorcycle accessories store from WooCommerce to Shopify (2026)
How to migrate a motorcycle accessories, biker gear, or motorbike parts WooCommerce store to Shopify — helmet safety standards, CE-rated protective clothing, type approval for parts, fitment compatibility, and motorcycle retail Shopify setup.