eBay to WooCommerce product CSV converter

In short: eBay's Active listings report (Seller Hub, Reports, Downloads) is a CSV of your current listings, with columns such as Item number, Title, Variation, Custom label (SKU), Available quantity, Start price and Current price. eBay does not say whether each variation gets a row of its own, so both layouts are read. It has no description, photo or weight columns. WooCommerce's built-in product importer reads its own column labels, one row per product and one per variation, with every variation pointing at its parent. Drop the eBay file below to get one from the other. It is converted on your device and never uploaded.

Convert eBay to WooCommerce

eBay to WooCommerce

Your eBay Active listings report CSV.

Your file stays on this device

It is read and converted by this page, inside your browser. Nothing from the file is uploaded, and the tool keeps working offline once the page has loaded.

No file handy? or download the sample to look at it first.

The products in the sample are invented. It is converted on this device, the same way your own file would be.

Loading the converter...

What moves: titles, variations (each with its own SKU, price, stock and UPC), prices, stock, SKUs, eBay category names, and in Shopify files also UPC, EAN or ISBN barcodes. The report has no descriptions, photos or weights, so products arrive without them. What does not: customers, orders, reviews, gift card balances, blog posts, pages and URL redirects are not in a product export, so CatalogHop does not convert them.

1. Export your products from eBay

  1. In eBay, open Seller Hub and go to the Reports tab, then Downloads.
  2. Click Download report. Choose the source Listings and the type All active listings, then download. eBay shows a summary of the report's columns on the right before you download.
  3. Upload the CSV as it was downloaded. If you open it in Excel first, eBay says to format the Item number column as a number with 0 decimals before saving, or the 12-digit item numbers get rounded and variations can no longer be grouped.
  4. Do not use the Edit price and quantity template from the Uploads page. eBay lists it in Downloads under the same label, All active listings, but it is a different file, and the converter refuses it with a message.

What to know about the eBay file

  • The report has no description, photos or weight. eBay's list of the report's columns has none of them, so every product is written without them and the converter says so. Add descriptions and photos in the new store, or the products import with a title, price and stock only.
  • eBay does not document how this report lays out variations, so the converter handles a listing row followed by variation rows, and variation rows alone. Rows with the same Item number are one listing. A row with a single combination in the Variation column, such as Size=M, becomes a variant with its own SKU, price, stock and barcode. The listing's own row, either blank in Variation or listing all the values the way eBay's templates write it (Size=Medium; Small), gives only the title, and its SKU becomes the WooCommerce parent SKU. A variation row with a blank Item number is added to the listing in the row above, and the converter names those rows. If a listing has only one row that lists several values, it is written as one product without options, and named.
  • eBay does not say how the Variation column is written in this report. The converter reads it the way eBay writes variations in its Seller Hub templates, Name=Value pairs separated by semicolons, such as Color=Blue;Size=M, so each name becomes an option. Any other value, or more than 3 option names, is kept as one option named Variation with the value as written, and the converter names those listings.
  • Fixed price listings: the Current price is written as the price, because it is what buyers pay now (eBay says it may include a sale). When the Start price is higher, it goes in Shopify's Compare-at price, or in WooCommerce's Regular price with the current price as the Sale price, and the converter names those listings so you can end the sale. A Current price above the Start price is written as it is and named. When Current price is blank, the Start price is used.
  • Auction-style listings become drafts, because a store has no bidding. They get the Buy It Now price, or the start price when there is none, and are named so you can set a price and publish them. Reserve prices, bids and watchers do not move.
  • Available quantity, the number left after sales, becomes tracked stock.
  • eBay category 1 name and eBay category 2 name are the last level of the eBay category, not a full path. WooCommerce files get both as categories; Shopify files get category 1 name as the product type (the Type column).
  • P:UPC, P:EAN and P:ISBN become the Shopify barcode, the first one filled in. "Does not apply" is skipped. WooCommerce's importer does not map barcodes on its own, and the converter says so.
  • Condition (New, Used and so on) has no column in a Shopify or WooCommerce product file. When a listing is not new, the converter names the conditions and how many listings have each, so you can put it in the title, description or a tag.
  • Not carried over, and named when the file has them: Item number, eBay Product ID (ePID), Listing site, sold quantity, views, watchers, bids, start and end dates, category numbers, reserve price and the trading card grading columns.
  • eBay's Unsold listings report and its upload templates (they have an Action column, and the price template an #INFO row) are refused with a message, so an ended listing or a template is not converted by mistake. That includes the Edit price and quantity template with its #INFO row and Action column deleted, recognised by its Relationship columns. An Orders report is not a listing export, and eBay gives no column list for it, so it is not recognised.
  • Built from eBay's Seller Hub Reports guides (the list of the Active listings report's columns and the upload templates guide). eBay publishes no sample report, and this was not verified against a real download. It was not tested by importing into a live store.

What the WooCommerce file gets

  • The column labels of WooCommerce's built-in importer (checked against WooCommerce 11.2.2), so columns map automatically.
  • Variable products with their variations, each variation linked to the parent by SKU. A parent SKU is made from the URL handle when the source has none.
  • Weights converted to your WooCommerce weight unit, with the matching column label such as Weight (kg).
  • Repeated SKUs left blank on the later rows, because WooCommerce rejects duplicate SKUs.
  • Products hidden from the online store written with catalog visibility hidden, and products that need no shipping written as virtual.
  • Attributes as product-level (not global) attributes.

2. Before and after

Before: the eBay Active listings report CSV

