WCF Shopify Migration: Fact-Checked Review & Recommendations

Date: March 24, 2026
Prepared by: BEMEIR Technical Review
Documents Reviewed:
1. BEMEIR Copy of WCF_Shopify Migration Eval (Migration Planning Checklist)
2. Recommended Architecture: Single Shopify Plus Store (Architecture & API Guide)
3. Proposed Store Structure (additionalCorrection.txt)

0 Executive Summary

Three documents were reviewed for the Woodland Creek Furniture (WCF) / Log Furniture Place / Innovo Lifestyles migration from Magento to Shopify. The proposed architecture recommends a single Shopify Plus store using Shopify Markets for consumer brand differentiation and Shopify B2B for trade customers.

After rigorous fact-checking against Shopify's official documentation (help.shopify.com, shopify.dev, changelog.shopify.com), we identified:

5 Critical Errors
3 Partially Correct
14 Verified Correct
10 Missing Items
Most Significant Finding

The final proposed architecture (both consumer brands under one Primary US Market with different domains, and B2B as a separate Company Location market) is technically feasible using Shopify's multiple web presences feature (GA since October 2023) and/or submarkets (GA since May 2025). However, this approach comes with limitations around shared themes (section/block overrides only), shared checkout, and shared customer accounts that must be understood and accepted before proceeding.


1 Items That Need Correction

1.1 Single-Store Multi-Domain Architecture: Platform Limitations

The proposed architecture is:

1 Shopify Plus Store with woodlandcreekfurniture.com (D2C Brand 1), logfurnitureplace.com (D2C Brand 2), and innovolifestyles.com (B2B/Trade), all running on one store with separate URLs.

What Shopify's documentation actually says:

Two root domains serving different branded content in the same language on one store is NOT natively supported. Here is why:

What DOES work (workarounds):

ApproachHow It WorksLimitations
Alias domain + Liquid detection Set additional brand domains as alias domains (not redirect domains). Alias domains serve the store without redirecting and display the alias URL in the browser. request.host in Liquid returns the alias domain, enabling per-brand content rendering. (Shopify Help - Alias Domains) Customer account pages are NOT supported on alias domains. Login redirects to Shopify-hosted auth, and account pages (order history, profile) load on the primary domain. Carts are separate per domain (cookie-scoped). SEO needs canonical tag handling. Must verify login redirect-back behavior in a dev store.
Alias domain + Blended B2B Set innovolifestyles.com as a third alias domain. Theme detects the domain and renders B2B branding, trade-only collections, and login prompt. B2B Company Location detection activates after login. Same customer account limitation: login flow goes through Shopify-hosted auth. B2B on alias domains is not explicitly documented by Shopify and must be validated in a development store before committing. If it does not work, fallback is to run B2B on the primary domain or use a headless approach.
Headless / Hydrogen One Shopify Plus store as the backend. Separate Hydrogen or React frontends for each domain (woodlandcreekfurniture.com, logfurnitureplace.com, innovolifestyles.com). Full brand independence per domain. Highest development cost. Requires ongoing frontend maintenance. Not all Shopify apps work with headless storefronts.
Key Takeaway

The "1 store, 3 separate branded URLs" architecture does not use Shopify Markets for brand differentiation (Markets require different languages per domain). It can be approached using alias domains + Liquid domain detection + multi-brand theme sections. Alias domains serve the store without redirecting, and request.host routes to the correct brand experience. However, Shopify explicitly states that customer account pages are not supported on alias domains. The login flow, B2B Company detection, and post-login redirect behavior on alias domains must be validated in a development store before committing. See Section 5 for our detailed recommendation and the specific items that require testing.


1.2 "Separate Themes Per Market" Is Misleading

What the documents claim:

"Unique storefront theme/branding using Shopify 2.0 sections and templates" per Market, or "use separate themes assigned to different Markets (if drastically different branding)."

What Shopify's documentation actually says:

Impact for WCF

The phrasing "separate themes" should read "per-market/submarket section and block overrides within one theme." If the two consumer brands need drastically different visual identities (entirely different layouts, design systems, or CSS architectures), a single theme with overrides may not be sufficient. However, if the brands share a similar layout structure and mainly differ in logos, colors, featured collections, and messaging, the override system combined with request.host domain detection in Liquid can work effectively.


