WooCommerce CSV Import – Some Notes

Phew! Just finished migrating 20,000 products to a new WooCommerce shop. Raised a bunch of tickets with WooThemes too, through their incredibly sucky “UserVoice” integration, pretending to be a ticket system (but that’s a winge for another day).

The import was interesting, too say the least, and I thought it a good idea to post some tips here. I am probably not going to talk about the really obvious stuff, but will touch the areas where our use-cases are outside the norm of what WooCommerce is expecting. Whether that makes us a special case, or whether WooCommerce is just not ready for what people will throw at it, is up for debate.

On the whole though, everything worked mostly great. What I am dealing with here is the WooCommerce Product CSV Import Suite plugin. This plugin seems to have half a dozen different names, depending on where you look at it, but it is essentially this plugin: http://wcdocs.woothemes.com/user-guide/extensions/product-csv-import-suite/

SKUs – Use Them

The first thing to note, and this applies to just about any system you are importing data into, whether a shop, a CMS or a CRM – use an external primary key for your records.

The standard primary key for inventory – the stuff in the shop – is the SKU, or Stock-Keeping Unit, is the unique identifier for every piece of inventory, every product on the shop. It is important to use, because it will be the only way you can link products that have been imported to products in your external dataset. The reason that is important, is that an import will not be a simple one-pass process requiring no tweaks or updates. I can guarantee that.

With an SKU against imported products, you have a record in your source spreadsheet of what has been imported, and you have the ability to update those same products, in full or partially. Adding images to products or setting their shipping class or tax status are a few examples of the kind of updates you may want to do.

Importing Images

After I had imported all my main product details, I needed to import the images.

The details I had for the images were the URLs for each, and the SKU for they product they linked to. There was just one image per product, so I did not have to worry about merging several into a single record.

The way images are imported in WooCommerce, is that the image is fetched from the URL, placed into the WordPress uploads folder, then thumbnails and other sizes are created as as needed. Usually this will be the basic sizes that WordPress has set up (medium, large and thumbnail) plus any sizes that WooCommerce has set up, which will amount to a further three out of the box (shop_single, shop_thumbnail and shop_listing). WordPress will only create the additional sizes where it can downscale the original image, but you don’t have to worry about that at this stage.

So I set up a CSV file containing two columns: the “SKU” and the “images” for all the URLs. Importing them can be slow, and often halted due to running out of memory, but it can be restarted and it skips those products that already have the image set.

Now, this is where I hit the first problem. The Import Suite pluginΒ  will name each image according to the post_title and the image number. The post title has the image number as a suffix, with the main image being “{post_title} 1″, with the number counting up for subsequent images.

What I got where ten thousand images with the name ” 1″. Doh. The reason is that the “post_title” is expected to be in the CSV import file. Even if the image is being linked to a product that already has a title, the plugin does not go fetch that title to use for the image. Instead it just blindly assumes the “post_title” (i.e. the product title) has been supplied.

So why is this lack of name a problem? It is a problem when you want to link an image to a product. For example, I found some products came in different versions, with the same image, except that some images were of a higher quality than others. By removing the “featured image” from the product having the lower quality image, it should then be possible to find and link the higher quality image. Except, you cannot search 10,000 images all called ” 1″ and get a direct hit. The images all needed their own full names, derived from the products they were linked to, in order to make the search useful.

I didn’t load the images again, as that would have taken days. Instead I updated the database directly. Here is the query I used to generate the UPDATE statements to copy the product titles to the images:

