Importing products
Use import to set up a new site's catalog from a purchasing spreadsheet, or to top up an existing one. It saves typing every product by hand. Use export to take the catalog out, edit it in a spreadsheet and bring it back.
Who can: Owner, Admin, Member, Inventory manager
Where: Settings › Import / export products
The page has two parts. Export products downloads the catalog as Download Excel (.xlsx) or Download CSV. Import products is a four-step wizard: 1. File, 2. Sheets & columns, 3. Preview, 4. Done. A How import and export work button opens the same help shown below.
Files
Excel (.xlsx, .xls) or CSV, up to 5,000 rows. The file is read in your browser; only the product rows you map are sent.
How columns are found
- Headers are recognised by name in the first 10 rows (e.g. PRODUCT DESCRIPTION, VENDOR REF#, SAP #, MIN, MAX). Title rows above them are skipped.
- No header? Columns are guessed from what the cells look like (descriptions, ref numbers, prices), or copied from a sister sheet with the same layout.
- Check the mapping for each sheet and change any column that's wrong. Type comes from a TYPE column (blank cells stay blank), else from the sheet name.
Which sheets
Empty sheets, sheets with no description column, and sheets that look like working lists (orders, stores, cases, old or archive tabs) start switched off. Switch one on if it really is part of the catalog.
Created, updated or skipped
- Matched by vendor ref # first, then GTIN. Rows with neither match on exact name and vendor.
- Updated — a matched product only gets its empty fields filled in (including unit cost, wire size, MRI safety and GMDN). Nothing already set is overwritten. Consignment is only ever switched on, and box or case sizes the product already has are kept as they are.
- Created — rows that match nothing become new products.
- Needs details — a row with no description is still imported if it has a vendor ref # or GTIN, with the name left blank. Same for a blank TYPE. These get a "Needs details" tag in Inventory (filter: Needs details) until someone completes them; re-importing the file with the description filled in completes them too.
- Skipped — rows with no name, REF or GTIN, rep contact or address lines, repeated header or total rows, section headings ("VICTORY WIRES:", "...", "demo"), and duplicates of an earlier row.
- Barcodes — a GTIN already linked to another product is left alone.
The preview shows every row's outcome before anything is saved.
Health Canada lookup after import
After an import, products with a REF (vendor ref #) or barcode are looked up in Health Canada's device licence database in the background. A match fills in the licence, risk class and company (and the vendor, if it was empty). A large catalogue can take several minutes.
If a REF matches more than one device, the product gets an "HC review" tag in Inventory (filter: Needs HC review) so someone can pick the right one on the product page.
Stock counts
An IN STOCK column tops each product up to that many units. Spreadsheets have no lot or expiry, so these units are added without them: the only way stock gets into the app without an expiry. They're flagged No expiry in Inventory, count as in stock, and are left out of expiry alerts.
Scanning one out (stock-out or a case) records the label's lot and expiry on it; counting them in an audit does the same when the review is applied. Re-importing the same sheet adds nothing: stock is only ever topped up, never removed.
Rooms and bins
- Rooms from a ROOM column become storage locations. The preview lists rooms that don't exist yet; leave "Create these rooms" on to add them (this turns storage locations on for the site if they're off). Only site admins can create rooms.
- Stock per room — each room and bin is topped up to its own count, so the same REF on the Recovery and CT tabs puts 12 in Recovery and 8 in CT. The preview shows where each product's stock goes and which rows were combined.
- No room on the row — the count is compared with the product's stock everywhere, so re-importing an export (one row per product) adds nothing. A row with no bin counts the whole room.
- Same REF twice in one place — keeps the first row's count by default; choose "Add the counts" in the preview to sum them.
- A room that isn't created — its stock goes to the product's default location, keeping the bin.
Units, prices and statuses
- Counts are in usable units. With a UNIT OF MEASURE of Box/10, an IN STOCK of "2.5 BX" is loaded as 25. A box count with no known box size is not loaded and is flagged.
- Prices are written one way: "$11.00 ea", or "$75.00 / box of 10 ($7.50 ea)". The per-unit cost is kept as the unit cost, and the box becomes a package of the product. A PER-UNIT COST column overrides it.
- Statuses found in the row (do not reorder, discontinued, phasing out, not in Canada, expired) are put at the front of the notes as [DO NOT REORDER] and so on.
- Wire size (guidewire compatibility) comes from a WIRE SIZE column, else from the description ("035", ".018"). Cook and MIC-KEY order numbers also give sizes.
- Room and bin are separate: ROOM / STORAGE LOCATION is the room, LOCATION / BIN the shelf or bin inside it.
Anything the importer had to guess is listed as a flag, grouped by kind with a count; open a group to see its rows. Flagged rows are still imported.
Export and re-import
The export uses the purchasing column order (location, description, vendor ref #, SAP #, Global, in stock, min, max, vendor, price, unit of measure, notes), then brand, GTIN, sizes and a TYPE column. Excel gets one sheet per type.
Edit it and import it back: the headers map themselves, the TYPE column keeps each product's type, and IN STOCK only adds units a product is short of.
Cells that start with = + - or @ are saved with a leading ' so Excel shows them as text instead of running them as a formula; the import removes it again.
When to use it
- Starting a site. Import the purchasing list to get hundreds of products in at once.
- Topping up. Re-import a newer list. Existing products only get their empty fields filled in, so nothing you typed is overwritten.
- Filling blanks. Export, fill in empty cells (a missing vendor or price, say) in a spreadsheet, and import the file back. Values already set in the app are not changed, so edit those on the Products page.
Import is not the way to add stock with expiry dates. Imported counts have no lot or expiry. Scan stock in, or add it by hand, to record those.