Adding products, one at a time or by CSV

Last updated Oct 24, 2026

Applies to: All tiers  ·  Last reviewed: 2026-10-24

What this is

How to load a client's products into CanShip, change them, and retire the ones you no longer carry. You can add products one at a time with full detail, or import many at once from a CSV. Products always belong to a client.

Where products live

Go to Catalog > Products. The list shows each product's client, SKU, barcode, description, home location, whether it is lot tracked, its packaging, its sync state, price and origin. Search by SKU, barcode or description, or use the Client filter to focus on one client. New Product and Import CSV are the two ways to add products.

Add one product (full detail)

  1. Catalog > Products > New Product.
  2. Fill the four required fields: Client, Description (the product name), SKU and Price.
  3. Fill any of the rest that apply: Barcode; the switches for a lot tracked product, one that ships in its own container, and FDA-regulated, lithium battery, liquid or aerosol, and dangerous goods; the customs details; the manufacturer; and Width, Length, Height and Weight, in the units named on each field.
  4. Click Create. Create stays disabled until Client, Description, SKU and Price are filled. CanShip confirms with Created product and the SKU.

A SKU can be used once per client. If the client already has a product with that SKU, CanShip refuses with "A product with that SKU already exists for this client." and keeps what you typed, so you can correct the SKU and try again.

For what the customs fields do, see Shipping across the border: customs details. For lot tracked products, see Lot numbers, expiry dates and quarantine.

Change a product

Point at the product's row and click the pencil that appears at its end, make your changes and click Save. CanShip confirms with Saved product and the SKU. The edit form has everything the New Product form has, and adds Tags, a Home location for each warehouse, the US HS code and Notes.

Import products by CSV (bulk, per client)

  1. Catalog > Products > Import CSV.
  2. Pick the destination client. The whole file imports under that one client, so run one import per client. Choose File stays greyed until a client is picked.
  3. Prepare the file. Required columns are sku, description and price. Every other column is optional: the barcode, the customs details, the country of origin, the dimensions and weight, the lot tracked and own container switches, the four regulated flags, the US HS code, the manufacturer and tags. Use Download Template for the exact format. Give a row's dimensions and weight in one set of columns: centimetres and grams, or inches and pounds. A row that fills in both sets is refused. For the switches and flags, type yes or no. Put tags in one cell with a semicolon between them. To set where a product belongs, add a home_location (warehouse name) column for each warehouse, for example home_location (The Back Forty), with the bin's name in the cell. The capitals in the heading do not matter. A column that names none of your warehouses refuses the rows that fill it in, and the reason lists the home location columns you can use. A bin that does not exist in that warehouse is refused in words, for example No location named "NO-SUCH-BIN" in The Back Forty. In the client column, a blank cell imports the row under the client you picked, and a row that names another client is refused, for example This row is for Elsinore Beer, and the file is being imported into Rose Apothecary. Import it under its own client, or empty its client cell.
  4. Upload your file. CanShip shows a preview of every row with a status, and a summary such as "Preview: 0 new, 1 update, 0 errors", so you can catch problems before anything is written. A row whose SKU the client already has reads Update: it updates that product and does not create a second one. On an update, a blank cell, or a column the file does not have, leaves that field as it is, and the preview reads No change. Tags in the file are added and none are removed. A row with a problem reads Invalid with the reason and is left out of the import. Columns the import does not read are named above the preview, and nothing in them is used.
  5. Click Import N rows to commit. CanShip then says how many rows were imported and how many failed.

To change many products at once, choose the client in the Client filter above the list and click Export CSV. The file has the same columns as the template, with each product's client named in the first column. Change the cells you want, then import the file under the same client. A cell you leave as it was changes nothing. If you export with All Clients and import the file under one client, the rows for the other clients are refused, not added, so filter by the client before you export.

Retiring a product: archive or delete

Which one CanShip offers depends on whether anything refers to the product.

  • A product with history (orders, receipts, stock or mappings) cannot be deleted, because those records point at it. Its edit form has Archive at the bottom left. Archiving keeps the history and removes the product from the catalogue, lists and SKU matching. The bin on its row in the list opens the same Archive question.
  • A product nothing refers to yet has Delete in the same place. CanShip asks first, naming the SKU, the product and the client, and a delete cannot be undone. It then confirms with Deleted product and the SKU.

To see archived products, turn on Archived above the list. To bring one back, click the restore icon at the end of its row. It returns to the catalogue at once.

What can go wrong

  • A description has commas or quotes. That works with standard CSV quoting: wrap the field in double quotes and double any internal quotes.
  • You only have SKU, name, and price. That is enough to import. Barcode, origin, dimensions, and weight are optional and can be added later from the product's edit form.

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article