SELECT CONCAT(

'UPDATE wp_posts SET post_title = ',
''', 
REPLACE(product_posts.post_title, ''', '\''),
image_posts.post_title, ''',
' WHERE id = ', 
image_posts.id, 
' AND post_title = ' 1''
';'
) AS update_query 

FROM wp_posts AS image_posts

INNER JOIN wp_posts AS product_posts
ON product_posts.id = image_posts.post_parent

WHERE image_posts.post_title = ' 1'
AND image_posts.post_type = 'attachment'
AND image_posts.post_mime_type= 'image/jpeg';

If you have multiple images for each product, then change “= ‘ 1′” to “in (‘ 1’, ‘ 2’, ‘ 3’)” etc,

I have raised this as an issue with WooCommerce, so we will see if it is something worth fixing.

That fixed the first 10,000 images that had been loaded before I noticed this problem. For the remaining 6,000 I added the “post_title” field to the CSV file, and populated it with the titles of the products, looked up against the SKU from the main products spreadsheet. This is where I hit the second problem.

A number of images I had, referred to SKUs that had not been loaded into the shop, for valid reasons. When doing a merge import, the importer looks for a product with the given SKU and if it does not exist, it creates a product. This was fine while the images CSV file had no post_title, since the post title is mandatory for a product, and so the importer was skipping other these records. Now with a product title in there, it was creating the products for images that really should not have been on the system. Yes, data migration is messy, and often data is dirty no matter how much you try to clean it.

So, all those extra products were removed through the WooCommerce admin pages. They were all products with no price, so were easy enough to identify. I think the “merge” option when importing needs a tickbox so you can tell it whether to create products for an SKU that does not exist, or just skip over them. SugarCRM has this same issue – it will *always* create a new imported record that it cannot update.

Splitting CSV Files

Now, I mentioned restarting imports that failed due to memory issues. The importscan skip over the records that have already been imported or merged, but that takes time, and can get very slow with large CSV files.

So the way to handle this is to split the CSV file up into smaller chunks. I found a great Windows tool for doing this, and that can be found here. The thread that describes CSVSplitter.exe is here on the author’s site. It is small, fast, and just works wonderfully.

Update: I just had the splitter fail on me. It seems to halt if it comes across a field that spans more than one line. That is, a field surrounded by quotes, but with a newline character in it. Excel generates and reads those kinds of fields without any problem, so it is not as though they are uncommon. It is just something to be aware of. The importer reads “CSV files”, which comes with it a lot of undocumented assumptions about the CSV file.

The thing is, there is no standard for CSV files. There are some accepted ways of handling some exceptions, and other accepted ways of handling the same exceptions. CSV importers or readers just need to be very clear about how they are going to interpret the file. Don’t leave any assumptions up to the user to guess at. They seldom do though. For a case in point, just try to find a definition of how Excel generates its CSV files. It’s hard going, wading through many other people’s descriptions of how they think it works.

Charactersets

This one caught me out. It is something that you may not notice until much further down the line.

The data was supplied in MS Excel files. I uses Excel to structure the data then export it. Now, the exported files looked great in my editor of choice, EditPlus, but when they imported I got many strange characters.

It was immediately apparent this was a characterset issue. The website was set up to use UTF-8, as most websites should be these days. Excel will export CSV files in ANSI format only. EditPlus was able to open an ANSI format file and save it as a UTF-8 file, so all looked good.

Other ways to handle this would be to use OpenOffice or LibreOffice for the data spreadsheets, both of which can handle UTF-8. Why MS Office 2010 can’t, is a mystery to me.

Edit: it looks like the CSV Import Suite attempts to convert to UFF-8 (from ISO8859-1) when it imports, but I suspect it is not detecting the input encoding correctly. Working only two encodings, ISO8859-1 and UTF-8, is a bit limiting anyway, but I suspect the issue there is coding for PHP5.0, as is the WordPress way. There are much better encoding objects in PHP 5.3+ that will change encodings between any two types.

Import Speed

This was an interesting one. I was finding that it was taking up to a minute to import each product. That is a crazy amount of time, and something was very wrong.

Raising it with the plugin developer, it turns out it was an issue in WooCommerce itself: each taxonomy term that was added, resulted in the taxonomies being reordered. That was taking an age, because I had 6,000 taxonomy terms on the site.

The fix was implemented on this change:

https://github.com/woothemes/woocommerce/commit/e04a0b7a237bbc052764aafc0397781703861c4a

While you are waiting for WooCommerce 1.7, putting the changes detailed there will help speed up your imports.

36 Responses to WooCommerce CSV Import – Some Notes

  1. shawn 2012-10-28 at 06:05 #

    Thank you VERY MUCH for this detailed post. I have been tasked with importing a large storefront into woocommerce myself and before accepting the task I have been reading all day on google the problems people are having. Yours is the first article that not only explains some of the pitfalls but gives good solutions. You definitely saved me some time.

    Would have been nice to see the finished product though πŸ™‚

    • Jason Judge 2012-10-28 at 10:02 #

      Well, the shop has been up for just a couple of days, and is still going through many tweaks. Here you go:

      http://www.soulbrother.com/

      Glad this has been of use.

      • shawn 2012-10-28 at 10:53 #

        Wow, that is a fantastic looking cart! Great job… I’ll look around a bit more later as it’s 4am and I’ve been playing around with the new plugin you mentioned all night.

  2. shawn 2012-10-28 at 10:51 #

    I’m curious, have you tried to do a product export from woothemes using the import suite extension?

    I got the extension and setup a demo woocommerce site using their own xml import file.

    When I do the export, I end up with a file that has a bunch of errors in it.

    example:
    https://dl.dropbox.com/u/2045194/woocommerce-product-export-messedup.csv

    Now that is simply a brand new install of woocommerce where I used the built in import xml sheet. I then used the csv export plugin and exported the products and ended up with what you see there.

    The reason I ask is because I can’t seem to locate a ‘buy now’ link in the exported product xml.

    I am using this plugin http://www.wpallimport.com/ to take that woocommerce exported csv sheet and use that to create a new post using this plugin. Problem is I need a ‘buy now’ link to send the user back to the woocommerce cart to purchase.

    sorry to be rambling, hard to explain

    • Jason Judge 2012-10-28 at 15:19 #

      Shawn,

      The biggest problem I have with exporting is running out of memory. I have 20,000+ products and cannot export more than a few hundred at a time. I just don’t think the import/export was ever designed to scale.

      Your specific error is something you would best approach WooCommerce about. I’ve not encountered that error, and cannot begin to guess what it means. [Edit: However, it does look like it is encoding strings to UTF-8, so maybe make sure what you are importing is already UTF-8, so no conversion is necessary.]

      The best you are going to get to a “buy now” URL, is to link people to the individual product page. That will be:

      http://example.com/shop/product-slug

      The product slug is in your export file as the “post_name”. It is a unique identifier for the product. The “add to cart” button does a lot of AJAXy things that I have not followed through, so being able to add something to a cart through a single URL will probably need a little investigation. There is a GET parameter that will add a product to the cart, but to my mind it is the wrong way to implement that anyway; GET parameters are never supposed to change the state of a session.

  3. Mike 2012-10-29 at 12:53 #

    Jason,

    Im curious if you have found after any of your Imports that all the sudden the query time and page load time for a ‘post’ or product LAGS heavily. Basically the scenario is this:

    Site Runs fast and fine.
    Import using Merge or New with 100, 200, 500 or 1000 products the same thing will happen.

    After the import of a random CSV file from a batch, and at a random instance, after the import it will take over 5 seconds for a product page to load… now all other pages, like homepage, contact, checkout etc are fine.. its like the query of the product page is now dead. This includes all older products that were not touched during import.

    I have tried to pin this down but it is so random. The CSV file can be different… it may not happen till after the 4th or 5th or 1st CSV file I import. I can import few or many fields, with or without images, etc…

    Its painful, as after every ‘bad’ csv import I have to drop the tables and reimport the sql dump to get the site back to where it was and smokin.

    Have you seen this in your large product set?

    • Jason Judge 2012-10-29 at 13:15 #

      Hi Mike,

      I kind of had a feeling something like this was happening, but it was transient, so I put it down to caches being rebuilt. The site always proved to be slower after an import, but given half an hour, it was back up to speed again. Have you tried leaving it for a while to see what happens, or checked what was happening on the server (e.g. CPU allocated to the MySQL process)?

      Otherwise, the kinds of speeds you are describing are normal for our 20,000+ products. At least, I assumed this was normal. Maybe now I’ll have another look πŸ™‚ There aren’t many tables involved, so it can’t be too difficult to find weird things in the imported data (famous last words…).

      It is worth installing the debug bar and take a look at what queries are being executed in the page, and how long they take to run. The standard “related products” query, for example, was taking a horrendously long time to run, so we disabled that. There is a setting you need to add to config.php to capture all queries for the debug bar – we have set that up so it is only set to “true” for our IP address.

      http://wordpress.org/extend/plugins/debug-bar/

      — Jason

  4. David 2012-11-01 at 15:31 #

    What I dont understand is the process of importing related and upsell products. You are required to put the product id into the upsell field on your csv file. But you will not know the id of the products your related products since the id is not created until the products are already imported. There is no way I could import several hundred upsell products, export them, get the id of all those products, and then in my main product csv input all the related product ids manually. You should be able to import all your products at the same time, and use the Sku to specify the related items. Woo Support would not help me as I do not have a membership anymore. I did buy $300 in plugins from them but I guess that doesnt count.

    • Jason Judge 2012-11-01 at 17:27 #

      Yes, I agree that is not very well thought through. The SKU is really the identifier that should be accepted here, but it looks to me like the SKU was added later in the shop’s development and not from the start in its core. The fact that the versions of the CSV Importer – up until I reported the bug a few weeks ago – did not properly treat the SKUs as a unique ID for the products (and now I have over a thousand almost-duplicate products to try and sort out) just highlights this.

      I also thought that paying for these products would mean we were getting reliable and well-tested code. But alas, we *are* the testers. It is all beta code so far as I am concerned, and the royal f*ck-up that WooThemes made in moving their support to UserVoice just added to our frustrations. Personally spending WEEKS of my personal time tracing and fixing bugs, and sorting out data that has been messed up by these many bugs, is not what I signed up for when paying for these products.

      Live and learn.

    • Jason Judge 2012-11-01 at 17:35 #

      Just a little aside, if you are able to export all the SKUs and IDs into a worksheet in your spreadsheet, then (in Excel – not sure of the OpenOffice equivalent function) you can use VLOOKUP() to map one onto the other.

      So if you have an SKU, VLOOKUP() will be able to match that to an ID in a worksheet containing a list of IDs and SKUs. You should not have to retype them by hand. It does still involve importing in several steps though, to import the main items first, then a second import to update the related products list.

      I can put a sample spreadsheet together if that is any use.

  5. Bas 2013-01-15 at 09:19 #

    Hi Jason,
    Great info here, thank you very much.
    Now my question. I am trying to upload about 4500 products and have an excel file to do that using the woocommerce CSV suite product. I have made the following changes to the config.php file to increase the memory and timeout.
    define(‘WP_MEMORY_LIMIT’,’256M’);
    ini_set(‘max_execution_time’,6000);
    I also changes this file which as you say in the blog stops the resorting of all the products after every single product is uploaded which takes up a lot of time.
    https://github.com/woothemes/woocommerce/blob/master/admin/woocommerce-admin-functions.php
    My question is. You say that you can restart the upload once it times out. How do you do that.

    • jasonjudge 2013-01-15 at 10:45 #

      Bas,

      Restarting is just a case of starting again, with an “insert” import (i.e. not a “merge” import”). The process will whizz through the records that have already been imported and continue importing when it gets to a record it does not recognise.

      However, that will still use [some] memory, will still take some time, and so is still likely to fail after a smaller number of records have been loaded. For example, you may get 80% of your records loaded on the first go, but then only a further 5% on each subsequent load.

      Better is always to split the file up into smaller chunks so it does not fail. That will more likely get your 4500 records loaded in less time. There are tools available to do that, but few – if any – handle quoted fields with newlines in.

  6. Bas 2013-01-18 at 17:47 #

    Hi Jason,
    I have two options when i try to load CSV data: Import products and Merge products. For a new upload i use Import and for one where the products already exist i use merge. For merge you have to have the SKU number i believe. For import i also tell the system the SKU number. How do you do an insert ?

    • jasonjudge 2013-01-18 at 21:56 #

      “Insert” is a technical term that means “put a brand new item in”, which is why I used that term. So for “insert” read “import”.

      Personally I believe there should be three different import modes: create only (skipping any that already exist), update only (skipping any that do not exist), and update-or-create (update if it exists, otherwise create a new item). I have had need for all three of those modes at various times.

  7. Jim 2013-05-18 at 06:04 #

    Hello, I was wondering how many rows of products you were able to import at a time? Currently I can only import 998 products in one go, so I have to split my CSV files into rows of 900 or so but less 998 to make it easy.

    My question is, has anyone found a way to change that limit? I assume it is within a configuration file somewhere, so I was thinking to change it to 4,000 or whatever (depends on my supplier) and increase my execution time for the job and my memory usage on the hosting.

    However I do not know how to begin increasing that 998 limit to a higher number and wondered if anyone knew.

    Thanks,
    Jim.

    • jasonjudge 2013-05-18 at 10:24 #

      That’s a good question, and unfortunately there is not a straight-forward answer to it.

      The main limit is memory, the memory that each PHP page is allowed to use. Mine was set to 256M and that allowed me to import perhaps 1000 products at a time.

      The problem comes when you break the limit – loading the same file again only allows you to continue a few more records. In order to work out which products have already been loaded, WooCommerce starts at the beginning of the import file, and loads each product up from the database to compare, and that also uses memory.

      What the import needs to do, is keep track of memory, and STOP when it is getting tight and close NICELY instead of just crashing. What a nice halt could do is tell you how far it got, so your next load can continue from that point and not have to start from the beginning again. If the load had a “skip N records” option, then you could run it again on the same file and continue from there. That way you would not even need to split the file up – we are only splitting it as a workaround for the fact that the import crashes unnecessarily. The import solution in the meantime is just not scalable, which is a shame, because it is not a big effort to fix it.

      What I’ve found, is that fixing WooThemes premium products (submitting bugs and patches) is a thankless task, so I tend to steer away from that now. However, I did start to put this simple project together as a basis for handling this type of process:

      https://github.com/academe/memcheck

      That will monitor free memory after each record load (giving it as a percentage or an estimate of the number of further iterations that it thinks you will be able to do before memory runs out), so the loader can make a decision on whether to attempt loading another record or to stop. I’m not using it at the moment, but do have some projects where it will come in handy.

  8. Karen 2013-06-03 at 04:17 #

    THANK YOU for the image query building query. When I imported, the importer downloaded all the images (multiple per product) and put them into the media library and associated them with the product, but they didn’t show up on the product page as it only put one image per product into the product’s gallery. I was able to start with your query and mash something together to associate the other lost images with the gallery. What a mess!

    Bizarre that you can’t set the post_names, which makes switching over from another e-commerce solution annoying since one naturally wishes to preserve one’s URLs. Fortunately, you can just set them directly, much like you did with the image properties.

    Glad to see I’m not the only one tearing my hair out! Thanks again for exposing the innards.

  9. Steve Woody 2013-08-12 at 04:57 #

    Great Article thanks for the share, I’m just in the process of importing over 20,000 products into woo commerce and already purchased the plugin from your recommendation. They should offer affiliates πŸ˜‰

    I have two questions that you might have faced.

    When importing products I did a test batch of 1000 and it crashed wordpress. I upped the PHP memory but the site was not well, Did you encounter memory issues relating to the performance of the website once all the products were in? Im worried that the site may not perform well even on a dedicated server.

    The second question was regarding navigation.

    I wanted to use the Categories widget but its clunky and with 100’s of categories I dont need all the parent options, Just child of the current parent would be great. A work around would be to create custom menus and add them as required. I think that would take months and not even sure if wordpress would handle 100’s of custom menus each with several different categories attached.

    Just curious on your thoughts and once again thanks for the post. Very helpful.

    • Jason Judge 2013-08-12 at 09:24 #

      Hi Steve,

      The importer has come on leaps and bounds since I wrote this post. Originally it tried to import everything in one go and would run out of memory every 500-1000 records it imported. Now it uses JavaScript at the front end to import in small batches using multiple calls to the server, which makes a lot more sense (it is what SugarCRM has been doing for years).

      Performance can have a hit when there are many thousands of products. The problem tends to lie in the multi-faceted category widgets. I had a colleague who had a go at rewriting that widget and concluded the issue was basically down to the way WordPress stores its taxonomies. The WP taxonomy storage is great and well thought out, but does not support doing dynamic counts particularly well, especially when it is multi-faceted (counts that change dynamically in context, as you drill down through the category hierarchy). The best we could do to make that quicker was a plugin to cache database queries (cache the queries, but not the page content, otherwise baskets cannot .be carried between pages). “W3 Total Cache” worked for us, but it is worth experimenting as these cache plugins are under heavy development.

      As for memory issues with large numbers of products in the shop, no, that has not been a problem for us. The bottleneck is in the speed of the database queries, and not memory, since WP always limits any page of posts to a limited number (e.g. 20) and it is fetching the posts that eat into the memory.

      For the navigation, there are plugins around that will give you a lot of control over the category trees that are presented on the front end – i.e. where they are rooted and what branches are trimmed. I don’t have any particular recommendations on those plugins though. “Menu Rules” – http://wordpress.org/plugins/menu-rules/ – is good if you want to keep the top menu items highlighted in context with the chosen categories however.

      • Jason Judge 2013-08-12 at 09:29 #

        Just an addition, some category and page navigation plugins provide shortcode tags to select the navigation trees (pages, categories etc,). Those shortcode tags can be uses in widgets as well as post bodies. “List Pages Shortcode” plugin does this for pages, and I find it great for adding contextual menus all over the place. Something similar for categories does exist, but I can’t remember where I saw it.

  10. Jim Lillicotch 2013-08-21 at 14:16 #

    Have a bit of a problem
    Imported over 3,000 items 100 at a time. Worked great, thank you

    Now every product has a Sale Sticker on it. If I take a single product, go to edit and click *update*, it goes away

    I don’ want to just hide it, but 3000 times would be too much

    • Jason Judge 2013-08-27 at 22:42 #

      Does bulk update work on the products to unselect the sale sticker? You can set the screen options to display 200 products at a time and update 200 at a time. I’ve not tried it, but it is the first thing I would look at.

  11. Steve Eldridge 2013-10-05 at 20:59 #

    This post just saved me from aborting a year’s worth of work to consider other e-commerce solutions. I had just spent a week re-writing the import suite to improve the performance so that custom taxonomies that are not hierarchical would have a transient variable stored as arrays to improve the update speed of new terms. However it still failed.

    The root of the problem includes the fact that the CSV Import treats custom taxonomies that are not hierarchal as still requiring a parent which is not required and an unnecessary step.

    I stripped this function out and redirected these terms so that this unnecessary step was skipped.

    And then it failed again.

    Woocommerce 1.6 still had the old resorting routine and each new term (now over 5,000) were being sorted each time a new term was added.

    Your fix changed it and now I’m back to solving problems that are not part of the core of Woocommerce.

    Thank you!

    • Jason Judge 2013-10-09 at 10:54 #

      Glad it was useful πŸ™‚

  12. Scott 2013-12-18 at 00:01 #

    I have an affiliate web site that I’m trying to finish. I am using WP All Imports to import CSV files. When you go to the product page: http://wickedsmartwear.com/product-category/tops/ it has the products with a “Read More” tab, when you click on an item, it brings you to another page that descriptions the item, then you click on the buy button and it brings you to the merchant’s web site with the product. Do you know how to change the “Read More” link so it’s a direct link to the product on the merchant’s page, instead of bringing you to a page that describes the item on my page? The way it is set up now, you get linked to about 4 pages before you get to buy the product. I’m just trying to cut down on the number of pages it goes through to buy the product.

    Thanks.

    • Jason Judge 2013-12-18 at 01:08 #

      There are two links on your product listings – one on the “read more” button, and one on the image.

      The image link can be found in wp-content/plugins/woocommerce/templates/content-product.php Look for this line and change the link there:

      <a href="<?php the_permalink(); ?>">

      First copy that template to your theme, under wp-content/themes/{your-theme}/woocommerce/content-product.php and edit that copy. WooCommerce will use the template in your theme over the one in the core plugin. If you edit the core plugin, then your edits will be lost when you next update WooCommerce.

      See here for some more tips:

      http://docs.woothemes.com/document/template-structure/

      • Jason Judge 2013-12-18 at 01:17 #

        I’m not sure where the “read more” link is handled, but just search for that text in the code-base. It may be in a template, but may not be. It could also be echoed in a hook somewhere, and you would then need to unhook the existing link and rehook your own in.

  13. Eugenio 2014-03-05 at 09:10 #

    Hi,
    Nice article thanks! What if WP really slow down only after one import, and does not load the shop page? Would it be which kind of error? Products are loaded anyway.. and the memory updated up to 512M.. any suggestion?

  14. SEO Specialista 2014-03-12 at 15:58 #

    Hey great article! Thanks, its pretty hard to import files with woocommerce.. also all import plugin seems to work fine πŸ™‚ thanks again for sharing useful tips! πŸ™‚ Eugenio SEO Specialist (Social Engagement)

  15. raj kumar 2014-04-25 at 05:01 #

    hello
    what 7is the field set to import the brands with csv Example : _weight (Weight)
    _length (Length)
    _width (Width)
    _height (Height)
    _sku (SKU)
    _brands (what can i write here)…..please help me lot of confused i have facing//
    Thanks in advance////
    actuly when i am importing my csv file , my brands column coming blanks..

    Thanks

  16. Sharan 2014-05-09 at 20:19 #

    I need some help with the new e commerce website im biulding. I need to import all the data with images from excel mysql and access. Is that possible. Where can i find an appropriate plug in for that

    • Jason Judge 2014-05-15 at 10:51 #

      If you are using WooCommerce, then the CSV Import Suite is a good place to start. There are a number of free WooCommerce import tools around too.

      Images generally need to be uploaded to some place first, and their URLs (web addresses) referenced in the CSV file. The importer will then fetch the image and import it into the local shop.

  17. Shubham Bansal 2014-08-02 at 18:21 #

    Just a query, I have more than 80,000 products. Will woocommerce be able to handle them?

    • Jason Judge 2014-08-05 at 17:08 #

      Yes, it should, but not without quite a lot of work. Caching would be very important, and you would have to be very careful about how much metadata you hold against each product. Also navigating the products using a multifacted approach may be quite slow.

      In short, yes, but it will need some work at quite a detailed level to get any kind of speed.

      • ade 2014-10-30 at 06:04 #

        What’s the meaning of “Already Processed”?:

        I imported 5000 products and after the import, it asked me to start mapping headers. I tried what I could do, but after submitting the mapping process, I saw it skip o many products and labelled them “already Processed. Eventually, I could only see 535 products out of my 5000 products.

  18. Dragan 2015-01-30 at 08:59 #

    Hi Jason,

    I have problems with MERGE VARIATIONS. I am updating stock and price for existing products, and problem is that import suite doesn’t set attribute size for product SKU it leaves it ANY SIZE. All variations are for size. It set SKU for size, stock, price but do not assign value for size.

Leave a Reply