FG Magento to WooCommerce


This plugin migrates your Magento products and CMS pages to WooCommerce.

It has been tested with Magento versions 1.3 to 2.1 and WordPress 4.9. It is compatible with multisite installations.

The plugin migrates:

  • the product categories
  • the product categories images
  • the products
  • the product thumbnails
  • the product images galleries
  • the product stocks
  • the CMS

No need to subscribe to an external web site.

FG Magento to WooCommerce Premium version

The Premium version includes these extra features:

  • migrates the product attributes
  • migrates the product variations
  • migrates the grouped products
  • migrates the products Up Sell and Cross Sell
  • migrates the users
  • migrates the customers
  • authenticate the users and the customers in WordPress with their Magento passwords
  • migrates the orders
  • migrates the ratings and reviews
  • migrates the discount coupons
  • migrates the SEO meta data
  • SEO: redirects the Magento URLs
  • multisites/multistores: Option to choose which website/store to import
  • update the already imported products stocks and orders
  • compatible with Magento Enterprise Edition

The Premium version can be purchased on: https://www.fredericgilles.net/fg-magento-to-woocommerce/

Add-ons for FG Magento to WooCommerce Premium

The Premium version allows the use of add-ons that enhance functionality:

  • Multilingual Magento stores converted to WooCommerce + WPML
  • Move Magento order numbers
  • Move Magento customer groups
  • Move Magento manufacturers
  • Move Magento product options as add-ons


  • English (default)
  • French (fr_FR)
  • other can be translated


  • Parameters screen


  1. Install the plugin in the Admin => Plugins menu => Add New => Upload => Select the zip file => Install Now
  2. Activate the plugin in the Admin => Plugins menu
  3. Run the importer in Tools > Import > Magento
  4. Configure the plugin settings. You can find the Magento database parameters in the Magento file app/etc/local.xml
    Hostname = host
    Port = 3306 (standard MySQL port)
    Database = dbname
    Username = username
    Password = password
    Table prefix = table_prefix


Installation Instructions
  1. Install the plugin in the Admin => Plugins menu => Add New => Upload => Select the zip file => Install Now
  2. Activate the plugin in the Admin => Plugins menu
  3. Run the importer in Tools > Import > Magento
  4. Configure the plugin settings. You can find the Magento database parameters in the Magento file app/etc/local.xml
    Hostname = host
    Port = 3306 (standard MySQL port)
    Database = dbname
    Username = username
    Password = password
    Table prefix = table_prefix
I get the message: “[fg-magento-to-woocommerce] Couldn’t connect to the Magento database. Please check your parameters. And be sure the WordPress server can access the Magento database. SQLSTATE[28000] [1045] Access denied for user ‘xxx’@’localhost’ (using password: YES)”
  • First verify your login and password to your Magento database.
  • If Magento and WordPress are not installed on the same host, you can do this:
  • export the Magento database to a SQL file (with phpMyAdmin for example)
  • import this SQL file on the same database as WordPress
  • run the migration by using WordPress database credentials (host, user, password, database) instead of the Magento ones in the plugin settings.
The migration stops and I get the message: “Fatal error: Allowed memory size of XXXXXX bytes exhausted” or I get the message: “Internal server error”
  • First, deactivate all the WordPress plugins except the ones used for the migration
  • You can run the migration again. It will continue where it stopped.
  • You can add: define('WP_MEMORY_LIMIT', '1G'); in your wp-config.php file to increase the memory allowed by WordPress
  • You can also increase the memory limit in php.ini if you have write access to this file (ie: memory_limit = 1G).
I get a blank screen and the import seems to be stopped
  • Same as above
The media are not imported
  • Check the URL field that you filled in the plugin settings. It must be your Magento home page URL and must start with http://
The media are not imported and I get the error message: “Warning: copy() [function.copy]: URL file-access is disabled in the server configuration”
  • The PHP directive “Allow URL fopen” must be turned on in php.ini to copy the medias. If your remote host doesn’t allow this directive, you will have to do the migration on localhost.
I get the message: “Fatal error: Class ‘PDO’ not found”
  • PDO and PDO_MySQL libraries are needed. You must enable them in php.ini on the WordPress host.
    Or on Ubuntu:
    sudo php5enmod pdo
    sudo service apache2 reload
I get this error: PHP Fatal error: Undefined class constant ‘MYSQL_ATTR_INIT_COMMAND’
  • You have to enable PDO_MySQL in php.ini on the WordPress host. That means uncomment the line extension=pdo_mysql.so in php.ini
Does the migration process modify the Magento site it migrates from?
  • No, it only reads the Magento database.