Item number,Title,Variation,Custom label (SKU),Available quantity,Format,Currency,Start price,Auction Buy It Now price,Reserve price,Curr...
100000000001,Sample Ceramic Planter,,SAMPLE-PLANTER,5,Fixed Price,USD,24.00,,,24.00,2,3,0,25-Mar-25 10:57 PDT,,Planters & Pots,20614,,,Ne...
100000000002,Sample Cotton Tee,,SAMPLE-TEE,,Fixed Price,USD,,,,,4,7,0,02-Apr-25 09:00 PDT,,T-Shirts,15687,,,New,,US,,,
100000000002,Sample Cotton Tee,Color=Blue;Size=M,SAMPLE-TEE-BLU-M,3,Fixed Price,USD,18.00,,,18.00,,,,,,,,,,,,,000000000017,,
100000000002,Sample Cotton Tee,Color=Blue;Size=L,SAMPLE-TEE-BLU-L,2,Fixed Price,USD,19.00,,,19.00,,,,,,,,,,,,,,,
100000000002,Sample Cotton Tee,Color=Red;Size=M,SAMPLE-TEE-RED-M,4,Fixed Price,USD,18.00,,,15.00,,,,,,,,,,,,,,,

After: woocommerce-products.csv

After: first rows of woocommerce-products.csv
TypeSKUNamePublishedIs featured?Visibility in catalogTax statusIn stock?StockBackorders allowed?Sale priceRegular price
simpleSAMPLE-PLANTERSample Ceramic Planter10visibletaxable15024.00
variableSAMPLE-TEESample Cotton Tee10visibletaxable
variationSAMPLE-TEE-BLU-MSample Cotton Tee - Blue, M1taxable13018.00
variationSAMPLE-TEE-BLU-LSample Cotton Tee - Blue, L1taxable12019.00
variationSAMPLE-TEE-RED-MSample Cotton Tee - Red, M1taxable14015.0018.00
simpleSAMPLE-CAMERASample Vintage Film Camera-10visibletaxable110120.00

12 of 29 columns shown (empty columns hidden, 11 more with data).

What the converter reported for this sample

4 products read, 4 written.

  • Check this: eBay's Active listings report has no description, photos or weight (they are not among its columns), so all 4 products were written without them. Add descriptions, photos and weights in the new store, or the import will create products with a title, price and stock only.
  • Check this: One listing is auction-style. A store has no bidding, so it was written as a draft with the Buy It Now price (or the start price when there is none): "Sample Vintage Film Camera". Set a price and publish it in the new store.
  • Check this: One listing has a current price below the start price (eBay says the current price may include a sale). The current price, what buyers pay now, was written as the price, and the start price as the compare-at price in Shopify, or as the regular price with the current price as the sale price in WooCommerce. End the sale in the new store if it is over: Sample Cotton Tee (Red / M) (15.00, was 18.00).
  • Check this: Shopify and WooCommerce product files have no condition column, so item conditions were not carried over: Used (2). Put the condition in the title, description or a tag if buyers need it.
  • Not carried over: These eBay columns have data but no place in the new file, so they were not carried over: Sold quantity, Watchers, Bids, Start Date, eBay category 1 number, Listing site, Reserve price, End date, eBay category 2 number.
  • Not carried over: Barcodes were not carried over: WooCommerce 11.2 does not map the GTIN column automatically. Add them in WooCommerce after import if you need them.

Sample products made up for this page, laid out exactly like a real eBay export. The "after" file and the notes were produced from it by the same converter this page runs.

3. Import into WooCommerce

  1. In WordPress, go to Products, then All Products, and click Import.
  2. Choose woocommerce-products.csv and click Continue.
  3. On the column mapping screen, check that each column is matched. If the weight column is not matched, pick Weight for it.
  4. Click Run the importer. WooCommerce shows a count of imported, skipped and failed products at the end.

Before you import everything

  • Vendor and barcodes are not written: core WooCommerce has no vendor column, and the barcode (GTIN) column does not map automatically in 11.2.
  • Weight column labels other than Weight (lbs) are taken from WooCommerce's source code rather than a sample file. If yours is not matched on the mapping screen, match it by hand.
  • Images are imported by WooCommerce downloading each link, so the links must be public.
  • Import a handful of products first, open them in your store and check variants, prices, stock and images. Then import the rest.

Already have a WooCommerce CSV that fails? Use the WooCommerce CSV checker.

Questions

Why do my eBay products have no photos or descriptions in WooCommerce?
eBay's Active listings report does not contain them, so there is nothing to carry over. The converter says so on every file. Add them in WooCommerce after import.
Do my eBay variations move to WooCommerce?
Yes. A listing with variations becomes a variable product, with one variation for each variation row, keeping its own SKU, price and stock. The listing's own row gives the parent SKU. A variation on sale gets its start price as the Regular price and its current price as the Sale price.
Do eBay categories move to WooCommerce?
Yes, as names. The report gives the last level of each eBay category, such as Film Cameras, not the full path, so each becomes a top-level WooCommerce category. Rename or nest them after import if you like.
Is my file uploaded anywhere?
No. The page reads the file with your browser and converts it there. The only thing the site records is an anonymous count: which converter was used, a rough row count, and whether it worked. The privacy page lists every field.
Will the import definitely work?
Nobody can promise that from a file alone. The converter follows each importer's documented rules, leaves out products that would be rejected and tells you about them, and does not check the WooCommerce file before download, so run it through the WooCommerce CSV checker on this site. Import a few products first, look at them in your store, then import the rest.

Sources

Related converters