1.3 B2B Requires Shopify Plus (Not Optional)

What the documents claim:

"Can Shopify B2B work for Innovo - It doesn't need to be on plus but needs to be a separate ecosystem"

What Shopify's documentation actually says:

This is factually incorrect. Shopify B2B requires Shopify Plus:

All B2B features (Companies, Catalogs, Price Lists, Payment Terms Net 30/60, Company-specific pricing) are Plus-only. There is no separate cost for B2B beyond the Shopify Plus subscription; it is included in the plan.

The Good News

Since the architecture already recommends Shopify Plus for the single store, B2B features are included at no additional cost. The key takeaway: Shopify Plus is a hard requirement for B2B, not optional.


1.4 Variant Limit Is Now 2,048 (Not 100)

What the documents claim:

"What happens if a product has more than Shopify's limit of 100 variants?"

What Shopify's documentation actually says:

The variant limit was increased from 100 to 2,048 variants per product as of October 15, 2025. This applies to all merchants (not just Plus). (Shopify Changelog)

Important caveats:

For WCF's custom furniture with many configuration options, the 3-option limit is likely the more pressing constraint, not the variant count.


1.5 marketCreate Mutation API Structure Is Outdated

What the documents show:

mutation CreateMarket($input: MarketCreateInput!) {
  marketCreate(input: $input) {
    market { id name primary enabled regions(first: 10) { edges { node {
      ... on MarketRegionCountry { id country { code name } }
    } } } } userErrors { field message }
  }
}

// Variables:
{ "input": { "name": "United States", "regions": [{ "countryCode": "US" }] } }

What the current API actually requires (2025-04+):

The actual MarketCreateInput has evolved significantly:

Source: Shopify Dev - marketCreate mutation


2 Claims That Need Clarification

2.1 Transaction Fees: Full Picture Needed

What the document says:

"Are there additional transaction fees? YES 0.2%" (highlighted in yellow)

What's actually true:

There are two separate types of fees that need to be understood:

1. Shopify's Additional Third-Party Transaction Fee

This is an extra fee Shopify charges when you use a payment provider other than Shopify Payments. The 0.2% on Plus refers to this fee. It is waived when using Shopify Payments as the primary gateway.

