Product Import Format (CSV & Excel)
How to prepare a CSV or Excel file for a Furniture Connect product import: required columns, pricing, images, materials, metric or imperial dimensions, variants and how re-imports update existing products.

How a spreadsheet import works
Supplier files rarely share a layout. One puts the header on row four, another splits dimensions across six columns, another sends prices with a currency symbol in every cell. So the import doesn't ask you to match columns on a form. The assistant reads the file and proposes the mapping, and you confirm it.
- Open Import products on the Products page and upload up to five files: CSV, Excel, PDF price lists, spec sheets or photos. You can also point it at a website instead.
- The assistant previews each sheet, finds the header row even when it isn't the first, and proposes which column feeds which product field.
- You confirm or correct the mapping and any judgement calls, such as which of two price columns is the retail price.
- The import runs in batches and reports how many products were created and updated, plus any row issues.
Standard Shopify and WooCommerce product exports are recognized from their headers and mapped automatically. When you confirm a mapping for a supplier's file, it can be saved, and the next file with the same headers starts from that mapping.
There's no fixed template. Upload the file in whatever layout you have, and the assistant maps it with you.
If you are starting from a supplier's spreadsheet rather than your own, furniture supplier catalog onboarding walks through the clean-up that comes before this step, and the furniture product data model explains which of the fields below matter for each product type.
Product details
| Field | Type | Notes |
|---|---|---|
| Product Name | text | Required. Rows without a name are skipped. |
| SKU | text | Used to match existing products on re-import. |
| Barcode | text | EAN, UPC or GTIN. Invalid barcodes are kept but flagged. |
| Short Description | text | |
| Long Description | text | Marketing or romance copy. |
| Product Type | text | Category or product type label. |
| Status | enum | active, draft or archived. Anything else is ignored, and new products start as draft. |
| Country of Origin | text | ISO-2 code (US, VN, MX) or the full country name. |
| Care Instructions | text | |
| Key Features | list | Separate features with commas, semicolons or new lines. |
| SEO Keywords | list | |
| SEO Title | text | |
| SEO Description | text |
Pricing
Prices are stored on the product's default variant. There's no currency column: amounts import in your catalog's currency, and if a cell or heading shows a different currency, the import warns you rather than converting. European number formats such as 1.251,00 are read correctly, and currency symbols in cells are ignored.
| Field | What it holds |
|---|---|
| Cost Price | What you pay per unit. |
| Trade Price | What a business customer pays. |
| RRP | Recommended retail price. |
| Retail Price | What you charge consumers. |
| Promotional Price | A temporary consumer price. |
| MAP | Minimum advertised price. |
| IMAP | Internet minimum advertised price. |
| VAT Rate | A percentage, where 20 means 20%. |
MAP and IMAP only appear in regions that use advertised price floors.
Images
Image URLs must be absolute (start with http:// or https://) and publicly reachable. Shared Dropbox, Google Drive and GitHub links are converted to direct links. After the import, images are copied into Furniture Connect, so the products don't depend on the original host. Furniture asset metadata covers why an image's role matters once it's in.
| Field | Stored as | Notes |
|---|---|---|
| Primary Image URL | Hero image | A single image. Without one, the first non-swatch image becomes the hero. |
| Gallery Images | Gallery | Several URLs in one cell. No role applied. |
| Fabric Images | Fabric swatches | Several URLs, tagged as fabric. |
| Finish Images | Finish swatches | Several URLs, tagged as finish. |
Put several URLs in one cell on separate lines, or separate them with commas or semicolons. If the same URL appears in more than one image column, it's stored once.
The assistant can also place images into your media slots, such as a white cutout, a lifestyle shot or a dimensional drawing. It can bind a whole column to a slot, or match gallery images to a slot by a fragment of the filename, such as -dims. Each slot holds one image.
Linking to your material library (recommended)
If you already maintain a material library on the Materials page, reference existing entries by their material code instead of re-uploading swatch images. Matching ignores upper and lower case.
| Field | Links to | Notes |
|---|---|---|
| Fabric Materials | Fabric materials | Comma-separated material codes. |
| Finish Materials | Finish materials | Comma-separated material codes. |
Unknown codes are listed in the import issues. The product still imports, just without that material link. You can use the image columns and the material columns on the same row, because they fill different fields.
Dimensions and units
Metric and imperial both work. Keep measurements in the units the supplier used and put the unit in the column heading, such as Width (cm), Depth (in) or Weight (kg). The heading's unit is used first. If a heading has no unit, the import falls back to your catalog's default unit, so name the unit whenever you can.
Lengths can be in millimeters, centimeters, meters, inches or feet, and weights in kilograms, grams, pounds or ounces. A range such as 85-110 is stored as a minimum and maximum. A value such as 130/153 is rejected with a warning, so split it into two columns.
Keep product and package measurements in separate columns. The import recognizes:
| Product | Package and shipping |
|---|---|
| Width, Height, Depth, Length | Package Width, Height, Depth |
| Weight | Package Weight |
| Seat Height, Arm Height, Clearance | Package Type |
| Piece Count | Small Parcel, LTL Freight (yes/no) |
Yes/no cells accept yes / no, true / false, 1 / 0 or y / n, in any case.
Lighting attributes
| Field | Type |
|---|---|
| Bulb Quantity | number |
| Socket | text |
| Max Watt | number |
| Connection Type | text |
| Chain Length (ft) | number |
| Chain Type | text |
| Canopy Size | text |
| Cable Length | text |
| Cable Type | text |
| Switch | text |
| Plug | text |
| Shade | text |
| Shade Type | text |
| Glass | text |
| Glass Type | text |
| Amp | number |
Regulatory
| Field | Type |
|---|---|
| UL Certified US/Canada | yes/no |
| Anti-tip Kit | yes/no |
| Prop 65 Warning | yes/no |
| Prop 65 Substance | text |
| Prop 65 Harm | text |
Other attributes
The import also recognizes common operational fields and creates them as attributes the first time you map them. These include stock, lead time, warehouse location, vendor, supplier name and part number, assembly, warranty, composition, discontinued and intro season. Free-text Fabric and Finish columns are kept as attributes too, but they don't link to the Materials page, so prefer the material code columns above.
Any other column needs a custom attribute that already exists in your catalog. If it doesn't, ask the assistant to create the attribute before the import runs. For multi-select attributes, separate the values with commas.
Variants and product families
Each row in a spreadsheet import becomes a standalone product. The import doesn't group rows that share a base name into variants.
For a range where one sofa comes in several fabrics, finishes or sizes, ask the Furniture Connect Agent to organize it into a product family. It reads the variant structure, confirms with you how to model it, then builds the family. A product can have up to three variant axes, such as size, fabric and leg finish.
Shopify exports list each variant on its own row with a blank title. Those rows take the parent row's details, but they still import as separate products.
How re-imports update products
A row whose SKU matches a live product updates that product instead of creating a duplicate. Only the fields the file carries change; everything else on the product is kept. A blank cell never clears a value, so to remove one, edit the product in the catalog.
Rows without a SKU always create a new product. If the only product with that SKU has been deleted, the row creates a new one. If your plan's product limit is reached, new rows are refused, but existing products still update.
If you are comparing import capabilities across systems, use the furniture PIM buyer's guide to test how each handles dimensions, variants and supplier files.
Other ways to get products in
A spreadsheet is the quickest route for a whole range, but it isn't the only one. Pick the route that matches where the data lives today.
| Route | Best for | What to know |
|---|---|---|
| Spreadsheet import | A full range or supplier file you already have | The assistant proposes the mapping for you to confirm. SKU matches existing products on re-import. |
| Website import | A range already published on a supplier's or your own site | The assistant confirms the scope with you, then imports the products. |
| Supplier Submissions | Suppliers adding new products one at a time | Suppliers submit through a portal link. Each submission waits for your team's approval and becomes a draft product. |
| Shopify connector | Products already live on a Shopify store | Flags Shopify products that may already be in your catalog, so you can link them or import them as new. |
| OrderWise connector | Teams running OrderWise as their ERP | Pulls products and variants from OrderWise without a spreadsheet in between. |
| Furniture Connect Agent | A range with fabric, finish or size variants | Confirms how to model the variants with you, then builds the product families. |
Common issues
- Row skipped: missing required field "name": the row has no product name, or the name column wasn't mapped.
- Unknown material code: the code doesn't exist in your material library. Add the material on the Materials page and re-import, or remove the code from the cell.
- Image not stored: the URL isn't a valid
http(s)address. Make sure it's absolute and publicly reachable. - Currency warning: a cell or heading shows a different currency from your catalog's. The amount imports unchanged, so convert it first if it needs converting.
- Unknown mapping target: a column was mapped to a custom attribute that doesn't exist yet. Create the attribute, then run the import again.
Frequently asked questions
Which columns are required in the product import file?
Only a product name is required; a row without one is skipped. Every other column is optional, so include only the fields you have. SKU isn't mandatory, but it's how a re-import finds and updates an existing product, so include it if you plan to update the catalog later.
How do re-imports treat existing products?
A row whose SKU matches a live product updates that product instead of creating a duplicate. Only the fields the file carries are changed; everything else on the product is kept, and a blank cell never clears a value. To clear something, edit it in the catalog. Rows without a SKU always create a new product.
Does the import group my rows into variants?
No. Each row in a spreadsheet import becomes a standalone product. For a range with fabric, finish, color or size options, ask the Furniture Connect Agent to organize it into a product family with variants. It confirms the structure with you first, and a product can have up to three variant axes.
Can I import dimensions in centimeters or kilograms?
Yes. Metric and imperial both work: millimeters, centimeters, meters, inches and feet for length, and kilograms, grams, pounds and ounces for weight. Keep the values in their original units and put the unit in the column heading, such as Width (cm). Keep product and package measurements in separate columns.
How do I link imported products to my existing material library?
Use the Fabric Materials and Finish Materials columns with comma-separated material codes from the Materials page; matching ignores upper and lower case. Unknown codes are listed in the import issues and the product still imports, just without that link, so add the material and re-import or remove the code.
Still stuck on a file? Reach out to support with your spreadsheet and we'll help you map it.




