Today, we are going to talk about Magento 2 categories import and export. Unfortunately, the platform doesn’t let you import and export categories by default. Although its capabilities associated with data transfers are fairly limited, you can address the existing issues with Improved Import & Export. This extension provides the ability to import and export categories to Magento 2.
In the following article, we shed light on how to transfer an existing category tree to/from your e-commerce website using the Improved Import & Export Magento 2 extension. After describing the Magento 2 category export, we peruse a sample category CSV file. Then, our attention is focused on specific Magento 2 category attributes: we explore use cases and attribute mapping to let you transfer categories to Magento 2 from any external platform. Next, there is a detailed step-by-step guide that depicts Magento 2 categories import. Also, you will find out how to import product positions in categories (a part of the Visual Merchandiser functionality of Magento 2) and import Magento 2 categories per different store views. Let’s go!
Before you start learning the Magento 2 import of categories, it is necessary to get a sample category CSV. The best way to achieve this goal is to export categories from your Magento 2 website.
So, the Magento 2 category export takes place under System > Export Jobs. Here you need to:
Create a new export job and decide on its frequency;
Select the ‘Entity‘ you want to export – ‘Categories‘;
Decide on file format – CSV, XML, Excel, JSON, etc. – and field separators for the table, in case you are using different from native Magento 2;
Choose a source to export Magento 2 categories: FTP/SFTP, Google Drive, manual download, Google Sheets, etc.
Apply necessary attribute mapping and filters if applicable.
Once done setting up the export job, click the ‘Save and Run‘button at the upper right corner of the screen.
Next, hit the ‘Run‘ button to export categories from Magento 2.
As a result, you will get a CSV table with all categories available at your store. At the same time, there is another way to get a sample categories CSV file.
Sample CSV for Magento 2 Categories Import
Instead of exporting categories from Magento 2, you can always get a sample import table. Understanding the import table will allow you to get an idea of the required Magento 2 category attributes and sample category structure. You can get the sample Magento 2 category import CSV table in two locations:
GitHub – proceed to the FIreBear Studio GitHub and download the file with the required entity type;
Google Sheet Master Table – The Improved Import and Export extension we will be using for importing categories supports Google Sheets as an import source. That’s why we have composed a Google Sheet Master Table where we have gathered all import entity types with descriptions and sample values.
Sample import tables from both locations have been tested and are working properly. Feel free to download and edit the tables to your liking, or copy the Master Table to your Google Drive. Read more about Google Sheet Master table
Magento 2 Categories Import Table Structure
Now that we have the sample table, it is time to talk about its formatting. Improved Import and Export extension allows you to use two table file formats: CSV and XML.
Note that your table should be properly formatted before import. If for some reason you have decided to create an import table manually – make sure to use the following settings:
Character set
Unicode (UTF-8)
Field separator
Comma, Tab
Text delimiter
”
If you want to import a Magento 2 categories CSV file with different formatting, the Improved Import and Export extension allows you to map fields and value separators manually. We will talk about this later in this post.
Magento 2 Import & Category Attributes
Now that we have a CSV table with the categories, let’s break it down to see which attributes are used to import categories to Magento 2, and which values are expected for the successful process.
Attribute Name
Reference
Values
Value Example
entity_id
The identifier for categories within Magento 2.
You can find a category ID next to the category name at Catalog > Categories
Numeral value
12
name
Category name. The category name contains the full category path, including all parent categories
For example:
If you have a category named ‘Third’ which is nested under the ‘First’ and ‘Second’ categories, the name value will look like this:
First/Second/Third
Use ‘/’ to separate category names
Default Category/First test category
store_view
Defines the store view where the category is displayed under the current name.
Store View Code can be found under Stores > All Stores > next, click required store view and check the “Code” column.
Can contain letters and numerals with spaces and hyphens
eng-store
English Store
image
The main category image and its path
Should be uploaded to /pub/media/import.
The path of /sample_data/m/b/mb01-blue-0.jpg has the following structure: /pub/media/import/ sample_data/m/b/
mb01-blue-0.jpg
In addition, you can use a direct URL of an image, such as http://site.com/images/
some_image.jpg
/pub/media/import/
category_images/
image1.png
url_path
Category URL path at the front end. This attribute creates a URL rewrite to compose the end category URL
The end category URL is composed of the following pattern:
yourstore.com/index.php/
url_path attribute value/
url_key value
For example:
If you want the category path to include category1 and category2. In this column, you need to enter:
category1/category2/. Use / to separate categories.
In this case end category URL will look like this:
yourstore.com/
index.php/category1/category2/
url_key value
test_parent_category/
test_sub_category
available_sort_by
Category option Default Product Listing Sort By. Which defines which sorting options are available at the category page
Available values:
blank – all values
position – product position
name – product name
price – product price
Multiple values should be separated by a comma.
For example, if you want only position and price sorting available the value should look like this:
position,price
position,name,price
custom_apply_to_products
Category option Apply Design to Products. Defines if the custom category design should also be applied to the products belonging to the category
Available values are:
Yes – Apply Design to Products enabled
No – Apply Design to Products disabled
Leave blank if no custom design is applied
Yes
custom_design
Category Design > Theme option. Defines the theme that should be applied to the category
The value should be the required theme name. Leave blank if no design updates are required, and the category should be displayed in the default theme applied to the store
Magento Luma
custom_design_from
Defines from what date the custom design should be applied to the category
The date should be in the following format:
mm/dd/YY
For example:
If you want a custom design applied from the 10th of July 2019, the value should look like this:
7/10/19
2/1/18
custom_design_to
Defines to what date the custom design should be applied to the category
The date should be in the following format:
mm/dd/YY
For example:
If you want a custom design applied to the 10th of July 2019, the value should look like this:
7/10/19
2/28/18
custom_layout_update
Category Design > Layout Update XML option
The value should be in readable XML if you want any XML layout updates applied
Category Design > Use Parent Category Settings option. Defines whether the category should copy parent category design settings
Available values:
Yes – the category will copy parent design settings
No – the category will have a unique design
No
default_sort_by
Category option Default Product Listing Sort By. Defines which sorting order should be applied to the products by default
Available values:
Position – the products will be sorted depending on their position in the category.
Product Name – the products will be sorted in alphabetical order.
Price – the products will be sorted from lowest to highest and vice versa price
Product Name
description
Category description
Supports simple HTML formatting
<p>Category description</p>
display_mode
Category option Display Mode. Defines which entities should be displayed at the category page
Available values:
Static block and products – both static blocks and products displayed
Static block only – only static blocks displayed
Products only – only products displayed.
Only a single value can be entered at a time. No multiple values allowed
Static block and products
filter_price_range
Category option Layered Navigation Price Step. Defines the price step which will be used in the layered navigation
Only numerals allowed
10
include_in_menu
Category option Included in Menu. Defines if the category should be included in the main category menu
Available values are:
Yes – category included in the menu
No – category is not included in the menu
Yes
is_active
Category option Enable Category. Defines if the category is active or disabled
Allowed values are:
Yes – the category is enabled at the frontend
No – the category cannot be found at the frontend
Yes
is_anchor
Category option Anchor. Defines if the category is an anchor category or not
Available values are:
Yes – the category is anchor
No – the category is not anchor
Yes
landing_page
Category option Add CMS Block. Defines which CMS block should be included in the category
The value should be the name of the CMS block. Only a single CMS block can be included. Multiple values are not allowed
Contact us info
meta_description
Meta description of the category
Can contain any symbol
Category meta description
meta_keywords
Meta Keywords of the Category
Can contain any symbol. Multiple values are separated by a comma
category,meta, keywords
meta_title
Meta Title of the category
Can contain any symbols
Category meta title
page_layout
Category option Layout. Defines the layout of the category
Available values are:
blank – no layout updates
Empty
1 column
2 columns with left bar
2 columns with right bar
3 columns
3 columns
position
Category position in the parent category. From top till bottom. The lower the value the higher the category’s position.
Affects the order in which categories are displayed on the menu
Numeric value
10
url_key
Category option URL Key. Defines the URL of the category
All characters and symbols that can be used for URLs
test_category_path
group
String or integer same for a group of categories per store view.
Use the attribute to create a new category during the import
Numerals
1039
Category Attribute Mapping
If you receive an import table for Magento 2 categories import from a source different than Magento 2, you will need to compare the provided attribute (column) names and values with the ones described above. Usually, it is a manual process that takes place in a spreadsheet editor. However, you can skip renaming the attributes manually and take advantage of the Improved Import and Export extension‘s attribute mapping.
The module lets you select a Magento 2 category attribute and set the reference column from the import table. In such a way, you only need to match third-party names to the default namings of Magento 2. No editing is required because the extension communicates proper attribute names to Magento 2 during the category import process. We will talk about attribute mapping more as the post goes on.
Now, that you have learned that category import attributes are used in Magento 2, it is time to proceed to the actual import of categories.
Magento 2 Categories Import Step-by-step Guide
The Magento 2 categories import process takes place under System > Improved Import / Export > Import Jobs of your Magento admin.
The Import Jobs is the main import management screen where you can add new and edit existing import jobs.
To create a new job, click the ‘Add New Job’ button and follow these steps to import categories to Magento 2:
Step 1: Name Your Job & Set up Automation
The New Job screen will greet you with the General Settings section.
The settings are pretty much self-explanatory: name your job and create a schedule of updates if you plan to automate your category imports to Magento 2. Keep in mind, that you can always run your import job manually. Next, you will need to select the locale of the store you will be importing to.
There will be two settings left:
Generate Unique Url if Duplicate – allows you to increment the category URLs if the URL is already taken;
Re-Index after Import – allows re-indexing the store after the entity has been imported.
Step 2: Select Categories as Your Import Entity
When done with the general settings, you will need to select the entity you are going to import. In our case, it is ‘Categories’. Just choose it from the dropdown.
Then, you need to select what the extension should do with the entities from the import table:
Add/Update – add new categories and update the existing ones;
Replace – replace categories with new ones;
Delete – delete categories matching the ones in the import table.
After selecting the behavior, you can specify the validation strategy – whether the extension should skip or stop the process if any errors occur. This will help you understand if anything is wrong with your import table.
NOTE: pay close attention to Categories separated by and Category levels separated by settings.
Categories separated by – when you are importing products, you can decide which separator you use for the categories column. By default comma is used to separate multiple category paths. However, if you have commas in category names you may want to use different separators for category paths.
Category levels separated by – when you are importing products, you can decide which separator you use for the categories column to separate category levels. By default “/” is used to separate multiple category levels. However, if you have “/” in category names you may want to use different separators for category levels.
At last, the extension allows you to manually map the import table formatting by setting field and value separators.
Step 3: Choose Your File Format & Source
On the Import Source screen, select the import table file format and specify the source you will be importing from. In the screenshot below, we are using a direct link to the Google Sheet with our CSV table uploaded. But you can also import categories to Magento 2 via XML, JSON, Excel, and ODS files. As for sources, our extension supports a plethora of them, including FTP/SFTP uploads, Google Drive transfers, API integrations, etc.
When the source is specified, click the ‘Validate file’ button to let the extension check the integrity of the import table.
Step 4: Map Attributes to Import Categories from Any Source
Once the Magento 2 categories import table has been validated, you are presented with the Map Attributes section. It looks pretty straightforward:
In the Map Attributes section, you can set the reference between category attributes used by your Magento 2 store and the ones you are using in your import table. This is particularly useful if you got the import table from another ecommerce platform or composed it manually without considering proper category attribute naming.
That’s it, now you only need to click the ‘Save & Run’ button to import categories to Magento 2. Once you hit the ‘Run’ button, the extension displays the import job log, where you can immediately detect any errors.
You have just imported categories to your Magento 2 store with the Improved Import and Export extension. As you can see, there is nothing difficult in importing Magento 2 categories. You need to spend some time preparing attributes, but the actual import process is easy to configure.
Magento 2 Import of Categories: Use Cases
Below, you can see a couple of specific use cases for the Magento 2 import of categories associated with the Improved Import & Export module:
Automater url_key Generation. The extension functionality can fill empty fields for url_key and url_path automatically. If you import a table with the attribute values not specified, Improved Import and Export will create the category URL based on its title (using a hyphen for each space in the name). E.g.: New Category — new-category
In case you run import with the behavior ‘Replace’, implemented categories with the matching names will be assigned with the increment +1 to enter the database with a unique URL. E.g.: new-category > new-category1
Per-Store View Import. Use Improved Import and Export to import categories per store view with different languages, names, and paths. Use the attribute ‘group‘ to assign transferred categories as variations per store view.
As the functionality addresses the ‘entity_id‘ attribute to process existing categories per store view, in case of re-export make sure to check the IDs actually belong to your database.
Automated ID Generation. If you want to import new categories, you should empty the ‘entity_id‘ attribute column or delete it for good. Magento 2 assigns IDs to new categories automatically.
Updates of Existing Categories. In case you want to change data in the existing categories, make sure to run a primary export to get the IDs of those categories. Once you are applying updates to the category data make sure not to modify ‘entity_id‘ as it’s the crucial attribute for category processing in Magento 2.
Product positions in categories can also be imported to Magento 2. However, this information can be transferred along with products, not categories. Below, we cover a product attribute introduced by the Firebear Team for the Improved Import and Export extension responsible for importing and exporting product positions in categories.
To import positions in categories, use the categories_positionattribute. Note that it only works for the Improved Import and Export extension. Again, this is a custom attribute, and it will not work with the native Magento 2 import. Add the categories_positionattribute to your product import table like in the example below:
Thecategories_position attribute mirrors the value of the categories attribute. However, you need to specify the position of the product after every category path.
Let’s suppose, we have the following category path in the categories attribute:
Default Category/Gear/Bags
Our goal is to specify that the product’s position in the ‘Bags’ category is 5. We need to add ‘=5’ to the category path in thecategories_position attribute as follows:
Default Category/Gear/Bags=5
You can refer to the screenshot above to see how it looks in the actual CSV table. That’s pretty much it. Using this pattern, you can import products along with their positions in the specified categories.
And don’t forget that it is a part of the product import. Therefore, select Products as your import entity when creating a job for importing product positions in categories to Magento 2.
After that, configure the import job as you would normally do. You can find more information about import jobs here: Improved Import & Export Manual.
Importing Magento 2 Categories for Different Store Views
Importing categories for multiple store views is a bit different because a single category can have a dedicated name for separate store views. That is why we need to identify multiple lines of the SAME category with different names during the import process, instead of using the ‘name’ attribute for identification.
The category name for secondary store views or store views of the different languages can be submitted via the following attribute – ‘store_name’ along with other necessary category attributes.
The ‘store_name’ attribute needs to contain the final category name. For example:
You have three categories with the path:
Category A/Subcategory A/Subcategory B
Put the proper name of THE LAST category in the path, – in our case, it is Subcategory B, – into the ‘store_name’ attribute.
If you want to translate the name of Subcategory A, then you need to put this path in the ‘name’ attribute:
Category A/Subcategory A
Then specify the desired name for the Subcategory A in the ‘store_name’ attribute.
TO MEMORIZE:
When importing categories and translating/changing category names for multiple store views, use the ‘store_name’ attribute to update the name of the LAST category in the path specified in the ‘name’ attribute.
How to Rename Magento 2 Category for Default Store View During Import
Renaming categories during Magento 2 import works the same as importing alternative category names for different store views, with a single exception: leave the store_view column empty. See this screenshot:
Let’s look at the second row of the table. You can see that the new name – NEW CATEGORY NAME – is specified for the store_name attribute but the corresponding cell for the store_view attribute is empty. After you import a CSV with this category data to Magento 2, ‘1 First category’ – the original category name – will be replaced with ‘NEW CATEGORY NAME’ – the new name.
NOTE: only the final category in the path specified inside the name column will be renamed.
Here are the steps to renaming categories via Magento 2 import:
Step 1: Export categories and open the file for edit
Step 2: Add the store_name column to the file, the position of the column doesn’t matter
Step 3: In line with the category you want to rename, fill in the desired name in the store_name column
Step 4: Import categories back to the store
This is it. You now renamed the category at the default store view using the Magento 2 categories import. For further information, follow this link:
How to import categories to Magento 2 automatically?
Use the Improved Import & Export Magento 2 extension to import categories to Magento 2 automatically. The module relies on cron to automate data transfers. Consequently, you can create schedules to import product categories to Magento 2 automatically after certain intervals. For instance, you have two e-commerce websites with a similar category tree. Instead of applying updates to both of them manually, you can edit one of the stores and import new categories from it to the remaining storefront.
How to export categories from Magento 2 automatically?
You can also use the Improved Import & Export Magento 2 extension to export categories to Magento 2 automatically due to cron and automated data transfers. Following the example from the previous question, use the module to export categories from a store where you’ve just applied changes. It will help you import new categories to the remaining storefront.
How to import Magento 2 categories from Google Sheets?
You can use the Improved Import & Export Magento 2 module to import categories from numerous sources, including Google Sheets. The extension provides the ability to choose the desired storage when you configure an import profile. Just select Google Sheets as your data source and specify the URL address of a file with categories to import the corresponding update to your Magento 2 website.
How to import Magento 2 categories from Dropbox?
In addition to Google Sheets, you can also transfer a category tree to Magento 2 from Dropbox. Provide the address details of a file stored there and the Improved Import & Export extension will easily move it to your e-commerce storefront. Note that it should be a CSV, XML, ODS, XLSX, or JSON file. You can provide them in a compressed state as ZIP or TAR archives.
How to import Magento 2 categories from a CSV file?
You can use the Improved Import & Export Magento 2 extension to import categories via a CSV file. Follow the instructions mentioned in this article to configure the corresponding import process. Choose a CSV file as your import file type.
How to import Magento 2 categories from an XML file?
You can use the Improved Import & Export Magento 2 extension to import categories via an XML file. Follow the instructions mentioned in this article to configure the corresponding import process. Choose an XML file as your import file type.
How to import Magento 2 categories from an ODS file?
You can use the Improved Import & Export Magento 2 extension to import categories via an ODS file. Follow the instructions mentioned in this article to configure the corresponding import process. Choose an ODS file as your import file type.
How to import Magento 2 categories from an XLSX file?
You can use the Improved Import & Export Magento 2 extension to import categories via an XLSX file. Follow the instructions mentioned in this article to configure the corresponding import process. Choose an XLSX file as your import file type.
How to import Magento 2 categories from a JSON file?
You can use the Improved Import & Export Magento 2 extension to import categories via a JSON file. Follow the instructions mentioned in this article to configure the corresponding import process. Choose a JSON file as your import file type.
How to import Magento 2 categories in a ZIP or TAR archive?
You can use the Improved Import & Export Magento 2 extension to import categories in a ZIP or TAR archive. Note that they should be stored in a CSV, XML, ODS, XLSX, or JSON file.
How to import Magento 2 categories via API?
You can use the Improved Import & Export Magento 2 extension to import categories to Magento 2 via API. The module provides the ability to create a direct connection between the two systems so that you avoid the use of intermediate data exchange points and file transfers.
How to export Magento 2 categories via API?
You can use the Improved Import & Export Magento 2 extension to export categories to Magento 2 via API. The module provides the ability to create a direct connection between the two systems so that you avoid the use of intermediate data exchange points and file transfers.
How to export products by categories from Magento 2?
The Improved Import & Export module also lets you export products by categories from Magento 2. It is only necessary to create export filters and specify a category that contains products that you want to export.
How to assign Magento 2 products to categories on import?
You can use Improved Import & Export to assign products to categories while importing them to your e-commerce website. The module offers a mapping interface where you can select new categories for imported products.
How to map categories in Magento 2?
As mentioned above, you can use Improved Import & Export import profiles to map the imported categories to those available on your front end. Specify an imported category and select your store category in front of it. Thus, you map external categories to the ones used in your Magento 2 installation.
Final Words
Although, the Magento 2 categories import is not available as a platform’s built-in functionality, you can easily add it to your store with the Improved Import and Export extension. There is nothing difficult in importing categories to Magento 2. Our extension even lets you import unique category names bound to specific store views. Besides, you can use the module to rename categories via the Magento 2 import process or transfer products along with their category positions. In addition to that, the Improved Import and Export extension offers numerous handy features that are partly described in our Magento 2 import/export guide list and on the extension’s page: