S2W – Import Shopify to WooCommerce – Migrate Your Store from Shopify to WooCommerce
S2W Import Shopify to WooCommerce Overview & Data Migration Engine
S2W Import Shopify to WooCommerce is a WordPress plugin engineered for store owners and agencies migrating commerce data off the Shopify platform. It connects to a Shopify Custom App using an Access token and transfers nine data categories—store settings, shipping zones, taxes, pages, blogs, coupons, customers, products and orders—directly into the WooCommerce database without routing payloads through any intermediate server. Within agency delivery and production workflows, the module operates as the primary ETL layer for re-platforming projects, relocating an entire Shopify catalog, order history, customer base and tax configuration inside a self-hosted WordPress runtime.
Technical Specifications & Deployment Matrix
| Engineering Metric | Deployment Specification |
|---|---|
| Base Technology / Framework | WordPress plugin (PHP, JavaScript JS, CSS) built on the WooCommerce commerce layer, versions 6.x through 10.x.x |
| Runtime Requirements | WordPress 6.0.x through 7.0.x; Firefox, Safari, Opera, Chrome and Edge admin environments; Gutenberg-optimized with high-resolution assets |
| Communication Protocols | Shopify Admin API access via a Custom App Access token; optional Shopify Webhook subscriptions for real-time change propagation |
| Front-End / Engine Dependencies | WooCommerce core, WPML compatibility for multilingual deployments, Gutenberg block editor |
| Persistence Footprint | Native WooCommerce database tables; background image download queue; log files recording import history, timestamps and per-field success or failure status |
Shopify-to-WooCommerce Data Pipeline & Execution Flow
The plugin pulls Shopify records via the Admin API and writes them into WooCommerce tables. Deployment begins in the WordPress back-end, where an administrator registers a Shopify Custom App, generates an Access token and stores it locally—authentication is then handled server-to-server, keeping store data private between the two platforms. Once the credential is validated, the import dashboard exposes selectors for each of the nine data types, and the transfer runs as a monitored job with a visible progress bar reporting completed batches.
Product ingestion is the deepest branch of the pipeline. Operators can restrict results to items with an ID greater than a specified value, import explicit ID lists separated by commas, or ingest a Shopify-exported product CSV file. Additional query filters narrow the payload by Shopify product type, collection ID and published date, while six ordering sequences (title or created/updated date, ascending or descending) control processing order. Imported items can be set to published, draft or pending status, and the engine recreates the original Shopify category taxonomy in WooCommerce—or assigns everything to a designated category such as “imported Shopify products”. Product images, gallery assets and variation images can be downloaded during import or queued afterwards from the Products screen, with downloads processed in the background to avoid blocking the admin session.
Because product metafields travel with the dataset, teams that need custom field rendering beyond the default meta storage can model those values with Advanced Custom Fields Pro, which handles field groups, validation and JSON sync inside the same WordPress runtime.
Change management mirrors the initial migration. Re-running a full import skips previously migrated products and only ingests new entries; a manual update path modifies multiple existing products at once; scheduled jobs refresh prices and inventory on a defined cadence; and Webhook connections push price, stock and description changes the moment they occur on Shopify. Selectable update fields include title, inventory, status, new variations, variation SKU, tags, metafields, price, description, images, variation attributes, slug and published date.
Core Technical Capabilities of S2W Import Shopify to WooCommerce
- Order history preservation: Each order transfers with payment and shipping method, billing and shipping addresses, phone, totals, subtotal, tax, discount codes, shipping cost, currency, creation date, browser IP, customer user agent, line items and fulfillment state, with a status mapping layer translating Shopify states such as “Voided” into WooCommerce equivalents like “Cancelled”.
- Customer and coupon migration: Customer records carry first name, last name, phone, company and full address geometry; coupons map to every type WooCommerce supports, including amount, usage limit, expiry date and minimum-spend thresholds.
- Webhook-driven synchronization: Connecting Shopify Webhooks pushes product data changes into WooCommerce immediately after they occur on the source store, eliminating manual re-import cycles for price and inventory edits.
- Configurable re-import logic: Filters by ID, date, product type, collection and sequence allow partial migrations for staging validation before a full production cutover.
Production Implementation & Operational Resilience
In agency staging environments, the recommended sequence is a filtered trial import—by collection ID or a narrow published-date window—followed by verification of order status mapping and variation attributes before executing the full store transfer. Image downloads run as background tasks, so large catalogs do not stall PHP execution during the admin session, and the log layer records updated time, updated fields and success or failure status for every product and order pass, giving engineers an auditable trail when a batch needs re-running. Update jobs report the same field-level status data, which simplifies diagnosing partial syncs after Shopify-side edits.
Two operational boundaries must be planned for. First, Shopify gates access to Personally Identifiable Information: customer record import requires the source store to be on the Shopify plan or higher so the Custom App can obtain Custom Level 2 PII permissions—products, orders and other datasets import without this constraint. Second, review data from Loox migrates through the plugin into WooCommerce Photo Reviews, so stores relying on photo-based social proof retain their review archive after cutover.
Once the store is live on WooCommerce, post-migration merchandising is handled by the native ecosystem rather than the migration layer. For example, laying out conversion-oriented purchase controls with WooCommerce Add To Cart Button for Elementor lets teams place dynamic cart actions anywhere in a Gutenberg or Elementor layout without touching template files. Similarly, agencies running member-only or wholesale catalogs after migration can gate the relocated product catalog with Barn2 WooCommerce Private Store, which restricts storefront visibility by password or user role. The plugin itself imposes no volume ceiling: unlimited products, orders, customers and coupons import under a single deployment with no per-record fees.
Frequently Asked Questions
Does importing customer records require a specific Shopify plan?
Yes. Shopify restricts Personally Identifiable Information access to apps, so the source store must be on the Shopify plan or higher to grant Custom Level 2 PII permissions and allow customer detail migration through the plugin.
Can product images be downloaded after products have already been imported?
Yes. The import options let you skip image download initially and retrieve all product, gallery and variation images later from the Products screen, where the download tasks are processed in the background.
Does the plugin impose any limit on how many records can be migrated?
No. The engine places no cap on the number of products, orders, customers, coupons, pages or blogs transferred, and a single deployment covers unlimited imports without additional per-record charges.
Can imported products update automatically when data changes on Shopify?
Yes. Connecting Shopify Webhooks syncs product data as soon as it changes on the source store, while scheduled update jobs can refresh prices and inventory on a configured cadence, including field-level selection.