Import Products with Variants from Excel: Size, Color and Stock in One File
You can upload products with size and color variants in one go from an Excel file. Here is how to fill in the template, group variants and get through the mapping steps.

In this post
You don't have to enter products with variants into UlakChat one by one. Use the Import from File button on the My Products page to upload an Excel or CSV file. Each size and color option of a product goes on its own row, and a shared group number tells the system to combine those rows into one product.
This guide covers how to prepare the file, how to group variants and what happens at each step of the import screen.
Why upload products from a file?
Your automatic replies are only as accurate as your catalog. When a customer asks "Do you have it in medium?", the answer comes from the variant and stock details in the product record. If a product is missing, or its variants are incomplete, the automation won't guess. It just can't answer.
If you have fifty products and each has six or seven size and color combinations, entering them by hand takes hours. Most shops already keep a stock spreadsheet. Moving it into the template and uploading it in one go is the shortest path.
Download the template
On the My Products page, click Import from File. The first step, Upload File, offers two templates: Download Excel Template and Download CSV Template. We recommend the Excel template because it has three sheets:
- Instructions: a short set of rules.
- Field List: what each column means, whether it's required and an example value.
- Products: the sheet you fill in.
Don't change the column headers on the Products sheet. The import screen matches columns by their headers. If you change a header, you'll have to map that column by hand.
In the template, columns such as Product Condition, Publish Status, Currency and Has Variants? show a dropdown when you click a cell. Don't type free text in these cells. Pick from the list.
How variant grouping works
There's one rule to remember for variant imports: each variant is its own row, and every variant of the same product carries the same Product Group Number.
Say a T-shirt comes in red M, red L and black M. Your file looks like this:
| Product Group Number | Product Name | Has Variants? | Option 1 - Name | Option 1 - Value | Option 2 - Name | Option 2 - Value | Variant Code (SKU) | List Price | Stock |
|---|---|---|---|---|---|---|---|---|---|
| TSH-100 | Cotton T-Shirt | Yes | Color | Red | Size | M | TSH-100-RED-M | 299.90 | 12 |
| TSH-100 | Cotton T-Shirt | Yes | Color | Red | Size | L | TSH-100-RED-L | 299.90 | 8 |
| TSH-100 | Cotton T-Shirt | Yes | Color | Black | Size | M | TSH-100-BLK-M | 299.90 | 0 |
In the panel these three rows become a single "Cotton T-Shirt" product with three variants. A few details:
- Option columns. A product can have up to three variant axes: Option 1, Option 2 and Option 3. Each axis has a name (Color, Size, Material) and the value for that row (Red, M, Cotton).
- Price and stock are per row. Each variant can have its own List Price, Sale Price and Stock. If black M is sold out, enter 0 as its stock.
- SKU and barcode must be unique. Variant Code (SKU) and Barcode must be different on every row.
- Product details come from the first filled row. Product level fields such as name, description, brand and category are read from the first filled row of the group. If a later row has a different value, the import doesn't stop. The first value is used and you'll see a warning in the results. You don't need to copy these details to every row, but don't enter different values either.
- Copy and paste is fastest. To add a variant, copy an existing row and then change the SKU, barcode and option values.
In the DM, these options reach the customer as buttons:
The customer picked the Cotton T-Shirt.
Which Color?
Red
Which Size?
L
Status of Color: Red, Size: L: In stock. Price: 299.90 ₺.
There's a cap on how many variants one product can have. Rows over that cap aren't imported, and the results tell you how many rows were left out for which product.
Products without variants
For a one-size bag or accessory, enter No in the Has Variants? column and leave the option columns empty. A row with an empty Product Group Number also counts as a product on its own.
Images
You can't paste images into a cell. Instead you enter the image's web address, starting with http or https. There are two columns:
- Product Images: images shared by all variants. Separate several addresses with commas.
- Variant Image: the main image for the variant on that row only. Put the red T-shirt photo on the red rows and the black one on the black rows.
There is also a Variant Extra Images column for a variant's additional images. Images are downloaded during the import and saved to your storage. If your storage fills up, the remaining images aren't downloaded, and the Storage Limit line on the results screen shows how many were left out.
The import screen, step by step
Once your file is ready, the import goes through these steps:
- Upload File. Drag and drop the file, or click to choose it. CSV, XLS and XLSX are accepted, and the file can't be larger than 20 MB. This screen also shows how many products you can still add.
- Select Header Row. The system shows the first 10 rows of your file and guesses which one holds the headers. If you used the template, the guess will be right. Press Continue.
- Column Mapping. Each column in your file is linked to a product field. Template headers are matched automatically. If you uploaded your own spreadsheet, you pick the fields here by hand. Fields are grouped under Identity, Basic Info, Variant Options, Price & Stock, Media, Shipping & Dimensions and Policy & Other. The only required field is Product Name.
- Value Mapping. If the status or currency values in your file differ from the ones the system knows (for example, you wrote "on sale"), you link them here to values such as Active or Inactive. If nothing needs mapping, this step is skipped.
- Review and Confirm Results. Here you see how many products and variants will be added and which rows have errors.
- Start Import. The import runs in the background. You can close the page, and you'll get a notification when it's done.
You can also upload your own stock spreadsheet without converting it to the template. Columns that have no match in the template, such as material or country of origin, can be mapped to Custom Attribute (free-form), where you type the attribute name yourself.
Existing products and conflicts
If a product's code in the file already exists in the panel, that row is marked Conflict in the review step. For grouped rows, the Product Group Number is used as the code. For each conflict you have two choices:
- Skip: the product in the panel stays as it is.
- Overwrite: the product in the panel is updated with the details from the file.
If there are many conflicts, use Bulk Decision for All Conflicts and choose Skip All or Overwrite All. The decision applies per product. You can't skip one variant of a product and overwrite another. The choice applies to all its variants.
Common mistakes
- Writing the group number differently across variants. "TSH-100" and "TSH100" become two separate products. Use exactly the same value on every row of the same product.
- Using the same SKU on two rows. Forgetting to change the SKU on a copied row is the most common mistake.
- Entering a file name instead of an image address. "red.jpg" won't work. You need the full web address.
- Going over your product limit. If the file has more products than you have room for, the first rows are processed and the rest are reported as Skipped Due to Quota. The review step tells you this up front.
- Losing track of failed rows. The results screen lists failed rows with the reason for each. Fix them and upload a new file with only those rows.
After the upload
Once your products are in the panel, two jobs remain. First, link your Instagram posts to the right products in the Post Mapping tab, so people who comment get details for the right product. Then add product steps to your message automation. When a customer types a product name, the steps that find the product and ask for size and color draw on this catalog.
For general automation setup, see our Instagram DM automation page. To let AI build the flow for you, read the AI Flow Builder guide.
Frequently asked questions
How do I add images to the file?
You can't paste images into the file. Instead you enter their web addresses (http or https). Images shared by all variants go in the Product Images column, and an image for a single variant goes in the Variant Image column. Images are downloaded during the import and saved to your storage.
Can I put products without variants in the same file?
Yes. Enter No in the Has Variants? column and leave the option columns empty. A row with an empty Product Group Number also counts as a product on its own.
Do I have to stay on the page while the import runs?
No. Once the import starts you can close the page. It keeps running in the background, and you'll see a notification in the panel when it's done.