Plan Third-Party Provider Fee (extra, on top of provider's own fees)
Basic2.0%
Grow1.0%
Advanced0.6%
Plus0.2% (waived with Shopify Payments)

2. Credit Card Processing Fees (Shopify Payments)

Even when using Shopify Payments (which eliminates the third-party fee above), you still pay credit card processing fees on every transaction. Shopify Payments is powered by Stripe. These fees are NOT zero:

Plan Online Domestic Cards Online International Cards Online Amex
Basic2.9% + 30c3.9% + 30c3.9% + 30c
Grow2.7% + 30c3.7% + 30c3.7% + 30c
Advanced2.5% + 30c3.5% + 30c3.5% + 30c
PlusCustom/negotiated rates (contact Shopify Sales)

In-Person (POS) Rates:

Plan Card Present Keyed-In
Basic2.6% + 10c2.9% + 30c
Grow2.5% + 10c2.7% + 30c
Advanced2.4% + 10c2.5% + 30c
PlusCustom/negotiated rates

Source: Shopify Help - Shopify Payments Fees, Shopify Help - Credit Card Rates, Shopify Plus Pricing

Recommendation

Using Shopify Payments is strongly recommended to avoid the additional 0.2% third-party fee. However, credit card processing fees (2.5%-2.9% + 30c range, or negotiated rates on Plus) still apply on every transaction regardless. For WCF, confirm with Shopify Sales what the negotiated Plus processing rates would be, and factor these into the total cost of ownership.


2.2 Multipass Is SSO, Not "Account Sharing"

What the document says:

"Shopify has multi pass if accounts need to be shared"

What Multipass actually does:

Multipass is a Single Sign-On (SSO) mechanism (Plus only), not an account-sharing tool. It redirects users from an external system to Shopify using encrypted, single-use tokens (valid 15 minutes) and auto-creates accounts if needed. It does NOT share accounts between stores, sync data, or maintain cross-domain sessions. (Shopify Dev - Multipass)

How customer accounts actually work in the recommended single-store setup:

Since the recommended architecture uses one Shopify store with multiple domains, customer "sharing" is not an issue at all. There is one customer database. Here is how it works:

AspectHow It Works
Customer data Automatically shared across all domains (woodlandcreekfurniture.com, logfurnitureplace.com, innovolifestyles.com). It is one store, one database. No syncing or third-party tools needed.
Account creation A customer who registers on any of the three domains has an account that works on all three. The email address is the unique identifier.
Login method Shopify's "new customer accounts" use passwordless login: the customer enters their email and receives a 6-digit verification code. No passwords to remember or migrate. Both D2C and B2B customers use this same flow.
B2B vs D2C distinction Handled automatically by email association. If the email is linked to a Company Location, the customer sees the B2B experience (wholesale pricing, catalogs, payment terms). If not, they see the standard D2C experience. Same login, different experience.
Cross-domain sessions Sessions do NOT carry across domains. A customer logged in on woodlandcreekfurniture.com must log in again on logfurnitureplace.com (different domain = different cookie). However, the login process is quick (enter email, receive code, done).
Customer account pages All markets share one customer account domain. You cannot set a different customer account domain per market. By default this uses a shopify.com URL, but you can connect a custom domain (e.g., account.woodlandcreekfurniture.com). Important: alias domains are NOT supported for customer account pages. Account pages (order history, profile) always load on the primary domain or Shopify-hosted URL. (Shopify Help - Customer Account Domain, Alias Domain Limitations)
Order history All orders from all domains appear in the same customer account, since it is one store.
Key Takeaway

Multipass is not needed for this setup. Since all three brands run on one Shopify store, customer accounts are inherently shared. The only limitation is that login sessions are domain-specific (customers need to log in again when switching domains), but the passwordless 6-digit code makes this quick and painless. No account sharing tools, no syncing, no SSO required.

Multipass would only be relevant if WCF has an external system (e.g., a separate CRM or B2B portal outside of Shopify) and wants customers to log into Shopify automatically from that system.


2.3 "Business Model" Segmentation Terminology

What the document says:

"Markets allow you to segment customers by geography or business model"

What Shopify actually says:

Shopify does NOT use the term "business model" segmentation. The new Markets system supports three specific condition types:

  1. Region (regionsCondition): geographic segmentation by country/region
  2. Company Location (companyLocationsCondition): B2B buyer targeting
  3. Location (locationsCondition): POS/retail location targeting

You cannot create arbitrary "business model" segments. The B2B condition type enables a "blended store" where D2C and B2B customers have different experiences, but this is specifically tied to Shopify's B2B Companies feature, not a general-purpose business model segmentation tool.

Source: Shopify Dev - Market Types


3 Verified Correct Claims

The following claims from the source documents were verified as accurate against Shopify's documentation:

# Claim Source
1 B2B and D2C can coexist on the same store ("blended store") Shopify Help - Store Type
2 B2B catalogs can be assigned to specific company locations Shopify Dev - catalogCreate
3 Payment terms supported: Net 15, Net 30, Net 60, Net 90, deposits, event-based Shopify Help - Payment Terms
4 Company-specific catalogs with custom negotiated pricing Shopify Help - B2B Catalogs
5 Price lists work for both D2C markets and B2B catalogs Shopify Dev - CatalogContextInput
6 Inventory is shared across all Markets and B2B Shopify Dev - Inventory Management
7 Customer passwords CANNOT migrate from Magento to Shopify Shopify uses its own password hashing; customers must reset passwords post-migration
8 Shopify handles PCI compliance (Level 1 PCI DSS) Shopify Help - Shopify Payments
9 Shopify enforces URL structure (/products/handle, /collections/handle, not customizable) Shopify Help - URLs
10 301 redirects are supported (bulk CSV import, ~100K limit) Shopify Help - URL Redirects
11 XML sitemap is auto-generated at /sitemap.xml Shopify Help - SEO
12 Cart2Cart and Matrixify are legitimate, widely-used migration tools Available on Shopify App Store and cart2cart.com
13 catalogCreate mutation structure (title, status, context with companyLocationIds) Shopify Dev - catalogCreate
14 companyCreate mutation structure (company name, contact, location) Shopify Dev - companyCreate

4 Missing Considerations Not Covered in Any Document

These are important factors for the WCF migration that were not addressed in any of the three documents:

4.1 Product Option Limit: Maximum 3 Options Per Product

Shopify products can have a maximum of 3 options (e.g., Size, Color, Material). This has NOT changed with the variant limit increase. For WCF's custom furniture, which may have configurations like Wood Type, Finish, Size, Hardware Style, and Cushion Fabric, this is a significant constraint.

Workarounds: Line item properties, metafields with custom storefront logic, or product customization apps (e.g., Shopify's Custom Options apps).

4.2 Media Limit: 250 Files Per Product

While variants increased to 2,048, the media limit per product remains 250 files (images, videos, 3D models combined). Products with many variants cannot all have unique images.

4.3 New Markets System Activation

The new Markets system (with submarkets, B2B company location markets, multiple web presences) was released as generally available on May 21, 2025. (Shopify Changelog) Shopify Plus stores can activate it via Feature Test Drive. Since this is a new migration (not an existing store), the new Markets features should be available. However, confirm activation and test thoroughly in a development store before committing to the architecture.

4.4 Product Bundles: Third-Party App Required

Shopify's native Bundles app (free, by Shopify) only supports basic fixed bundles and multipacks. For a furniture business selling room sets, modular sectionals, and configurable collections, a dedicated third-party bundle app is required.

Recommended:

AppRatingPriceWhy for Furniture
Simple Bundles & Kits 4.9/5 (570+ reviews) Free plan / $24/mo+ Proven with furniture retailers. SKU-level inventory breakdown for bedroom sets and modular sectionals. Bypasses 2,048 variant limit. B2B multipack support. ERP/3PL integration.
Amplify Bundles (PickyStory) 4.6/5 (532 reviews) $99.50/mo Explicit "Home Furnishing" support. "Shop the Look" lookbook feature. 12+ bundle types including Build-a-Box and infinite option bundles.

4.5 Checkout Extensibility (checkout.liquid Deprecated)

Shopify Plus checkout customization now uses Checkout UI Extensions (React-based). The old checkout.liquid is deprecated. Any custom checkout requirements (e.g., delivery scheduling for large furniture, assembly options, trade customer checkout flows) must be built using the new extensibility framework.

Source: Shopify Dev - Checkout Extensions

4.6 URL Redirect Reserved Path Restriction

301 redirects cannot be created FROM URLs that match Shopify's existing routes (e.g., /products/*, /collections/*, /cart, /account). Only redirects from non-Shopify paths (e.g., old Magento URLs like /catalog/product/view/id/123 or /furniture/rustic-bed.html) can be created.

4.7 Shopify Plus Base Pricing

None of the documents mention the actual Shopify Plus cost: $2,300-$2,500/month (negotiable, or a percentage of GMV for high-volume merchants, whichever is higher). Annual billing is cheaper than month-to-month (roughly 25% savings). This should be factored into cost analysis.

4.8 Cross-Domain Sessions

Login sessions do not carry across different root domains (browser cookie restriction). A customer logged in on one domain must re-authenticate when visiting another. With Shopify's passwordless new customer accounts (6-digit email code), this takes seconds. See Section 2.2 for the full breakdown of how customer accounts, B2B/D2C distinction, and shared data work in this single-store setup.

4.9 Shopify's 3-Option Limit Impact on Configurable Furniture

Magento's configurable products can have unlimited configurable attributes. Shopify's 3-option maximum means complex furniture configurations (Wood Type + Size + Finish + Hardware + Fabric) cannot be represented as a single product with variants. This requires:

High Impact

This is arguably the most impactful technical limitation for a custom furniture business and deserves dedicated migration planning.

4.10 Hidden Shopify Fees Not Mentioned in Any Document

Beyond the subscription and credit card processing fees, Shopify has several additional fees that can impact total cost of ownership. None of these are addressed in the source documents:

Fee Rate Details
Currency Conversion Fee 1.5% (US stores) / 2% (international stores) Applied on every currency conversion when selling internationally but receiving payouts in USD. Relevant if WCF sells to Canadian or other international customers.
International Card Surcharge +1% above domestic rate International credit cards are charged at higher rates (e.g., 3.9% + 30c instead of 2.9% + 30c on Basic). Can significantly impact margins on global orders.
Shopify Tax Calculation Fee 0.35% per order (0.25% on Plus) Applies when using Shopify's automated sales tax collection after exceeding $100,000 in annual U.S. sales. For a furniture business at WCF's scale, this will likely apply.
App Subscription Costs $50-$200+/month average Email marketing, reviews, upsells, subscriptions, product customization apps, etc. These add up quickly. Audit quarterly.
POS Pro Fee $89/month per location Shopify POS Lite is free, but POS Pro costs $89/month per location ($1,068/year each). Only relevant if WCF has physical retail locations.
Non-Refundable Transaction Fees on Refunds 30c per original transaction When you refund a customer, the 30c per-transaction fee from the original charge is not returned. High return rates on large furniture items can quietly drain profits.
Chargeback Fee $15 per chargeback Shopify charges $15 for each chargeback (customer dispute). The fee is refundable if the dispute is won. For high-ticket furniture orders, chargebacks can be costly beyond just the lost sale.
Cost Planning

These fees should be factored into the total cost of ownership comparison between Magento (self-hosted) and Shopify Plus. The Shopify Tax fee at 0.25% on Plus alone could be significant at WCF's revenue scale.


5 Architecture Recommendation

Given the platform limitations identified in Section 1.1 (Shopify does not natively support multiple branded root domains in the same language on one store), here are the two viable architecture approaches:

Option A (Recommended)

Single Store + Liquid Domain Detection + Blended B2B

How it works: One Shopify Plus store. Both consumer domains point to the same store using alias domains. The theme is built with multi-brand sections that accept brand-specific settings (logos, colors, images, collections) through the Shopify theme customizer. A small amount of Liquid logic using request.host determines which brand settings to render. All brand configuration lives in the customizer, so content changes require no code edits. B2B (Innovo Lifestyles) operates via the blended store model: B2B customers log in and automatically see wholesale pricing based on their Company Location association.

ProsCons
Single product catalog, single inventoryOne shared theme (but each brand fully configurable via customizer)
Single customer database, no syncing neededCheckout branding is shared across brands
B2B features available natively (catalogs, price lists, payment terms)B2B experience requires login (trade visitors see a login/application prompt on innovolifestyles.com)
Lowest cost ($2,300-$2,500/month)All customer accounts shared across brands
Single app installationRequires upfront theme architecture work for multi-brand sections
Unified order management and reportingSEO needs canonical tags and unique content per domain to avoid duplicate content penalties
Brand content managed via customizer (no code for updates)

Theme architecture:

Build sections with brand-aware schema settings in the theme customizer. Each section accommodates all brands through configurable settings blocks:

{%- comment -%} Example: Multi-brand header section {%- endcomment -%}

{%- case request.host -%}
  {%- when 'woodlandcreekfurniture.com' -%}
    {%- assign brand = section.settings -%}
    {%- assign logo = brand.brand_1_logo -%}
    {%- assign accent_color = brand.brand_1_color -%}
    {%- assign featured = brand.brand_1_collection -%}
  {%- when 'logfurnitureplace.com' -%}
    {%- assign logo = brand.brand_2_logo -%}
    {%- assign accent_color = brand.brand_2_color -%}
    {%- assign featured = brand.brand_2_collection -%}
  {%- else -%}
    {%- assign logo = brand.brand_1_logo -%}
    {%- assign accent_color = brand.brand_1_color -%}
    {%- assign featured = brand.brand_1_collection -%}
{%- endcase -%}

The section schema exposes settings for each brand (logo, colors, collection, hero image, tagline, etc.) in the customizer. Marketing and content teams update brand visuals directly through the customizer without touching code. One section serves all brands.

Technical setup:

  1. Set woodlandcreekfurniture.com as the primary domain
  2. Add logfurnitureplace.com as an alias domain (Settings > Domains > Change domain type > Alias). This serves the store without redirecting to the primary domain. (Shopify Help - Alias Domains)
  3. Build theme sections with multi-brand schema settings:
    • Header: brand logo, navigation collections, accent color per brand
    • Hero: brand-specific hero image, headline, CTA per brand
    • Footer: brand-specific contact info, social links per brand
    • Product pages: brand metafields for descriptions, lifestyle images
    • CSS: :root variables set dynamically per brand via request.host
  4. Add innovolifestyles.com as a third alias domain. Same approach: alias domain, request.host detects it, theme renders the Innovo Lifestyles B2B branding, trade-only collections, and B2B login prompt.
  5. Enable B2B on the store:
    • Create Companies for each B2B customer (interior designers, contractors, trade professionals)
    • Assign Catalogs with trade-specific pricing to Company Locations
    • Configure payment terms (Net 30, Net 60)
    • When a B2B customer logs in on innovolifestyles.com, Shopify detects their Company Location and shows their wholesale pricing/catalogs automatically
    • The theme sections for innovolifestyles.com show only trade/B2B collections (filtered by tags or collection handles in the customizer settings)
    • D2C visitors on innovolifestyles.com see a trade application form or login prompt (not consumer products)
  6. Use new customer accounts (passwordless, 6-digit email code) for all customers
Domain Setup: Alias Domains (Verified)

Alias domains serve the store without redirecting and keep the alias URL in the browser. request.host in Liquid returns the alias domain name (not the primary), enabling per-brand content rendering. Multiple alias domains are supported (up to 1,000 on Plus). (Shopify Help - Alias Domains, Shopify Dev - request object)

Critical Limitation: Customer Accounts on Alias Domains

Shopify explicitly states: "Alias domains aren't supported for the customer accounts pages." (Source) This has the following impact:

Additional Alias Domain Considerations
Option B

Single Store + Headless Storefronts (Hydrogen/Remix)

How it works: One Shopify Plus store as the backend (product catalog, inventory, orders, B2B). Separate Hydrogen or Remix frontends for each domain. Each frontend has its own design, branding, and UX. B2B can have its own dedicated frontend on innovolifestyles.com. This is the only approach that gives full domain independence while keeping a single backend.

ProsCons
Complete brand independence per domainHighest development cost and complexity
Single backend catalog and inventoryRequires ongoing frontend development and maintenance
Full design freedom (different layouts, UX per brand)Hydrogen/Remix requires developer expertise
B2B can have its own frontend on innovolifestyles.comNot all Shopify apps work with headless storefronts
Best performance (SSR/edge rendering)Hosting on Oxygen or custom infrastructure
No domain redirect issuesCheckout still uses Shopify's hosted checkout (consistent across all frontends)

Technical approach:

  1. Shopify Plus store as backend (admin, product catalog, inventory, orders, B2B companies/catalogs)
  2. Hydrogen/Remix storefront 1: woodlandcreekfurniture.com
  3. Hydrogen/Remix storefront 2: logfurnitureplace.com
  4. Hydrogen/Remix storefront 3: innovolifestyles.com (B2B frontend with login-gated wholesale access)
  5. Storefront API for all frontend data fetching
  6. Customer Account API for B2B login and company detection

Our Recommendation

For most scenarios

Option A (Single Store + Liquid Domain Detection + Blended B2B) is our recommended starting point. It delivers the lowest cost, simplest operations, and the single-catalog/single-inventory benefits that motivated the original single-store proposal. The B2B blended store model is a fully documented Shopify pattern. The main risk is the secondary domain redirect behavior, which must be validated in a development store during the planning phase.

If full domain independence is critical

Option B (Headless/Hydrogen) is the only approach that gives each brand its own fully independent storefront, including a dedicated B2B portal on innovolifestyles.com. Consider this if the brands need fundamentally different UX, or if innovolifestyles.com must function as a standalone B2B portal. Higher development investment but maximum flexibility.

Regardless of which option is chosen:


6 Sources

All claims in this document are verified against the following official Shopify sources:

Shopify Help Center (help.shopify.com)

Shopify Developer Documentation (shopify.dev)

Shopify Changelog

Shopify Pricing

Community / Developer Forums (for context, not authoritative)