*How-to › Product setup*

# How to Import Products from a CSV

Add dozens of products at once from a spreadsheet. Make one product by hand, export it as your template, copy its row for each new product and import. 10 parts.

Quick links

- [How it works](https://docs.wpeasycart.com/docs/how-to-guides/how-to-import-products-from-a-csv/#how-it-works)
- [Step 1. Make one product by hand](https://docs.wpeasycart.com/docs/how-to-guides/how-to-import-products-from-a-csv/#template)
- [Step 2. Export it as your template](https://docs.wpeasycart.com/docs/how-to-guides/how-to-import-products-from-a-csv/#export)
- [Step 3. Add a row for each new product](https://docs.wpeasycart.com/docs/how-to-guides/how-to-import-products-from-a-csv/#fill)
- [Step 4. Import it, and read the preview](https://docs.wpeasycart.com/docs/how-to-guides/how-to-import-products-from-a-csv/#import)
- [Step 5. Check a few products](https://docs.wpeasycart.com/docs/how-to-guides/how-to-import-products-from-a-csv/#check)
- [Change many products at once](https://docs.wpeasycart.com/docs/how-to-guides/how-to-import-products-from-a-csv/#bulk-edit)
- [The columns you will use most](https://docs.wpeasycart.com/docs/how-to-guides/how-to-import-products-from-a-csv/#columns)
- [Importing customers too](https://docs.wpeasycart.com/docs/how-to-guides/how-to-import-products-from-a-csv/#users)
- [If it does not work](https://docs.wpeasycart.com/docs/how-to-guides/how-to-import-products-from-a-csv/#troubleshooting)

**Where to find it:** WP Admin › EasyCart › Products › Products › Import

*Before you start*

## How it works

One product by hand, one export as a template, then a spreadsheet does the rest.

### How it works

One product by hand, then a spreadsheet does the rest

**What you need.** WP EasyCart and a spreadsheet program, such as Excel, Numbers or Google Sheets. CSV import and export are in the free plugin.

**The idea.** You make one product by hand, set up the way you want the rest. You export it. That file is your template: every column is already named and formatted correctly. You copy its row once for each new product, change what is different, and import the file. Fifty products take about as long as typing fifty lines.

**The one rule.** A row with a `product_id` of 0 adds a new product. A row with a real product ID updates that product. Get this right and nothing else can go badly wrong.

**Nothing is written until you confirm.** The store reads your file first, shows how many products it will add and update, lists any problem rows and waits for you.

*Do it*

## Five steps

Make a product, export it, add your rows, import and check.

### Step 1. Make one product by hand

Products › Add product

Go to **EasyCart › Products** and press **Add product**. The **Add a product** page opens. Say what you are selling, or press **Skip the questions** for just the name, price, photos and description. Fill them in, add a photo, and press **Create product**.

Open it from the products list and set it up the way most of your products will be: the same categories, weight, tax, shipping and option sets. Everything you set here is copied to every product you make from it, so a few extra minutes now saves editing each product later.

**A new store with no products?** You can start from a file instead. In the products list, press **Import** and choose **A spreadsheet ( CSV )**. Under **No file yet?**, **Download a starter template** gives the columns a new store needs and two example products, already set to show in your store. Replace the examples with your products and go to step 4. The steps below work the same way with it.

### Step 2. Export it as your template

Tick it, then Export › Export selected

In the products list, tick the product you just made. Press **Export** in the header. The **Import & export products** panel opens on its **Export** tab. Press **Export selected**. A CSV file downloads with one row: your product.

The same tab has **Export all**, for every product in the store. The **Help** tab has the starter template and **Download every column**, the full header row with one example product. Your own export is the better template once you have a product, because it already holds your settings.

![The Import & export products panel, Export tab.](https://docs.wpeasycart.com/wp-content/uploads/2026/09/import-products-01-export-tab-v2.jpg)

> **💡 Note:** Keep the file you exported. It is your backup if an import goes wrong.

### Step 3. Add a row for each new product

Copy the row, then change what is different

Open the file in your spreadsheet. Row 1 is the column names. Leave it alone. Row 2 is your product. Copy row 2 into the rows below it, one row for each new product. Then, in each new row:

**1.** Set `product_id` to `0`. This makes it a new product.
**2.** Give `model_number` (the SKU) a value no other product has.
**3.** Change `title`, `price` and `description`.
**4.** Put the new picture’s address in `image1` (see below).
**5.** Clear the `post_id` cell. The store makes each new product its own page.

**Pictures.** Upload your pictures to **Media › Add New** first. Click a picture in the Media Library and press **Copy URL to clipboard**, then paste it into that product’s `image1` cell. `image1` to `image5` take a picture’s full web address, and the store shows it from there. If `product_images` has a value in your template, such as `ml:123`, clear it in the new rows, because a value there replaces `image1`.

**Categories.** `categories` holds category IDs, separated by commas, such as `4,7`. The template’s value carries over. To use other categories, take their IDs from the ID column of the Categories list.

Leave every other column as it is. Save the file as **CSV (comma separated)**, not as a workbook.

> **⚠️ Careful:** Every new row needs product_id 0 and its own SKU. A row that still has the template’s product_id overwrites your template instead of adding a product.

### Step 4. Import it, and read the preview

Import › A spreadsheet ( CSV )

Back in **EasyCart › Products**, press **Import** and choose **A spreadsheet ( CSV )**. The panel opens on its **Import** tab. Drop the file in or choose it. The store checks it at once and shows a preview.

**Read the counts.** The preview shows how many rows are **new products**, how many are **updates** and how many are problem rows. Adding 40 products? It should say 40 new products and 1 update (your template row, which changes nothing). Delete the template row from the file if you prefer.

**Fix anything listed.** Problems that stop the import are shown at the top, such as a column name that is misspelled, with a suggestion. Rows that will be skipped are listed with the reason, such as a SKU used twice.

Press **Import** with the number on it. A progress bar counts the rows, so keep the window open. At the end you see how many were **added**, **updated** and skipped, with the reason for each skipped row.

![The Import tab: drop a CSV, or download a starter template under No file yet?](https://docs.wpeasycart.com/wp-content/uploads/2026/11/product-importer-file-607.jpg)

![The products list’s Import button: WooCommerce, Square and A spreadsheet ( CSV ).](https://docs.wpeasycart.com/wp-content/uploads/2026/11/products-product-list-transfer-import-607.jpg)

> **💡 Note:** Try five rows first. Import them, check them, then run the whole file.

### Step 5. Check a few products

Open three and look

Refresh the products list and open two or three of the new products.

**1.** Are the title, price and description right?
**2.** Is the picture the one you meant?
**3.** Are the categories right?
**4.** Open the store in a private window and find them.

Something wrong? Fix it in the spreadsheet and import again, or see the next part. Next time, export the products you made, so each row carries its new product ID and the import updates them instead of adding them again.

*Good to know*

## Bulk edits, columns and problems

Changing products you already have, the column formats, customers, and when it goes wrong.

### Change many products at once

Export, edit, import back

The same tools edit products you already have. Tick the products, or none for everything, and export them. Change prices, titles or stock in the spreadsheet. Import the file back.

**Keep the product_id column.** It links each row to its product. If a spreadsheet drops it, or you clear it, every row becomes a new product and an update of 500 products becomes 500 copies. The preview catches this: if it says **new products** where you expected updates, stop.

**Delete the columns you are not changing.** Every column in the file is written to every row. Only `product_id` and `model_number` must stay. A file with just those two and `price` changes prices and nothing else.

Large catalogs export as several files. The size of each file is **Products per export file**, under Fine-tune in Settings › Products, which starts at 500. Lower it if your export times out.

### The columns you will use most

And the formats for the special ones

Column names must match the export exactly, in lower case with underscores.

**Everyday columns.** `title`, `description`, `short_description`, `price`, `list_price` (the previous price, shown struck through), `stock_quantity`, `weight` and `activate_in_store` (1 for live, 0 for hidden). `model_number` keeps letters, numbers, dashes, underscores and slashes. Other punctuation is removed.

**More than one picture.** `product_images` holds a gallery as Media Library IDs, such as `ml:123,ml:124`. The first is the listing picture. An image’s ID is in the address of its edit screen, as *post=123*.

**IDs.** `categories`, `manufacturer_id` and `option_id_1` to `option_id_5` take IDs from the ID column of the Categories, Manufacturers and Option Sets lists, on a wide screen. `categories` replaces the product’s categories with the list you give.

**Volume and role prices.** `price_tiers` takes quantity,price pairs, and `b2b_prices` takes role,price pairs, for example `Wholesale,8.50`. Each replaces what the product has now. These are PRO features.

**Variations.** The CSV does not carry variation rows, meaning the SKU, price and stock for each size and color combination, and it cannot make option sets. Link sets you already have with `option_id_1` to `option_id_5`, then set each variation on the product. With PRO, **Update variations from a spreadsheet** in its Options & variations section downloads them as a CSV and reads it back: variations the file leaves out are removed.

**Yoast meta descriptions.** While Yoast SEO is active, the export ends with a `yoast_meta_description` column. Edit it like any other column and the import writes it back. An empty cell removes the description.

### Importing customers too

Only if you are moving accounts across

Customers have their own import. Open **EasyCart › Users › Customers** and press **Import Customers**. It works the same way: a preview, then chunks of 100 rows, with a reason for every skipped row.

A row with a `user_id` updates that customer. A row without one creates a customer, and needs an email that is not already in the store. Turn on **Update existing by email** to update a customer who already exists instead of skipping the row. A `user_level` column sets the role, so this is how you put a list of trade customers into a wholesale role. The role must exist, or the row is skipped.

Passwords are never imported. A new customer gets a random password and uses *Forgot password* to set their own.

![Users › Customers, with the Import Customers button.](https://docs.wpeasycart.com/wp-content/uploads/2026/11/how-to-import-products-from-a-csv-users-607.jpg)

### If it does not work

The usual reasons an import stops or misbehaves

**Everything is a new product.** The product_id column is missing or all zeros. Use the IDs from your export.

**A new product shows the template’s picture.** Its `image1` cell still has the template’s address, or `product_images` was not cleared.

**Rows were skipped for their SKU.** Two rows share a model_number, or one is already used by a product in the store. Each SKU must be new.

**That is not a text CSV file.** Save the sheet as CSV (comma separated), not as an Excel workbook.

**A column is not a product field.** It is misspelled, or has capitals or spaces. Rename it as the preview suggests.

**The import stopped early.** The import stops at the first blank line or the first row with no model_number. Remove blank lines. If the server stopped answering, the rows already imported are kept. Upload the file again to finish.

**The file is over the upload limit.** The panel says so, with your server’s limit. Split the file, or ask your host to raise it.

**Prices show blank.** A column that was in the file but empty overwrote the value. Import again from your original export.

**Some fields did not change.** A product whose details another service manages, such as a fulfillment partner or Square, keeps those fields, and the results say so.

**Products from an earlier import open the wrong page.** Run Diagnostics. It finds products an earlier import tied to a menu item, a page or an image, and links each back to its own product page without changing anything else.

Still stuck? Open a ticket at [wpeasycart.com/my-account](https://wpeasycart.com/my-account).

*Keep going*

## Related panels

- [Product Importer](https://docs.wpeasycart.com/docs/administrative-console-guide/product-importer/): Every column and the panel in full.
- [Products](https://docs.wpeasycart.com/docs/administrative-console-guide/products-product-list/): The products list and its bulk actions.
- [Categories](https://docs.wpeasycart.com/docs/administrative-console-guide/categories/): Category IDs for the categories column.
- [Option Set Manager](https://docs.wpeasycart.com/docs/administrative-console-guide/option-set-manager/): Option set IDs, and option sets in full.
- [User Accounts](https://docs.wpeasycart.com/docs/administrative-console-guide/user-accounts/): Customer accounts and roles.

## Ready to run your store on WP EasyCart?

Everything in this guide works with the free plugin. PRO and Premium add subscriptions, memberships, wholesale pricing and more. Try every PRO feature free for 14 days.

[Start your free trial](https://www.wpeasycart.com/wp-easycart-professional-14-no-risk-trial/) · [See what is included](https://www.wpeasycart.com/wordpress-shopping-cart-pricing/)

![The WP EasyCart admin: orders and offers](https://docs.wpeasycart.com/wp-content/uploads/2026/09/cta-wpeasycart-pro-v2.jpg)

---

Source: https://docs.wpeasycart.com/docs/how-to-guides/how-to-import-products-from-a-csv/ ( updated 2026-11-06 )
