How to Import and Export Products in Magento?

Whether you're moving Magento 2 products from one instance to the other or just transferring some data to the product directories, you need to know how to export and import products from Magento.

Not only does it save time and effort, but enables you to edit products in bulk, and delete and update items without having to do it for each product one by one.

When searching for the best way to import and export products in Magento, you'll probably come across plenty of Magento 2 extensions. However, today you'll learn how to use the default Magento import and export features.

Things to Know Prior to Magento Import & Export

Before we start there are a few things you have to know prior to moving products. 

Magento import and export works with the CSV file types. So you have to know how to work with CSV files before you export or import products. 

The best way to do this?

Google Sheets for sure. The main benefit is it is completely free and you most likely already have a Google account to use it. Besides, Google Sheets don't break the CSV formatting and you can download the file without any changes to the separator or delimiter values.

If you considered Microsoft Excel or Open Office, we don't recommend it since you'll have a hard time editing delimiters and separators as these tools break the formatting.

CSV File Structure

Once you export products from Magento 2 you will have a sample of the CSV file with the columns you can update or edit. However, if you're just preparing a CSV file for import you have to know the structure of the product CSV file.

Column Example Description
sku sku_123 An alphanumeric identifier is used to track inventory. Can be up to 64 characters long with letters and numbers separated by underscores or dashes. (SKUs with more than 64 characters will cause the import to fail)
store_view_code English Specifies the store views where the product is available. If you leave it blank the product will be available on the default store view.
attribute_set_code Default Assigns a product to a specific attribute set (you should have attribute sets created before importing products) based on the product type. If the product is created, you can't change the attribute set.
product_type simple Defines the type of product: simple, grouped, configurable, virtual, bundle.
categories Default Category/Gear,Default Category/Gear/Fitness Equipment Defines a category assigned to a product. Separate category paths with the pipe (|) symbol.
product_websites base,website2 Indicates a website code where the product is available. To set multiple websites, separate each with a comma without a space.
name Sprite Yoga Strap 6 foot The name of the product.
description <p>The Sprite Yoga Strap is your untiring partner in demanding stretches, holds and alignment routines. The strap's 100% organic cotton fabric is woven tightly to form a soft, textured yet non-slip surface. The plastic clasp buckle is easily adjustable, lightweight and durable under strain.</p><ul><li>100% soft and durable cotton.<li>Plastic cinch buckle is easy to use.<li>Three natural colors made from phthalate and heavy metal-free dyes.</ul> Defines the product name that is used in the listing. Can include valid HTML tags.
short_description <p>The Sprite Yoga Strap is your untiring partner in demanding stretches, holds and alignment routines.</p> Identifies product description. Includes valid HTML tags.
weight 1 The weight of the product is in the 1.00000 formats.
product_online 1 Determines whether a product is enabled or not.
tax_class_name Taxable Goods Defines the name of the tax class associated with this product.
visibility Catalog, Search Defines whether a product is not visible individually, in the catalog, in search, or bot catalog and search.
price 14 The price of the product.
special_price 10 A discounted price of the products during a specified period.
special_price_from_date 2022-07-19 03:34:20 A date when the discount price is activated.
special_price_to_date 2022-07-19 03:34:20 A date when the discount price is deactivated.
url_key sprite-yoga-strap-6-foot Defines the part of the URL that identifies a product.
meta_title The Best Sprite Yoga Strap 6 foot A meta title of the product that appears in the search results list.
meta_keywords sprite yoga, best sprite yoga strap, yoga strap Meta keywords are separated by a comma with space.
meta_description The Sprite Yoga Strap is your untiring partner in demanding stretches, holds and alignment routines. Product meta description.
base_image https://magefan.com/blog/wp-content/uploads/2022/07/sprite-toga-strap.png Defines a relative path for the main product image. (images should be uploaded to pub/media/import). You can also use the direct URL of the image.
base_image_label Base image "Alt Text" A label of the base product image.
small_image https://magefan.com/media/logos/default/logo.png A name of the small image file that is used on catalog pages preceded by forward slash.
small_image_label Small image "Alt Text" A label associated with the small image.
thumbnail_image https://magefan.com/media/logos/default/logo.png A file name of the thumbnail image that will appear on the product page gallery preceded by forward slash.
thumbnail_image_label Thumbnail image "Alt Text" A label associated with the thumbnail image.
created_at 2022-07-19 03:34:20 Defines the date when the product was created. Use the following format: yyyy-mm-dd hh-mm-ss.
updated_at 2022-07-19 03:34:20 Defines the date when the product was last updated. Use the following format: yyyy-mm-dd hh-mm-ss.
new_from_date 2022-07-20 03:34:20 Specifies a date when the product starts to be featured as a new product. Use the following format: yyyy-mm-dd hh-mm-ss.
new_to_date 2022-07-20 03:34:20 Specifies a date when the product stops being featured as a new product. Use the following format: yyyy-mm-dd hh-mm-ss.
display_product_options_in Block after Info Column Determines where product options should appear on a product page if a product has multiple options.
map_price 10 A minimum advertised price of the product.
msrp_price 10 A manufacturer's suggested product price. 
map_enabled 0 Determines if the Minimum Advertised Price is enabled.
gift_message_available   Determines if a gift message will be displayed for a product during purchase.  
custom_design   List themes that can be applied to a product page.
custom_design_from 2022-07-30 12:12 Specifies a date when the selected theme is applied to the product.
custom_design_to 2022-07-30 12:12 Specifies an end date when the selected theme is applied to the product.
custom_layout_update   Specifies additional XML code that is applied to product page layout.
page_layout   Defines the layout of the product page: No layout updates, 1 column, 2 columns with left bar, 2 columns with right bar, 3 columns, empty.
product_options_container Block after Info Column Determines where product options will be displayed on the product page.
msrp_display_actual_price_type Use config Determines where to display the actual price of the product for a customer; in the cart, before order confirmation, on gesture.
country_of_manufacture Ukraine Identifies the country where the products was manufactured.
additional_attributes has_options=1,quantity_and_stock_status=In Stock,required_options=0 Defines additional attributes created for a product. (custom product options)
qty 100 Quantity of products that are currently in stock.
out_of_stock_qty 0 The stock level to determine when the product is marked as out of stock.
use_config_min_qty 1 Determines whether to use the default value from the config.
is_qty_decimal 0 Determines if the qty attribute has a decimal value. Set 1 is the qty can be decimal.
allow_backorders 0 Defines whether your store allows backorders. Set 1 if you allow backorders.
use_config_backorders 1 Determines whether to use the default backorders config.
min_cart_qty 1 Defines the minimum qty of the product that can be purchased per order.
use_config_min_sale_qty 0 Determines whether to use the default value from the config.
max_cart_qty 0 Defines the maximum qty of the product that can be purchased per order.
use_config_max_sale_qty 1 Determines whether to use the default value from the config.
is_in_stock 1 Defines if the product is in stock.
notify_on_stock_below 1 Specifies the number of products that trigger the out-of-stock notification.
use_config_notify_stock_qty 1 Determines whether to use the default value from the config.
manage_stock 0 Defines if inventory control is used to manage a product. Set 1 to control the stock quantity.
use_config_manage_stock 1 Determines whether to use the default value from the config.
use_config_qty_increments 1 Defines whether to use product quantity increments from the store config.
qty_increments 0 Determines if the product is sold in quantity increments.
use_config_enable_qty_inc 1 Determines the default config setting to enable quantity increments.
enable_qty_increments 0 Defines if the quantity increments are enabled for a product.
is_decimal_divided 0 Defines if some part of a product can be shipped separately.
website_id 1 Defines a specific website where the product is available. When black the product will be available on all websites.
related_skus 24-WG087,24-WG086 List of the related products SKUs comma-separated.
related_position 1, 2, 3, 4 Determines the position of the SKUs listed as Related Products.
crosssell_skus 24-WG087,24-WG086 List of the cross-sell SKUs comma-separated.
crosssell_position 1, 2, 3, 4 Determines the position of the SKUs listed as Cross-sells.
upsell_skus 24-WG087,24-WG086 List of the up-sell SKUs comma-separated.
upsell_position 1, 2, 3, 4 Determines the position of the SKUs listed as Upsells.
additional_images https://magefan.com/media/logos/default/logo.png The file names of all additional images associated with a product.
additional_image_labels Additional image "Alt Text" Labels of the additional images associated with a product.
custom_options name=Custom Yoga Option,type=drop_down,required=0,price=10.0000,price_type=fixed,sku=,option_title=Gold|name=Custom Yoga Option,type=drop_down,required=0,price=10.0000,price_type=fixed,sku=,option_title=Silver|name=Custom Yoga Option,type=drop_down,required=0,price=10.0000,price_type=fixed,sku=yoga3sku,option_title=Platinum  Defines the values and properties assigned to each custom option.


