Solidshop reads and writes a single CSV file with one row per variant — the same shape Shopify and WooCommerce export. If you already have a catalogue in a spreadsheet or another cart, that file is usually close enough to import as-is.

Everything lives under Solidshop → Import / Export, and the Products list has Import and Export buttons in its toolbar.

Exporting

Open the Export tab, choose whether to export the whole catalogue or just what the products list is currently filtered to, and download the file. What comes out is import-ready: export, edit prices or stock in a spreadsheet, import the same file back.

The Export button on the products list is the shortcut for both: tick some rows to export only those, or tick nothing and get everything the current search and filters show.

  • Translation columns — adds a set of per-language columns for each language you select. Leave it empty for a single-language file.
  • Separator — use a semicolon if your spreadsheet is set to a locale that expects one.
  • Byte-order mark — keep this on for Excel, which otherwise misreads accented characters.

Importing

  1. Upload a .csv file. Comma, semicolon, tab and pipe separators are detected automatically, as is a byte-order mark.
  2. Match your columns. Solidshop guesses the mapping from the headings — including Shopify and WooCommerce spellings such as Handle, Title, Body (HTML) and Variant Inventory Qty — and shows sample data from your file next to each one so you can check it. Anything unrecognised is left for you to map or ignore.
  3. Run it. The import works through the file in batches so a large catalogue never hits a PHP timeout. Anything it could not do is listed as you go, with the line number from your file.

Nothing is written until you have seen the mapping screen. Download the blank template from the upload step if you would rather start from Solidshop’s own column names.

How rows become products

Rows that share the same value in the match column (Alias by default) are one product, and they must sit next to each other in the file. The first of those rows carries the product; every row carries one variant.

Alias,Name,Price,Option1 Name,Option1 Value,Variant SKU,Variant Price
cotton-tee,Cotton Tee,19.00,Size,S,TEE-S,19.00
cotton-tee,,,Size,M,TEE-M,19.00
cotton-tee,,,Size,L,TEE-L,21.00
mug,Enamel Mug,9.50,,,,

That file creates two products: a tee with three size variants, and a mug with no variants at all (its price and stock live on the product itself). You can match on SKU or ID instead of alias if that suits your source data better.

Blank cells never erase anything

A column you mapped but left empty means “leave this alone”, not “set this to empty”. That is what makes a two-column file — alias and price — a safe way to bulk-update prices without touching descriptions, images or stock.

Creating versus updating

  • Update, and create the ones that are new — the default.
  • Only create new products — existing ones are skipped and listed.
  • Only update — nothing new is created.

Column reference

Headings are matched case- and punctuation-insensitively, so price_origin, Price Origin and Compare At Price all mean the same column.

Product

  • ID, Alias, Name, SKU, Barcode
  • Product Typephysical, virtual, and any type added by an installed plugin. An unknown type leaves the existing one untouched.
  • Published, Featured1/0, yes/no and true/false are all understood.
  • Category — a path such as Apparel/Shirts. Missing levels are created unless you turn that off.
  • Brand, Store, Tax Class, Access — matched by name.
  • Language — the source language tag, e.g. en-GB.
  • Start publishing, Finish publishing — read as UTC.

Content & SEO

  • Summary, Description, Page Title, Meta Description
  • Media — one or more paths relative to your shop media folder, separated by a pipe (|). Remote image URLs are not downloaded; upload the files first and reference them by path.

Pricing & inventory

  • Price, Compare At Price, Cost Per Item — currency symbols and both decimal conventions (1,299.50 and 1.299,50) are handled.
  • Weight, Quantity, Track Quantity

Options & variants

  • Option1 Name / Option1 Value through Option3 — up to three options per product.
  • Variant SKU, Variant Barcode, Variant Price, Variant Compare At Price, Variant Cost Per Item, Variant Quantity, Variant Track Quantity, Variant Weight, Variant Image

Changing a product’s option names, or adding an option value it did not have before, rebuilds its whole variant set. Variants your file does not list are reset to their defaults. Export the product first if you want to keep them — then every variant is in the file.

Translations

On a multilingual site, add a language tag to any of Name, Alias, Summary, Description, Page Title or Meta Description: Name [vi-VN], Description (fr-FR) and summary:de-DE are all recognised. Those values are written to the product’s translation for that language, leaving the source language alone.

Coming from another cart

Export from your current cart, then upload that file here. A Shopify products export maps almost entirely on its own. For carts without a compatible export, put your data into the template from the upload step — alias, name, category and price are enough to get a catalogue in, and everything else can follow in a second import.