Migrating Drupal Commerce to WooCommerce: What You Need to Know
A typical Drupal Commerce store has 15-20 interconnected database tables: products linked to variations, orders linked to customers, customers linked to addresses and payment tokens. Your online store isn't just content; it's a web of relationships where breaking any single thread corrupts the whole dataset. Here's what's involved in moving from Drupal Commerce to WooCommerce, and why this is one migration you shouldn't try to automate.
Why Automated Tools Fail for E-commerce
Tools like FG Drupal to WordPress, CMS2CMS, and similar migration plugins handle basic content well enough. However, e-commerce data has relationships that these tools can't handle:
- Products have variations: sizes, colours, configurations, each with their own pricing, stock levels, and SKUs
- Orders reference products, customers, and payments: a single order connects to multiple data entities that must arrive together
- Custom fields and attributes: most Drupal Commerce stores have custom product fields that don't map directly to WooCommerce's data model
- Payment gateway tokens: stored payment methods and subscription billing need careful handling to maintain PCI compliance
Automated tools treat content as flat data. E-commerce requires preserving the relationships between that data. That requires custom scripting.
Nevertheless, understanding exactly what needs to move is the first step toward getting it right.
What Needs to Migrate
What needs to move depends on your store's configuration. A basic catalogue might only need products and categories, but most active stores have order history, customer accounts, and payment records that all need to come across intact.
Product Data
- Product titles, descriptions, and images
- Product variations (size, colour, etc.) with individual pricing and stock
- SKUs and inventory levels
- Custom product attributes and metadata
- Product categories and tags
- Related/cross-sell product relationships
Order History
Every order in Drupal Commerce is a composite record: line items, statuses (completed, pending, refunded), payment transaction IDs, shipping details with tracking numbers, and any internal notes attached by staff. All of this needs to arrive in WooCommerce with the relationships intact, so a customer's order history page shows the same information it did before.
Customer Data
Customer accounts carry login credentials, billing and shipping addresses, and their full order history. Reviews and ratings need to transfer with the correct author attribution. If your store uses wishlists or saved carts, that data is stored separately from the main commerce tables and needs its own migration path.
The Migration Process for E-commerce
E-commerce migration follows the same iterative approach I use for all complex migrations, with additional steps for the commercial data. The key difference is that Drupal Commerce and WooCommerce store data in fundamentally different ways. Drupal Commerce uses dedicated entity types for products and orders, while WooCommerce consolidates both as custom post types within wp_posts. This means every migration requires custom mapping.
1. Commerce Audit
Before writing any migration code, I need to understand your store's data model. Drupal Commerce is highly customisable, which means every store is different. The audit maps:
- Product types and their field configurations
- Variation types and pricing rules
- Custom checkout flows and payment methods
- Tax and shipping configurations
- Any custom modules or business logic
2. WooCommerce Architecture
Your Drupal Commerce data model won't map directly to WooCommerce's structure. Drupal Commerce product variations need to become WooCommerce variable products, and custom attributes need sorting into WooCommerce product attributes versus ACF fields. Pricing rules are another consideration: Drupal Commerce's rule-based pricing has no direct WooCommerce equivalent, so the logic often needs rebuilding with a combination of plugins. This planning stage determines which extensions are needed and prevents surprises during scripting.
3. Custom Migration Scripts
I write custom scripts that handle the relationships between products, orders, and customers as a connected dataset. The scripts run iteratively (typically 5-20 test migrations), with each cycle refining the data mapping and handling edge cases.
4. Payment Gateway Transition
This is often the most sensitive part of an e-commerce migration. Considerations include:
- Stripe, PayPal, Authorize.net: customer tokens and saved payment methods may transfer, depending on your gateway provider's API
- Subscription billing: active subscriptions need careful coordination between the old and new platforms
- PCI compliance: payment data handling must comply with PCI-DSS requirements throughout the migration
5. Zero-Downtime Launch
E-commerce sites can't afford downtime. The migration uses a staged approach:
- Build and populate the WooCommerce store on a staging server
- Run multiple test migrations until data integrity is verified
- Execute a final delta migration to capture recent orders
- DNS cutover to the new site with no interruption to customers
Common Pitfalls
These are the issues that catch teams off guard in Drupal Commerce to WooCommerce migrations:
- Currency and tax configuration. Drupal Commerce and WooCommerce handle tax differently. Make sure your tax rules are properly configured before launch.
- Image handling. Product images in Drupal Commerce may use different field structures than WooCommerce expects. Custom mapping is usually required.
- URL structure. Product URLs will likely change. A complete 301 redirect map is essential for SEO and for customers who have bookmarked products.
- Email templates. Order confirmation, shipping notification, and other transactional emails need to be rebuilt in WooCommerce.
- Analytics continuity. Make sure your analytics tracking carries over so you don't lose conversion data.
Timeline and Investment
A Drupal Commerce to WooCommerce migration for a mid-size store (typically 1,000 to 10,000 products) takes around 6-10 weeks and starts at $8,400. The timeline depends on:
- Number of product types and variations
- Complexity of custom fields and business logic
- Volume of order history to migrate
- Payment gateway integration requirements
- Custom functionality that needs WordPress plugins
The investment protects against the real costs of a failed migration: lost orders, broken customer accounts, and SEO damage that can take months to recover from.
Related reading:
- Why Automated Migration Tools Fail for Complex Drupal Sites
- How We Migrate: The Technical Process Behind a Drupal to WordPress Migration
- Drupal 7 End of Life: Your Migration Options in 2026
- How the migration process works
Planning a Drupal Commerce to WooCommerce Migration?
I've migrated Drupal Commerce stores with thousands of products, complete order histories, and customer reviews. Get a free consultation to discuss your store's requirements.