Do I need to keep the plugin activated after the migration?
  • No, you can deactivate or even uninstall the plugin after the migration.
Is there a log file to show the information from the import?
  • Yes. First you must put these lines in wp-config.php:
    define(‘WP_DEBUG’, true);
    define(‘WP_DEBUG_LOG’, true);
    And the messages will be logged to wp-content/debug.log.

Don’t hesitate to let a comment on the forum or to report bugs if you found some.


Excellent service

Purchased the premium plugin and couldn’t get the import to work correctly due to server issues.

Frederic was a great help and with his help the Magento product listing was successfully imported into the Woocommerce platform.

Can’t recommend this plugin high enough as it saves time and money in the change over.

Here Is Our Experience, Pros/Cons

The plugin (V 2.28.0) gets 5 stars from us because:
1) It worked brilliantly once we got everything set up right,
2) Support was fast, and
3) The plugin creator was very willing to listen to feedback and improve the documentation for the next release. This developer deserves all the business he/they can get.

– The plugin saved us a WEEK of ugly, nasty work.
– The import was gorgeous and meticulous once we got it set up right.
– A lot of attention to detail to get the products, customers, etc. all right.
– Email support is responsive and professional.

– It took us two days and multiple failed attempts to get the import set up correctly.
– Documentation and messages were sparse or hidden. This created wasted runs and anxiety because we weren’t sure what would happen if we used this option, or didn’t use that one. Some parameters were unclear until we got error messages and had to wipe the import and start again.
– HELP screen, such as it was, was totally hidden, never saw it. (It’s a drop-down at the upper right corner of the plugin page in your WP installation).
– Messages were very short and missing meaningful information. Cost us a lot of time.
– NOTE: The developer was responsive to this feedback and said they will improve the text and explanations in a new release. 🙂

Details and Hints:
– We imported ~5000 customers and ~200 product/virtual product combinations from a Magento multistore site.
– We could not connect to the server directly for some reason, probably our firewall’s fault. So we had to export the old Magento db and import it into the new server, then run the Magento -> WooCommerce import from there.
– Connection error messages are displayed AT THE VERY BOTTOM OF THE PLUGIN PAGE. if you don’t scroll down you won’t see what’s going wrong.
– The importer/converter deals with multiple stores.
– HOWEVER, when you first test your connection and it shows you the number of records, it is ONLY showing you the records for one auto-selected store. It doesn’t tell you that clearly. We thought it wasn’t seeing any orders until we finally noticed the new drop-down that appeared quietly below.
– Once we selected the right store and did the import, it was PERFECT.
– If you cancel the import, it doesn’t give you great progress information on the Cancel operation. It said it was canceled, but then it looked like the whole thing hung for 5 minutes or so. The Cancel button was gray and the plugin was unresponsive. We were wondering what we were going to do to recover when the plugin suddenly restored control and the Cancel finished.
– Note: it’s unclear to us how you would import multiple stores. We only needed one. It seems like you can only import one. If you want all products from all stores, I think you have to import each separately and it might(?) create duplicate client records?

We were hugely grateful for this plugin and super glad we upgraded to the pro version. We just would have appreciated more documentation, which I understand is on its way. Thanks!

Read all 21 reviews

Contributors & Developers