Now that you know what columns will the sample CSV file contain and what each of them means, you can move to the Magento import and export.

How to Export Products in Magento 2?

To export products in Magento 2: 

1. Navigate to System > Data Transfer > Export.

2. Choose Product as the Entity Type and CSV — as Export File Format

Export products in Magento 2

3. Filter through product attributes to export only those you really need and click Continue.

Filter Product Attributes

You'll get a message that the import was scheduled and once the cron runs the products will be exported. So make sure your crons are configured correctly.

Magento Export Products

How to Import Products in Magento 2?

Magento product import is a little harder than export. But we've got you covered.

Just follow these steps to import products to Magento 2:

1. Navigate to System > Data Transfer > Import and choose Product as the Entity Type. 

Import Product in Magento 2

Note: you can download the sample file right on this step to make sure your CSV file follows the sample. Also, make sure the size of the import file doesn't exceed the limit of 2M and upload images to pub/media/import if you want to specify image paths in the CSV file.

2. Configure Import Behaviour

  • Select what Import Behaviour you prefer in a corresponding section: Add/Update, Replace, Delete.
  • Define the Validation Strategy to determine what happens if any errors occur during import.
  • Set the Allowed Errors Count to define how many errors can occur before the import is canceled.
  • Accept the default value on a comma in Field separator and Field separator fields.
  • Check the Fields Enclosure if you want to enclose any special characters found in the data.

Magento Import Behaviour

3. Identify the Import File

Here you have to upload your CSV file and enter the relative path to the server where uploaded images are stored in the Images File Directory field.

File to Import

Once you fill out all of the required field, click Check Data in the upper-right corner and wait for the process to complete. 

Magento Import Validation

If your CSV file is valid, press Import and import products to Magento 2. You can track the import via System > Data Transfer > Import History.

Magento Import History

Magento import & export feature is more than enough to perform some basic editing or updating tasks when you operate your products between Magento instances.

However, if you want to expose your products to a wider audience and upload them to some comparison lists or marketplaces you need to explore the best Magento 2 Product Feed Extensions.