Importing products with multiple attributes
-
Hi,
I am setting up a new store and created some products, then I exported the products in CSV as a template for my clients to prepare the data.There are some custom attributes like “Qty in carton”, “Qty on Pallet”..etc. In the exported CSV, they are listed as Attribute 1 name, attribute 1 value, attribute 1 visible, attribute 1 global, Attribute 2 name, attribute 2 value, attribute 2 visible, attribute 2 global.
But when importing, there is only one attribute to map to, so after importing, only one attribute (attribute 2) is being imported.
How can I import multiple attributes in the CSV? thank you.
My CSV:

Import screen:

-
This topic was modified 5 months ago by
htokkatokka.
-
This topic was modified 5 months ago by
-
Hi @htokkatokka,
I understand you’re having trouble importing multiple custom attributes from your CSV file. This is a common challenge when working with product imports.
The issue you’re experiencing happens because the CSV importer expects a specific format for multiple attributes. When you have multiple attributes, you need to ensure each attribute set (name, value, visible, global) is properly numbered sequentially in your CSV headers.
For multiple attributes, your CSV should have columns like:
Attribute 1 name,Attribute 1 value(s),Attribute 1 visible,Attribute 1 globalAttribute 2 name,Attribute 2 value(s),Attribute 2 visible,Attribute 2 globalAttribute 3 name,Attribute 3 value(s),Attribute 3 visible,Attribute 3 global
For example:
Qty in carton|10|1|0,Qty on Pallet|50|1|0For more information, please see: https://woocommerce.com/document/product-csv-importer-exporter/#converting-existing-simple-product-to-variable-product.
During the import mapping process, you should see options to map each numbered attribute set.
I hope that helps. Let us know if you need anything else.
@frankremmy
Thank you for your reply.
Sorry I am a little confused about the CSV data. If on the same item I have two attributes, do I need two rows for it? e.g:
SKU-1, Qty in carton|10|1|0
SKU-1, Qty on Pallet|50|1|0
Also, if this information is purely informational (should be part of the description, it is not a variation), is it better to use meta data (custom fields) for them and append them into the description?
In that case, what is the format I should use for multiple meta data columns?-
This reply was modified 5 months ago by
htokkatokka.
Hi @htokkatokka,
You don’t need multiple rows for the same product. WooCommerce expects one row per product, with multiple attributes handled via separately numbered attribute columns (Attribute 1, Attribute 2, etc.).
For example, a single product row can contain both “Qty in carton” and “Qty on Pallet” using
Attribute 1andAttribute 2columns. During import, make sure each numbered attribute column is mapped correctly.If this data is purely informational and not meant for variations or filtering, using custom fields (meta data) is also a good option. You can import those using columns like
meta:qty_in_cartonandmeta:qty_on_pallet, and then display them however you like on the product page.Let us know which approach you prefer and we can guide you further.
@saivutukuru
Thanks for your reply, I created a CSV for import with these columns,
which field should I choose in the dropdown to map them? “Attribute name”?


Hi @htokkatokka,
I can see how the mapping screen can feel unclear here, especially when your CSV already looks correctly structured. Happy to walk you through this and make sure you are mapping the right fields so both attributes import as expected.
Based on your screenshots, you should not map the column called “Attribute 1” directly to just “Attribute name” alone. Each attribute needs to be split across the attribute related fields during the mapping step. For your CSV, map Attribute 1 to “Attribute name” and “Attribute value(s)” using the pipe separator format you already have. Then repeat the same process for Attribute 2 using the same attribute related fields. WooCommerce will automatically treat them as separate attributes because they are coming from separate columns.
In practical terms, during mapping, select “Attribute name” for Attribute 1, then map its values to “Attribute value(s)”, set “Is a global attribute?” to No, and “Attribute visibility” to Yes if you want them visible on the product page. Do the same for Attribute 2. You do not need additional rows or special handling as long as each attribute is mapped individually during the import step.
The product CSV importer documentation covers this behavior and shows examples of how multiple attributes are handled in a single row. You can review it here for reference: https://woocommerce.com/document/product-csv-importer-exporter/
Once mapped this way, both “QTY per CTN” and “CTN per Pallet” should appear correctly on the imported products.
If anything still looks off after the import, feel free to share another screenshot of the completed mapping screen and I will gladly take another look.
@lovingbro
Thank you for your reply.I think my question is, the CSV to be imported has a single cell with value of Attribute 1 “Qty in carton|10|1|0”
But the mapping dropdown can only select one of the fields to be mapped, so how exactly can you map the | separated values in a single field when only one field can be selected?
The document says I will need multiple columns in my CSV to be imported, but it seems the previous support member mentioned otherwise.
So do I actually need to split the values ? or combine them with “|”?
in my csv to be imported, which columns do I need?
a. Attribute 1, Attribute 1 values, Attribute 1 visible, Attribute 1 Global…etc? or
b. Attribute 1, Attribute 2,…etc

So should I directly use the csv format exported by WooCommerce?
-
This reply was modified 5 months ago by
htokkatokka.
-
This reply was modified 5 months ago by
htokkatokka.
Hi there,
Thanks for the detailed explanation that helps clarify the confusion.
To answer your question directly: yes, you do need to split the values into multiple columns. A single CSV cell with pipe-separated values like
Qty in carton|10|1|0cannot be correctly mapped using the WooCommerce product importer, because each column in the CSV can only be mapped to one field in the importer.WooCommerce does not parse multiple pieces of attribute data from a single,
|-separated cell. Instead, each part of the attribute must be provided in its own column so it can be mapped properly.For custom (non-global) attributes, your CSV should include columns like this:
Attribute 1 nameAttribute 1 value(s)Attribute 1 visibleAttribute 1 global
Example:
- Attribute 1 name →
Qty in carton - Attribute 1 value(s) →
10 - Attribute 1 visible →
1 - Attribute 1 global →
0
This aligns with what the documentation describes and is the supported format for imports.
For more details you can use this guide: https://woocommerce.com/document/product-csv-importer-exporter/#converting-existing-simple-product-to-variable-product
I hope this helps.It’s been a while since we heard back from you for this reason we are closing this thread.
If WooCommerce has been useful for your store and you appreciate the support you’ve received, we’d truly appreciate it if you could leave us a quick review here:
https://ww.wp.xz.cn/support/plugin/woocommerce/reviews/#new-post
Feel free to open a new forum topic if you run into any other problem.
You must be logged in to reply to this topic.