Skip to main content

Importing & Exporting Products

You can load your product catalog in bulk from a spreadsheet and export it back to Excel. Both actions are on the Products list page, next to Add Product.

ButtonPermission needed
ExportExport on the Products module
ImportImport on the Products module

If you do not see a button, your role does not include that permission. See Roles & Permissions.

Screenshot: Products list header with the Export and Import buttons

Exporting Products​

  1. Open Products and apply any search or filters you need (type, status, category).
  2. Click Export.
  3. An Excel file named products-export-YYYY-MM-DD.xlsx downloads.

The export uses the same search, filters and sort order as the list you are looking at, up to 10,000 products. It includes these columns:

Name, Code, Short Description, Description, Type, Category, Unit, Base Price, Cost, Currency, Tax Category, Status, Image URL, External URL, Owner, Created At, Updated At.

tip

To bulk-update your catalog, export it, edit the file in Excel, and import it again with Update duplicate handling. The import auto-maps the exported headers. Set Created At and Updated At to Skip on the mapping step.

Importing Products​

Click Import to open the Import products wizard. It has four steps.

Step 1: Upload file​

  1. Optionally click Download template to get product-import-template.xlsx. It has every supported column and one sample row.
  2. Click Click to select a file and choose a .xlsx or .csv file (max 50 MB). The first row must be a header row. Legacy .xls files are accepted by the picker but not read correctly, so save them as .xlsx first.
  3. Click Upload.

Screenshot: Import products wizard on the upload step with Download template link

Step 2: Map columns​

Each file column is shown with a sample value and a Map to dropdown. The wizard auto-suggests mappings from common header names (for example SKU maps to Code, List Price or MSRP maps to Base Price).

Screenshot: Product import column mapping table with sample values

FieldNotes
NameRequired. Next stays disabled until a column is mapped to Name.
Code (SKU)Used to detect existing products (see Step 3).
Short Description, DescriptionFree text.
TypeFor example product, service. Defaults to product.
Category NameMatched to an existing product category by name (case-insensitive). Unknown categories are not created. The product is imported without a category.
UnitUnit of measure, for example each, hour.
Base Price, CostMust be numeric. An invalid number fails the row.
CurrencyISO code. Defaults to USD.
Tax CategoryFree text.
StatusFor example active, inactive. Defaults to active.
Image URL, External URLLinks.
Owner (Full Name)Matched to an active user by full name or email. Unmatched owners fall back to you.
Custom fieldsProduct custom fields appear with a (Custom) suffix.
Skip (Do not import)Ignore the column.
tip

Create your product categories before importing so the Category Name column links correctly.

Step 3: Options​

Choose what happens when a matching product already exists. A product matches by Code first (case-insensitive). If the row has no code, it matches by Name.

Screenshot: Product import options step — Skip, Update or Always import when a matching product exists

OptionBehavior
Skip (default)Existing products are left alone. The row is counted as a duplicate.
UpdateOverwrites the existing product with the fields provided in the file. Empty cells do not clear existing values.
Always importCreates every row as a new product. This can create duplicates.

Click Start import.

Step 4: Import​

The import runs in the background. The wizard checks progress every few seconds and shows Imported, Skipped, Duplicate and Failed counts.

  • Click Continue in background to close the wizard while the import runs. You receive a notification when it finishes.
  • If any rows failed, click Download failed rows to get a spreadsheet of those rows with the error for each one (for example Name is required or Invalid base price).
  • Product imports are also listed on the Batch Jobs page.