“FG Magento to WooCommerce” is open source software. The following people have contributed to this plugin.




  • Fixed: The variations were imported as simple products (Magento < 1.4)
  • Tested with WordPress 4.9


  • New: Make the products visibility compatible with WooCommerce 3


  • Fixed: Categories imported in wrong language


  • New: Check if we need the Product Options add-on
  • New: Sanitize the media file names


  • Tested with WordPress 4.8.2


  • Fixed: Categories with duplicated names were not imported


  • Fixed: Security cross-site scripting (XSS) vulnerability in the Ajax importer


  • New: Compatible with Magento 2.x
  • Fixed: CMS articles may be imported as duplicates
  • Improvement: Import speed optimization
  • Tested with WordPress 4.8.1


  • New: Allow HTML in term descriptions


  • New: Import the image caption in the media attachment page


  • New: Block the import if the URL field is empty and if the media are not skipped
  • New: Add error messages and information


  • New: Add the percentage in the progress bar
  • New: Display the progress and the log when returning to the import page
  • Change: Restyling the progress bar
  • Fixed: Typo – replace “complete” by “completed”
  • Tested with WordPress 4.8


  • Tested with WordPress 4.7.5


  • Tweak: Code refactoring


  • Fixed: Duplicated image in the product gallery


  • New: Import the products visibility


  • Tweak: Clear WooCommerce transients when emptying WordPress content
  • Tested with WordPress 4.7.3


  • Fixed: Notice: Undefined index: name


  • Fixed: Term meta data not deleted when we delete the imported data only


  • Tweak: Add a hook after testing the database connection


  • Tested with WordPress 4.7.2


  • Change: Import the Manufacturer’s Suggested Retail Price as the regular price instead of the sale price


  • New: Add an option to import the Special Price or the Manufacturer’s Suggested Retail Price


  • New: Import the length, width and height as shipping attributes
  • Tweak: Code refactoring


  • Tested with WordPress 4.7


  • New: Import the default web site


  • Fixed: Existing images attached to imported products were removed when deleting the imported data


  • Fixed: The child products which are visible individually were not imported


  • Fixed: Wrong progress bar color


  • Fixed: The progress bar didn’t move during the first import
  • Fixed: The log window was empty during the first import


  • Fixed: The “IMPORT COMPLETE” message was still displayed when the import was run again


  • Fixed: Database passwords containing “<” were not accepted
  • Tweak: Code refactoring


  • Fixed: Wrong number of product categories displayed


  • Tweak: If the import is blocked, stop sending AJAX requests


  • New: Authorize the connections to Web sites that use invalid SSL certificates


  • New: Option to delete only the new imported data


  • Fixed: MySQL 5.7 incompatibility: [ERROR] Error:SQLSTATE[HY000]: General error: 3065 Expression #1 of ORDER BY clause is not in SELECT list, references column ‘gv.position’ which is not in SELECT list; this is incompatible with DISTINCT


  • Fixed: Some images were duplicated in the product gallery


  • Fixed: Review link broken


  • New: Display the needed add-ons during the database testing and before importing
  • Fixed: Wrong number of comments displayed
  • Tested with WordPress 4.6.1


  • New: Display the number of data found in the Magento database before importing


  • Tweak: Code optimization


  • Tested with WordPress 4.6


  • Fixed: WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘xxx’ yyy’ LIMIT 1′ at line 4


  • Fixed: CMS pages from all languages were imported
  • Fixed: Notice: Undefined index: name
  • Tweak: Refactor some functions to allow multilingual import by the WPML addon


  • Fixed: PHP Notice: Object of class WP_Error could not be converted to int
  • Fixed: Notice: Undefined index: url_key


  • New: Import the product featured images


  • Fixed: Display an error message when the process hangs
  • Tweak: Increase the speed of counting the terms
  • Tested with WordPress 4.5.3


  • New: Run the import in AJAX
  • New: Add a progress bar
  • New: Add a logger frame to see the logs in real time
  • New: Ability to stop the import
  • New: Compatible with PHP 7
  • New: Compatible with WooCommerce 2.6.0


  • Fixed: The products without stock were not imported


  • Fixed: Products belonging to several bundles were imported as duplicates


  • Fixed: Some descriptions were not imported correctly
  • Tested with WordPress 4.5.2


  • Fixed: Compatibility issues with Magento 1.3
  • Tested with WordPress 4.5.1


  • Tested with WordPress 4.5


  • Fixed: Notice: Undefined index: short_description
  • Fixed: Column ‘post_excerpt’ cannot be null


  • Fixed: Products not imported. Error: “WordPress database error Column ‘post_content’ cannot be null”


  • Tested with WordPress 4.4.2


  • Tested with WordPress 4.4.1


  • Fixed: Fatal error: Call to undefined function add_term_meta()


  • Fixed: Better clean the taxonomies cache


  • Tweak: Optimize the termmeta table


  • Tweak: Use the WordPress 4.4 term metas


  • Tested with WordPress 4.4


  • New: Compatibility with Magento 1.3


  • New: Add a link to the FAQ in the connection error message


  • New: Add an Import link on the plugins list page
  • New: Change the translation domain name to be compliant with the WordPress translation system
  • Tweak: Code refactoring


  • Fixed: Refresh the display of the product categories
  • Fixed: Error: 1054 Unknown column ‘e.store_id’ in ‘where clause’


  • Fixed: Duplicate images
  • Fixed: Avoid a double slash in the media filename
  • Fixed: Import the original category name instead of the translation
  • Fixed: Notice: Undefined index: url_key


  • New: Compatible with Magento 1.4 to 1.9
  • New: Support the table prefix
  • Fixed: Don’t import the child products as single products


  • Tweak: Change the range of get_attribute_values()
  • Tweak: Make the argument $required_attributes optional
  • Premium version released


  • Tested with WordPress 4.3.1


  • Initial version: Import Magento product categories, products, images and CMS