Merchant Portal: Import Products
Edit on GitHubTo import products in the Merchant Portal, follow these steps:
- In the Merchant Portal, go to Data Import.
- On the Data Import page, click Start Import. This opens the Start Import drawer.
- In File Templates, click CSV template Product to download a file template.
- In Import Configuration, select Product and choose the import file with products from your computer.
- Click Import to start uploading the selected file.
If there are any issues with the file, warning messages will appear. Fix the issues and re-import the file as needed.
The imported file will be listed on the Data Import page. If there are no errors, the status will be Successful.
Product import file reference
Some editors change symbols depending on your location. To ensure successful imports, we recommend using Google Sheets to edit import files.
This section explains how to fill out a product import file.
COLUMN | REQUIRED | DATA TYPE | DATA EXAMPLE | DATA EXPLANATION |
---|---|---|---|---|
abstract_sku | Create only | String | 009 | SKU identifier of an abstract product. Product type is defined in assigned_product_type . |
is_active | Create only | Boolean | 1 | Status of the concrete product. Can be active (1) or inactive (0). |
concrete_sku | ✓ | String | 009_123456 | SKU identifier of the concrete product. Required only if a concrete product is created or updated. Product type is defined in assigned_product_type . |
store_relations | String | DE;AT | Product availability in stores. Supports multiple values separated by ; . |
|
product_abstract.categories | String | cables;camcorders | Product category assignments. Supports multiple values separated by ; . |
|
product.%ATTRIBUTE_KEY% Example: product.color |
String | green;blue | Product attributes. Supports multiple values separated by ; . |
|
product.name.%LOCALE% Example: product.name.en_US |
Create only | String | Video Camera | Localized name of the concrete product. |
product.description.%LOCALE% | String | This is a budget-friendly video camera. | Localized description of the concrete product. | |
product_abstract.name.%LOCALE% | Create only | String | Video Camera | Localized name of the abstract product. |
product_abstract.description.%LOCALE% | String | This is a budget-friendly video camera. | Localized description of the abstract product. | |
product_abstract.meta_title.%LOCALE% | String | Affordable Video Camera | Localized meta title of the abstract product. | |
product_abstract.meta_description.%LOCALE% | String | Discover an affordable video camera that delivers excellent quality and performance. | Localized meta description of the abstract product. | |
product_abstract.meta_keywords.%LOCALE% | String | affordable video camera, cheap video camera, budget video camera | Meta keywords of the abstract product. | |
product_abstract.tax_set_name | Create only | String | Taxed Goods | Tax set name assigned to the abstract product. |
product_abstract.new_from | Date | 2025-06-01 00:00:00 | Start date of product availability. | |
product_abstract.new_to | Date | 2025-06-15 00:00:00 | End date of product availability. | |
product.assigned_product_type | ✓ | String | concrete | Defines the type of fields being imported: abstract — Only abstract fields are imported. concrete — Only concrete fields are imported. both — Both abstract and concrete fields are imported. |
product_abstract.url.%LOCALE% | Create only | String | /de/mydemo-product | URL of the product in the specified locale. |
product.is_quantity_splittable | Boolean | 1 | Defines if the product is splittable. | |
product.is_searchable.%LOCALE% | Boolean | 1 | Defines if the product is searchable in the given locale. | |
product_stock.%WAREHOUSE_NAME%.quantity | Integer | 10 | Number of product items in stock for the specified warehouse. | |
product_stock.%WAREHOUSE_NAME%.is_never_out_of_stock | Boolean | 1 | Used for non-tangible products (examples: software, services). Set to 1 (true) if the product never runs out of stock. | |
product_price.%STORE%.%PRICE_TYPE%.%CURRENCY%.value_net | Integer | 10077 | Net price of the product. Example: 10077 = 100.77€. |
|
product_price.%STORE%.%PRICE_TYPE%.%CURRENCY%.value_gross | Integer | 10077 | Gross price of the product. Example: 10077 = 100.77€. PRICE_TYPE can be default or original. |
|
abstract_product_price.%STORE%.%PRICE_TYPE%.%CURRENCY%.value_net | Integer | 10077 | Net price of the abstract product. Example: 10077 = 100.77€. |
|
abstract_product_price.%STORE%.%PRICE_TYPE%.%CURRENCY%.value_gross Example: abstract_product_price.DE.default.EUR.value_gross |
Integer | 10077 | Gross price of the abstract product. Example: 10077 = 100.77€. |
|
product_image.%LOCALE%.%IMAGE_SET_NAME%.sort_order Example: product_image.en_US.default.sort_order |
Integer | 10 | Display order of images. Required if an image set name is provided. | |
product_image.%LOCALE%.%IMAGE_SET_NAME%.external_url_large Example: product_image.en_US.default.external_url_large |
String | https://example.com/image.png |
External link to the large version of the product image. Required if an image set name is provided. | |
product_image.%LOCALE%.%IMAGE_SET_NAME%.external_url_small Example: product_image.en_US.default.external_url_small |
String | https://example.com/image.png |
External link to the small version of the product image. Required if an image set name is provided. | |
abstract_product_image.%LOCALE%.%IMAGE_SET_NAME%.sort_order Example: abstract_product_image.en_US.default.sort_order |
Integer | 10 | Display order of images for the abstract product. Required if an image set name is provided. | |
abstract_product_image.%LOCALE%.%IMAGE_SET_NAME%.external_url_large Example: abstract_product_image.en_US.default.external_url_large |
String | https://example.com/image.png |
External link to the large version of the abstract product image. Required if an image set name is provided. | |
abstract_product_image.%LOCALE%.%IMAGE_SET_NAME%.external_url_small Example: abstract_product_image.en_US.default.external_url_small |
String | https://example.com/image.png |
External link to the small version of the abstract product image. Required if an image set name is provided. |
Error Management
If a file contains mistakes, the import status will change to Failed
. You can download and analyze an error file to identify the issues.
- Only the first error is processed per imported line. If a line contains multiple mistakes, you must re-import the file after fixing the first error to see the next one.
- If a file contains several lines with mistakes, only those lines will not be imported; all other lines will be processed successfully.
Product Approval Status
By default, products are imported with the approval status Waiting for Approval. This behavior can be customized at the project level by configuring an alternative status.
Thank you!
For submitting the form