Import Products in Medusa Admin
In this guide, you’ll learn how to import products into your Medusa store.
Import Products from a CSV File#
If you're migrating from another commerce platform, or from Medusa v1, you can import products into Medusa using a CSV file.
When you import the CSV file, Medusa will either create or update products based on the CSV file you upload.
CSV File Format#
In the import form, you can download a template CSV file to see the format required for the import.
Each row in the CSV file represents a product variant to create or update. The columns in the CSV file holds the details of the product variant and its associated product. The CSV file can have the following columns:
Column | Description |
---|---|
Product Id | The ID for an existing product to update. If provided, no other columns are required. |
Product Handle | A unique identifier used in the product's URL on the storefront. It allows you to create a human-readable URL for the product. The handle must be unique across all products, and it must contain lowercase letters, numbers, and hyphens (- ). If not specified, Medusa will generate a handle from the title. |
Product Title | The product’s title. This is the only required field if you don't provide a Product Id . |
Product Status | The status of the product. Can be draft (default), published , proposed , or rejected . |
Product Description | A description of the product. |
Product Subtitle | A subtitle for the product. |
Product External Id | The ID of the product in an external system, such as an ERP. |
Product Thumbnail | The URL of the product's thumbnail image. |
Product Collection Id | The ID of the collection the product belongs to. |
Product Type Id | The ID of the product type. |
Product Category * | The ID of a product category, where * is the number of the category, allowing you to add more than one category. For example, Product Category 1 . |
Product Created At | The date and time when the product was created. |
Product Deleted At | The date and time when the product was deleted. |
Product Discountable | Whether the product can be discounted. Can be true or false . |
Product Height | The height of the product. |
Product Hs Code | The Harmonized System (HS) code for the product. |
Product Image * | The URL of a product image, where * is the image's number, allowing you to add more than one image. For example, Product Image 1 . |
Product Length | The length of the product. |
Product Material | The material of the product. |
Product Mid Code | The Manufacturer Identification Number (MID) for the product. |
Product Origin Country | The country of origin for the product. |
Product Tag * | The ID of the product's tag, where * is the tag's number, allowing you to add more than one tag. For example, Product Tag 1 . |
Product Sales Channel * | The ID of a sales channel the product is available in, where * is the sales channel's number, allowing you to add more than one sales channel. For example, Product Sales Channel 1 . |
Product Updated At | The date and time when the product was last updated. |
Product Weight | The weight of the product. |
Product Width | The width of the product. |
Variant Id | The ID for an existing variant to update. The variant must belong to the product specified in the Product Id column. If provided, no other variant-related columns are required. |
Variant Title | The title of the variant. |
Variant Sku | The SKU of the variant. |
Variant Upc | The UPC of the variant. |
Variant Ean | The EAN of the variant. |
Variant Hs Code | The Harmonized System (HS) code for the variant. |
Variant Mid Code | The Manufacturer Identification Number (MID) for the variant. |
Variant Manage Inventory | Whether Medusa manages the variant's inventory. Can be true or false . |
Variant Allow Backorder | Whether the variant allows backorders. Can be true or false . |
Variant Barcode | The barcode of the variant. |
Variant Created At | The date and time when the variant was created. |
Variant Deleted At | The date and time when the variant was deleted. |
Variant Height | The height of the variant. |
Variant Length | The length of the variant. |
Variant Material | The material of the variant. |
Variant Metadata | Metadata for the variant. |
Variant Option * Name | The name of the variant's option, where * is the option's number. For example, Variant Option 1 Name . |
Variant Option * Value | The value of the variant's option, where * is the option's number. For example, Variant Option 1 Value . |
Variant Origin Country | The country of origin for the variant. |
Variant Price * | The price of the variant in a currency, where * is the currency's ISO code. For example, Variant Price USD . |
Variant Price [X] Y | The price of the variant in a region, where X is the region's name, and Y is the ISO currency code of the region. For example, Variant Price Europe [EUR] . |
Variant Product Id | The ID of the product the variant belongs to. |
Variant Updated At | The date and time when the variant was last updated. |
Variant Variant Rank | The rank of the variant among its siblings. Can be 0 or higher. |
Variant Weight | The weight of the variant. |
Variant Width | The width of the variant. |
Shipping Profile Id | The ID of the shipping profile that the product belongs to. |
Import List of Products#
To import products:
- Go to the Products page.
- Click on the Import button at the top right.
- In the side window:
- If you’re unsure of what the CSV file’s format must be like, you can download the template CSV file.
- To upload the CSV file you want to import products from, either drag-and-drop the file to the upload area or click on the area to open a file picker.
- After you upload the CSV file:
- Check the number of products to be created or updated.
- To remove the uploaded file, click the icon, and choose Delete from the dropdown.
- Once you’re done, click the Import button.
This starts the import process which may take some time.
Check Import Status#
To check whether the import is in progress, finished, or failed:
- Click on the icon at the top right of the page.
- Find the product import, which should be the latest item on the list.
The text on the import item will explain the current state of the import.