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.
Post Contents [hide]
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.
|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.
3. Filter through product attributes to export only those you really need and click Continue.
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.
How to Import Products in Magento 2?
Magento product import is a little harder than export since you need to import product images separately. 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.
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.
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.
Once you fill out all of the required field, click Check Data in the upper-right corner and wait for the process to complete.
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 & 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.