Upgrade your osCommerce or ZenCart shop!

Import your existing Zen Cart or osCommerce shop to WooCommerce

This plugin will migrate all your products, categories, customers and their orders to WooCommerce – a modern e-commerce system running on the most popular content management system WordPress. No more nightmares of security updates for osCommerce or Zen Cart. WordPress happily updates itself and each of its plugins.

Just point the import plugin to your current website, enter the database credentials and it will give you a preview of all the products and categories it is going to import. Another click and it starts downloading your catalogue, setting up the category hierarchy, inserting products and images.


  • import from osCommerce or Zen Cart
  • preview products and categories
  • import orders and customers
  • import product variations
  • import newsletter subscriptions (requires MailPoet plugin)
  • supports multiple images per product (ZenCart only)
  • one click removal of all imported products or categories
  • robust error handling


  • Zen Cart 1.3.8 or osCommerce 2.2
  • less than 10,000 products to import
  • an empty WooCommerce 2.4.x or better (see FAQ)
  • your source database credentials (MySQL database name, user and password)
  • the source database needs to be accessible from the WordPress site
  • Your server shouldn’t break under heavy load
    (Please read the FAQ below – this plugin won’t work on a shared dreamhost webspace!)


Each installation of the plugin will require a licence key in order for you to receive updates and support.


Frequently Asked Questions

Does this work with all versions of osCommerce?

We developed this plugin using Zen Cart 1.3.8 and osCommerce 2.2 only, but according to customer reports it works with newer versions as well.

What if I already have added some products and categories in WooCommerce?

While existing products should not have any impact on the import process, existing categories do!

Please do yourself a favor and remove all product categories from WooCommerce before you start the import. If there already is a category with the same name as one to be imported, this importer won’t be able to assign products and subcategories properly.

What about plugins or themes – can they cause issues?

I’m afraid some plugins do – and there has been at least one case where a theme was causing trouble as well.

Which is why you should use this plugin on an empty WooCommerce installation – ideally a fresh WordPress installation with only WooCommerce and the import plugin installed. The theme should be either the default WordPress theme or an official WooCommerce theme from woothemes.com.

If you already installed a bunch of plugins and spent time customizing your 3rd party WooCommerce theme – and then are having trouble running the import – we would need to check if the same issue occurs when we run the import on a clean site on or server. If we can’t reproduce your issue on a clean installation, we won’t be able to provide free support – instead you would have to pay the hourly rate of $75.

What if the old and new site are not on the same server?

The plugin needs to access the old site’s database from the new site where it is running on.

If both websites are running on the same server, this won’t be a problem. If they are on different servers, you might need to copy the database from the old to the new server.

This can be done with phpMyAdmin or similar tools by exporting the old database into a file (aka “SQL dump”) and importing this file on the new server – preferably into a new database to prevent messing up your WordPress DB.

Is there any limitation regarding product variations?

WooCommerce and osCommerce store variations in a different way. While osCommerce only stored the main (parent) product and the available attribute values along with their modifiers (ie. Size XL adds $5 to the price), WooCommerce creates one child product for each possible combination of all attribute values – so the records in your database increase exponentially with each variation attribute.

That works well if you only have 2-3 variation attributes. A shirt in 3 sizes and 4 colors would result in 3 x 4 = 12 individual products (plus the one parent product) in the WooCommerce database.

But a product with 6 different variation attributes which have 5 different values each, would result in 5 x 5 x 5 x 5 x 5 x 5 = 56 = 15,625 individual products to be created in WooCommerce. And each one of them would be an actual custom post type in WordPress with at least 20-40 individual records in the wp_postmeta table.

That’s why the importer only processes the first two variation attributes by default – which is actually the only way to get this kind of products imported to WooCommerce at all. You can disable this “safety net” limitation in its settings, but trying to create 15,625 variations would just result in timeout errors – and even if it would succeed, you wouldn’t be able to edit the product anymore because the edit products page would take too long to load and give you a timeout error as well.

What you’d really want in that case is to create those attributes as add-ons instead of variations. An add-on is stored the way osCommerce stores its variations – no extra products have to be created in the database, but you can have the price change depending on which add-ons are selected. Add-ons don’t have their own SKU or quantity or image – they are not variations but something different.

Such add-ons are not a feature of WooCommerce itself though. There is a plugin for that – http://www.woothemes.com/products/product-add-ons/ – but the importer isn’t able to create those add-ons yet – you’d have to do that manually.

Hopefully a future version will implement support for the Product Add-Ons plugin – and give you an option whether to create variations as variations or add-ons.

How to stop the plugin from sending notification emails to customers when importing orders and customers?

The importer plugin does not send any email notifications – but depending on your settings, WooCommerce itself might do so. Before importing orders and customers (accounts) you visit WooCommerce -> Settings -> Emails and make sure you disable all order notification emails and the New account notification.

If you have other plugin installed which hook into WooCommerce and process new orders, you might want to disable them for the import to avoid any unexpected behavior.

How does the plugin handle passwords when creating user accounts in WordPress? 

Unfortunately, ​it’s technically not possible to migrate passwords from ZenCart to WordPress.

​ZenCart stores passwords as an encrypted MD5 hash, but WordPress uses the Portable PHP password hashing framework –  so unless you have a database of plaintext passwords, importing passwords from any other system to WordPress is simply impossible.

When you use the plugin to import customers from ZenCart or osCommerce, it will assign long random passwords automatically and your customers will have to use the “reset password” option in WordPress to set a new password.

Does the plugin import the osCommerce customer_id column when creating user accounts in WordPress? 

Unfortunately it’s not possible to influence the internal user_id in WordPress – this ID had to be set automatically by WordPress when it creates a user account.

However, the original customer ID from osCommerce / ZenCart will be stored in WordPress in a user meta field called _osc_user_id – this won’t be visible in WordPress by default, but a WP developer could easily use that data to port some custom integration code or just display it in the admin.

What about server requirements?

Depending on your product data, this plugin might require more RAM or execution time that is configured by default on your server or webspace. This mainly depends on the number and quality of your product images – but might be affected to a smaller amount by the number of products as well.

This means that you might have to increase the available RAM from the default 40M to 96M or more – the default timeout of 30 seconds shouldn’t cause any issues unless your server is really really slow.

Some hosters – like Dreamhost – have additional limitations on how much ressources like CPU a PHP script is allowed to use. In the case of Dreamhost, if that limit is reached, the script is terminated without further notice – which makes it impossible to use this plugin on their shared webspace.

If you want to read some more about these issues with Dreamhost there is an interesting thread on wordpress.org and of course the great codex page about webhosts on ithemes.com.

The following hosting providers are known to use extraordinary measures which keep resource intensive applications like WP-Lister from running properly:

  • dreamhost.com
  • zen.co.uk
  • fatcow.com
  • netregistry.com.au

If you’re currently with one of these hosters, you might have change your provider to be able to use the importer plugin.