# Tailored Products import Learn about the headers and values supported for importing Tailored Products from CSV files. Tailored Products let you customize a Product's appearance, such as names, descriptions, SEO fields, images, Assets, and Attributes, for individual [Stores](https://docs.commercetools.com/api/projects/stores.md). Tailoring applies at both the Product and Variant level. To learn more, see [Add tailored data for a Product](https://docs.commercetools.com/merchant-center/products.md#add-tailored-data-for-a-product). To publish newly imported Tailored Products, select the Publish all tailored products in the file checkbox. If not selected, the import only updates the staged representation of existing Tailored Products, and new ones are not published. ## Prerequisites A Tailored Product references both an existing [Product](https://docs.commercetools.com/api/projects/products.md#product) (by `key`) and an existing [Store](https://docs.commercetools.com/api/projects/stores.md) (by `key`). Both must exist in the Project before the import runs. If a Tailored Product overrides Variant-level data (images, assets, Attributes), the referenced Variants must also exist on the Product. Variants are matched by SKU. ## Supported headers and values ### Tailored Products When importing the complete Tailored Product data as one large CSV file, you can also include the headers and values from [Variants](https://docs.commercetools.com/merchant-center/import-tailored-products.md#variants), [Assets](https://docs.commercetools.com/merchant-center/import-tailored-products.md#assets), and [Images](https://docs.commercetools.com/merchant-center/import-tailored-products.md#images). You can update a Tailored Product only if it has a `key`. When updating Tailored Products, include only the headers and values for the fields you are updating. (a CSV formatted table follows. The first line are the column names.) Header,Value,Required/Optional `productTailoringKey`,A unique identifier for the Tailored Product that is imported. The key must only include letters, numbers, underscores (\_), or dashes (-).If a Tailored Product with the provided key exists in the Project, it is updated with the provided values—otherwise, a new one is created.,Required `product.key`,A unique identifier for the [Product](https://docs.commercetools.com/api/projects/products.md#product) that this tailoring applies to.,Required, when creating a new Tailored Product. `store.key`,A unique identifier for the [Store](https://docs.commercetools.com/api/projects/stores.md) that this tailoring applies to. A Product can have at most one tailoring per Store.,Required, when creating a new Tailored Product. `name.en`,A localized name that overrides the Product name in the referenced Store. You can provide multiple headers to include different language values.,Optional `description.en`,A localized description that overrides the Product description in the referenced Store. You can provide multiple headers to include different language values.,Optional `slug.en`,A localized slug that overrides the Product slug in the referenced Store. You can provide multiple headers to include different language values.,Optional `metaTitle.en`,A localized SEO title that overrides the Product `metaTitle` in the referenced Store. You can provide multiple headers to include different language values.,Optional `metaDescription.en`,A localized SEO description that overrides the Product `metaDescription` in the referenced Store. You can provide multiple headers to include different language values.,Optional `metaKeywords.en`,Localized SEO keywords that override the Product `metaKeywords` in the referenced Store. You can provide multiple headers to include different language values.,Optional `productAttributes.{nameOfAttribute}`,Replace `{nameOfAttribute}` with the name of a Product-level Attribute to override for this Store. Attribute names are case-sensitive. The value must conform to the type of the Attribute defined on the underlying Product Type. For more information, see [Attributes](https://docs.commercetools.com/merchant-center/import-tailored-products.md#attributes).,Optional Attribute prefixes Use the `productAttributes.{nameOfAttribute}` prefix for Product-level Attributes, and the `attributes.{nameOfAttribute}` prefix (under a Variant row) for Variant-level Attributes. This mirrors how Attributes are scoped on the underlying Product. #### Attributes All Attribute types, except nested Attributes, are supported. For boolean Attributes, the values must be lowercase. Replace `{nameOfAttribute}` with the name of the Attribute. Attribute names are case-sensitive. - For Reference Attributes, provide the following additionally: (a CSV formatted table follows. The first line are the column names.) Header,Value,Required/Optional `productAttributes.{nameOfAttribute}.key`,The `key` of the referenced resource.,Required `productAttributes.{nameOfAttribute}.typeId`,The name of the referenced resource. To know about the supported resources and their values, see [AttributeReferenceTypeId](https://docs.commercetools.com/api/projects/productTypes.md#attributereferencetypeid).,Required - For Money Attributes, provide the following additionally: (a CSV formatted table follows. The first line are the column names.) Header,Value,Required/Optional `productAttributes.{nameOfAttribute}.currencyCode`,An [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)-compliant currency code such as `USD`, `EUR`, or `GBP`.,Required `productAttributes.{nameOfAttribute}.centAmount`,An amount in the smallest indivisible unit for a currency. For example, `500` would be equal to USD 5.00 or JPY 500.,Required `productAttributes.{nameOfAttribute}.type`,`centPrecision`,Required `productAttributes.{nameOfAttribute}.fractionDigits`,The number of digits after a decimal separator. For example, `2` for USD or `0` for JPY.,Required #### Sets of Attributes For sets of simple Attribute types (such as numbers, text, and booleans), the header contains the Attribute name. The value is a semicolon-separated list. The following example demonstrates how to import a set of text values. (a CSV formatted table follows. The first line are the column names.) `productAttributes.colorCombination`,`productAttributes.numberSet` `red;green;blue`,`10;5;32` ##### Sets of complex Attribute types For sets of complex values (such as localized text, references, and money), you can import single set values. To do so, define the index and then the subfields in the header. The following example demonstrates how to update the first entry of a set of Attributes called `relatedCategories` that references Categories. (a CSV formatted table follows. The first line are the column names.) `productAttributes.relatedCategories.1.key`,`productAttributes.relatedCategories.1.typeId` `red-shirts`,`category` To update the second entry, include the same headers but change the `1` to `2`. You can also import multiple set values by using `*` instead of a number. With this approach, the values of set items are entered into sequential rows. The following example demonstrates how to create a set of Attributes called `relatedCategories` with three entries. (a CSV formatted table follows. The first line are the column names.) `productAttributes.relatedCategories.*.key`,`productAttributes.relatedCategories.*.typeId` `red-shirts`,`category` `summer-collection`,`category` `new-arrivals`,`category` The same patterns—Reference Attributes, Money Attributes, and sets of simple or complex Attributes—apply to Variant-level Attributes. Use the `attributes.` prefix in place of `productAttributes.` and include the row's `variants.sku` so the Variant the Attribute belongs to is identified. For example, `attributes.color.key` for a Variant-level Reference Attribute. ### Variants Variants of a Tailored Product must already exist on the underlying Product. Variants are matched by `variants.sku`. (a CSV formatted table follows. The first line are the column names.) Header,Value,Required/Optional `productTailoringKey`,A unique identifier for the Tailored Product the Variant data belongs to.,Required `variants.sku`,The SKU of an existing Product Variant on the underlying Product. Used to match the Variant.,Required, when importing Variant data. `attributes.{nameOfAttribute}`,Replace `{nameOfAttribute}` with the name of a Variant-level Attribute to override for this Store. Attribute names are case-sensitive. The value must conform to the type of the Attribute. For more information, see [Attributes](https://docs.commercetools.com/merchant-center/import-tailored-products.md#attributes).,Optional ### Assets Assets require an existing Tailored Product that references a Variant by SKU. You can update an Asset only if it has a `key`. (a CSV formatted table follows. The first line are the column names.) Header,Value,Required/Optional `productTailoringKey`,A unique identifier for the Tailored Product that the Asset belongs to.,Required `variants.sku`,The SKU of the Variant to add the Asset to.,Required `variants.assets.key`,A unique identifier for the Asset.,Required `variants.assets.name.en`,A localized name for the Asset. You can provide multiple headers to include different language values.,Required, when creating a new Asset. `variants.assets.description.en`,A localized description for the Asset. You can provide multiple headers to include different language values.,Optional `variants.assets.sources.uri`,A URI for the Asset.,Required, when creating a new Asset. `variants.assets.tags`,A semicolon-separated list of keywords used for categorizing and organizing Assets.,Optional ### Images Images require an existing Tailored Product that references a Variant by SKU. (a CSV formatted table follows. The first line are the column names.) Header,Value,Required/Optional `productTailoringKey`,A unique identifier for the Tailored Product that the image belongs to.,Required `variants.sku`,The SKU of the Variant to add the image to.,Required `variants.images.url`,A URL for the image in its original size, which must be unique within a single Variant.,Required `variants.images.label`,A custom label for the image.,Optional `variants.images.dimensions.w`,The width (in pixels) of the image.,Required, when creating a new image. `variants.images.dimensions.h`,The height (in pixels) of the image.,Required, when creating a new image. ## Importing multiple Variants for a Tailored Product To attach more than one Variant, or to attach multiple images or Assets to a single Variant, list each item on its own row. Leave the parent-level columns (`productTailoringKey`, `product.key`, `store.key`, and other general fields) empty in the additional rows. The import merges these rows into the Tailored Product identified by the most recent non-empty `productTailoringKey`. (a CSV formatted table follows. The first line are the column names.) `productTailoringKey`,`product.key`,`store.key`,`name.en`,`variants.sku` `tailoring-store-1`,`pillow-cover`,`store-1`,`Tailored pillow`,`pillow-variant-01` ,,,,`pillow-variant-02` `tailoring-store-2`,`pillow-cover`,`store-2`,`Tailored pillow v2`,`pillow-variant-01` ## Delete data When updating resources, you can remove data for optional fields. To remove data, in the CSV file, enter `[DELETE]` as the value for the header (field). When deleting values for reference fields or multi-value fields, you must add a new column with the common prefix as the header, and enter `[DELETE]` as the value. For example, to clear the localized name override for the German locale on a Tailored Product, add a column for `name.de-DE` with `[DELETE]` as its value. (a CSV formatted table follows. The first line are the column names.) `productTailoringKey`,`name.en-US`,`name.de-DE` `tailoring-store-1`,`Tailored Product name`,`[DELETE]` ## Related pages - [Section overview page](https://docs.commercetools.com/merchant-center.md) - [Previous page: Standalone Prices](https://docs.commercetools.com/merchant-center/import-standalone-prices.md)