Export and import bundle products using CSV files
Learn easy ways to export and import Bundle products using CSV files!
In product configurations (bundles) in AI Commerce platform, it may sometimes be necessary to update or add multiple “options” (bundle_options) and “selections” (bundle_selections) for multiple products at once. For this, CSV Export / Import tools have been implemented, which allow you to bulk edit data via Excel or a similar program.
- CSV Export allows you to extract existing data – you will see the same columns and their default values that the platform expects during the Import phase.
- CSV Import, on the other hand, reads the contents of a previously created CSV file and updates/creates the corresponding data in the system.
The user interface has the following four buttons on the Catalog page:
- CSV Export Bundle Options
- CSV Import Bundle Options
- CSV Export Bundle Selections
- CSV Import Bundle Selections
A good practice is to first create a sample bundle in the user interface, test that it works, and only then create an Export CSV file. This way you can see exactly which columns and values will be created in the CSV environment. You can use this export file as a basis for future mass edits and imports. This way you will avoid errors and learn the structure of the form best.
Also, please make a backup (e.g. save the export file to a safe place) before making any large-scale changes. This way, if something goes wrong, you can always revert to a known working situation by restoring the CSV, which has been tested.
Export Bundle Options
The “ CSV Export Bundle Options ” button will output a CSV file with these columns in the header row:
Column | Description |
---|---|
option_code | The code associated with the bundle option (e.g. option_5 or a more descriptive identifier of your choice). |
parent_sku | The product model of the bundle's "parent" tuotemalli , e.g. ABC-123 . |
required | Whether the option is mandatory (1) or optional (0). |
position | Ordinal number (smaller number = displayed first). |
type | The type selected for the option (e.g. radio , checkbox ). |
language_code | Language code (e.g. fi , en ) – tells you which language title and description belong to. You can find the languages in Locals & Taxes > Languages. |
title | The title to be displayed in the language. |
description | Additional text / explanation to be displayed in the language in question. |
Each line in the CSV file corresponds to one (option + language) combination. If there are multiple languages for the same option, multiple lines will be displayed.
Export Bundle Selections
The “ CSV Export Bundle Selections ” button results in another CSV with the following columns:
Column | Description |
---|---|
option_code | Tells which bundle option this selection is related to (e.g. option_5 ). |
parent_sku |
tuotemalli for the main product in the bundle. |
sku |
tuotemalli selected “children's product”. |
position | Ordinal number. |
is_default | Whether the child product in question is selected by default (1) or not (0). |
selection_price_type | 0 = “fixed price” in the selection_price_value field, 1 = “linked”/addable price. |
selection_price_value | The price amount (e.g. 9.99 ). Often left blank if using linked pricing. |
selection_qty | Default quantity (e.g. 1 ). |
selection_can_change_qty | Whether the customer can change the quantity (1) or is it locked (0). |
Each row corresponds to one selection within a specific option. If multiple child products are associated with the same option, each will appear on its own row.
Import Bundle Options
The “ CSV Import Bundle Options ” button allows you to add or update options. The columns in the CSV file are expected to be in the same order and with the same headings as in the Export:
option_code; parent_sku; required; position; nitrogen; language_code; title; description
-
option_code
- If
option_code
value is already found in the database, the option is updated (required, position, type, etc.). - If
option_code
value is missing (empty) or not found in the database, a completely new option is created.- In this case, the platform automatically generates “option_{ID}”, where ID is
option_id
created in the database.
- In this case, the platform automatically generates “option_{ID}”, where ID is
- If
-
parent_sku
- The corresponding
products_id
is retrieved from the main product. If the product is not found, the row is skipped.
- The corresponding
-
required , position , type
- Updated as is to
catalog_product_bundle_option
table.
- Updated as is to
-
language_code
- Searches
languages
table (e.g.fi
,en
...). If not found, the row is skipped.
- Searches
-
title , description
- Stored in
catalog_product_bundle_option_value
table. Each row contains only one language.
- Stored in
Note: If
option_code
is missing, the system will automatically generate it, but it is recommended to provide the codes yourself, which makes them easier to manage and update.
Import Bundle Selections
The “ CSV Import Bundle Selections ” button is used to add or update child products belonging to the option. The CSV expects the following columns:
option_code; parent_sku; sku; position; is_default; selection_price_type; selection_price_value; selection_qty; selection_can_change_qty
-
option_code
- Retrieve
catalog_product_bundle_option.option_code
. If the code is not found, the line is skipped (you could create a minimal equivalent to the option if you wanted, but the code has implemented “skip”).
- Retrieve
-
parent_sku
-
tuotemalli
of the main product, retrieved byproducts_id
. Required, otherwise ignored.
-
-
sku
- Child
tuotemalli
, looking forproducts_id
. If missing, ignored.
- Child
-
position, is_default, selection_price_type , etc.
- Saving or updating to
catalog_product_bundle_selection
table:- If the (option_id + sku) in question already exists, it will be updated.
- Otherwise, it is added as a new line.
- Saving or updating to
CSV file format and recommendations
1. Encoding UTF-8
It is important that the CSV file is saved in UTF-8 format (without the BOM character) so that uppercase and special characters are displayed correctly.
2. Column order and names
The Export and Import functionalities expect the columns in a specific order and with specific headings. It is always a good idea to start with one Export, edit it and Import it back.
3. Backups
Before doing large Imports, make backups. Save the Export file with a name like “backup_bundles_options.csv” so you can restore it if something goes wrong.
4. Option_code
- As mentioned above, you can enter your own codes (e.g.
option_putkihattu_001
), or leave the field blank, in which case the system will automatically generate the name “option_{ID}”. - The update is based on
option_codeen
; if it is missing, it is treated as a new option by default.
5. Parent and child product references
- The system will retrieve
products_id
field based onsku
value. Check that the product numbers (SKUs) have been pre-created. - If
parent_sku
orsku
is invalid (product not found), the row is skipped.
Example tables
bundle_options.csv (Export / Import)
option_code | parent_sku | required | position | type | language_code | title | description |
---|---|---|---|---|---|---|---|
option_5 | ABC-123 | 1 | 1 | radio | fi | Fasteners | Choose 2 brackets... |
option_5 | ABC-123 | 1 | 1 | radio | I don't | Fixtures | Select 2 fixtures... |
option_6 | ABC-123 | 0 | 2 | checkbox | fi | Stand | Choose a stand... |
- option_code = Code used for updates and links.
- parent_sku = Parent product SKU.
- required = Is the option required?
- position = Order (1, 2, 3...).
- type =
radio
,checkbox
.- language_code = Language information (e.g.
fi
).- title / description = Display texts in the language in question.
bundle_selections.csv (Export / Import)
option_code | parent_sku | sku | position | is_default | selection_price_type | selection_price_value | selection_qty | selection_can_change_qty |
---|---|---|---|---|---|---|---|---|
option_5 | ABC-123 | KNI-001 | 1 | 1 | 0 | 0.00 | 2 | 1 |
option_5 | ABC-123 | KNI-002 | 2 | 0 | 1 | 1.50 | 1 | 0 |
option_6 | ABC-123 | JAL-100 | 1 | 0 | 0 | 0.00 | 1 | 1 |
- option_code = Which option does the child product belong to?
- parent_sku = Parent product (SKU).
- sku = Children's product SKU.
- position = Display order within the same option.
- is_default = Is the selection active by default (radio/checkbox).
- selection_price_type = 0 = fixed price, 1 = “linked”.
- selection_price_value = Price amount (e.g. 9.99). Can be 0.00 or empty if linked.
- selection_qty = Default quantity.
- selection_can_change_qty = Whether the customer can change the quantity.
Restrictions & things to consider
-
UTF-8 encoding:
The CSV file must be saved in UTF-8 format (without BOM) to avoid problems with special characters. -
Required fields:
- In Options import,
parent_sku
andtype
and eitheroption_code
or empty → a new one is created. -
In Selections import,
option_code
,parent_sku
,sku
are critical.
- In Options import,
-
No error correction :
If the number of columns does not match orparent_sku
/sku
is not found, the row is usually skipped. Check the log or on-screen messages for any problems. -
Existence of products :
It is a good idea to make sure that both the main and child products have been created in the system before importing the bundles. -
option_code
- It is strongly recommended to set a permanent code to make updates easier. If you leave it blank, the system will come up with “option_123”, which may not be as descriptive.
Summary
CSV-based bulk editing is an efficient way to manage bundled products in AI Commerce platform, especially if there are a lot of products. However, the process is sensitive to the correct column names, ordering, and assumptions. We recommend first creating a few test bundles via the UI, doing an Export, viewing the resulting CSV structure, and only then doing a large-scale Import.
Always remember:
- Use backups (Export before Import).
- Save the CSV in UTF-8 format.
- Follow the column headings & order that the Export script shows.
-
Check the SKUs (
parent_sku
,sku
) and language codes (language_code
). - option_code is a unique identifier for options. If it is missing, a new option is created.
With these instructions and tested CSV templates, you will be more confident in managing and maintaining large bundles without errors!