Import products from a spreadsheet
Upload a CSV or Excel file of products, prices and stock, check how its columns are read, then add it to your catalogue.
Updated 24 Oct 2026
You can import products, prices and stock by uploading a CSV or Excel file from Products → Import products, whether they are in a spreadsheet or exported from another system. Hapro works out which column is which, shows you how it will read your file, and lists each row that needs fixing. Nothing changes until you select Import.
Where to start
Any of these opens the same Import products window:
- Products → Import products.
- Settings → Integrations → the CSV / Excel card → Import a file.
- Settings → Setup → the Products step → Upload a spreadsheet → Choose a spreadsheet.
Importing needs permission to change the catalogue, which owners and administrators have.
Your file
- CSV or Excel (.xlsx). From an Excel workbook, only the first sheet is read. Older Excel files (.xls) are not accepted: in Excel, choose File → Save As → Excel Workbook (.xlsx) first.
- Up to 20,000 rows and 8 MB.
- The first row holds the column headings.
Your columns can have any names. Download the template (CSV) in the import window gives you a file with the usual headings and two example rows; replace the examples with your own products.
Hapro copes with the quirks of everyday files: prices written with £ or thousands separators, CSV files separated by commas, semicolons, tabs or |, and barcodes that Excel stores as numbers.
Check your columns
- Drag your file into the window, or select Drag your file here, or browse and choose it.
- Hapro reads every row and opens Check your columns. Nothing is changed yet.
- Each column in your file has an Import as list showing what Hapro has matched it to. Change any that are wrong, or choose Don’t import to leave a column out. The preview and the counts update as you go.
Hapro matches common names for you, such as Item Code or PLU as SKU, Title as Product name, RRP as Price and Qty as Stock. It also matches names with small typing mistakes, such as "Prce". A column it cannot match is shown as Don’t import for you to decide.
Required: SKU, Product name and Price. Until each has a column, the window says Choose a column for every required field and you cannot import.
Optional: Stock, Barcode, Brand, Category, Description, Short description, Unit (used as the size or variant name, such as "5kg") and Pack size.
An empty cell in an optional column leaves that detail as it is. A blank stock cell is not zero, and a blank description does not remove one a product already has.
Rows that need fixing
The counts show how many rows are New, Updated, Unchanged or Need fixing. Rows that need fixing are listed with their row number, column and the problem, for example a missing SKU, a price Hapro cannot read, or a SKU that appears twice in the file. These rows are skipped; the rest can still be imported.
Select Download the N rows that need fixing (errors.csv) to get them as a file: your own columns, with the row number at the start and the problem at the end. Fix them, save, and upload the file again. It is safe to open in Excel.
Import
- If you have more than one shop, choose where the stock goes in Stock goes to. Each stock figure replaces the count at that shop, as if you had counted the shelf. If you have no shop yet, products are imported without stock.
- Leave Put products on sale straight away on to put products with a price on sale for the assistant, or turn it off to check them as drafts first.
- Select Import N products.
A large file carries on in the background, with a progress bar. You can close the window and the import keeps going; Products shows the results as they arrive.
When it finishes, Import finished says how many products were added, updated or already up to date, and how many could not be imported. Select View products to see them.
Updating products you have already imported
Upload the file again. A row whose SKU already exists updates that product, and a row with a new SKU adds a new one. Rows that have not changed are reported as already up to date.
Products that come from a connected store, such as Shopify or WooCommerce, cannot be changed this way. Change them in the store instead.