Import Products

Bulk create or update ShipOS products by uploading a CSV file.

CSV Columns

ColumnDescriptionRequired
idProduct ID (for updating existing products)No
teamTeam name (for 3PL creating products for merchants)No
skuProduct SKU; use a distinct value for reliable channel matchingNo
nameProduct nameYes
descriptionProduct descriptionNo
barcodeProduct barcodeNo
image_urlURL to product imageNo
cost_priceCost priceNo
weightWeight for shipping calculationsNo
weight_unitWeight unit (uses team default if not specified)No
lengthLength dimensionNo
widthWidth dimensionNo
heightHeight dimensionNo
measurement_unitDimension unit (uses team default if not specified)No
hs_codeHarmonized System code for customsNo
country_of_originCountry of manufactureNo
customs_descriptionDescription for customs declarationsNo
customs_valueDeclared customs valueNo
minimum_levelMinimum stock level for replenishmentNo
maximum_levelMaximum stock level for replenishmentNo
increment_levelStock level increment for replenishmentNo

Note: Column headers must be lowercase (e.g., sku not SKU).

Conflict Protection

Export current records as your starting template. When an export includes _lock (Do not modify), keep its value and the existing row's id unchanged while editing other fields.

  • Unchanged rows and edits already matching the saved record are skipped.
  • If both the CSV and saved record changed since export, a conflicting edit is rejected. Export the latest data, review the other changes, and reapply your edit.
  • A locked row without its original ID is rejected.
  • For a new record, leave both the ID and lock empty.
  • Omitting a lock on an existing record removes conflict protection; it does not force an otherwise invalid edit to succeed.

Adding New Entries

To add new products, add rows with both the id and _lock (Do not modify) columns left empty. The system creates new product records. Existing products with matching IDs are updated.

Bulk delete is not supported. To remove products, delete them individually through the UI or API.

Example CSV

id,team,sku,name,description,barcode,image_url,cost_price,weight,weight_unit,length,width,height,measurement_unit,hs_code,country_of_origin,customs_description,customs_value
,,SKU-001,Widget A,A small widget,123456789,,9.99,250,,,,,,,,,
,,SKU-002,Widget B,,,,19.99,500,,10,8,5,CM,8471.30,US,Electronic component,15.00
abc123,My Team,SKU-003,Widget C,Updated description,,,,300,G,12,10,6,CM,,,,

Export Template

  1. Navigate to ShipOS → Products (opens the Cybership dashboard in a new tab)
  2. Click Export to download CSV template (see Export Products)

Import CSV

  1. Navigate to ShipOS → Products (opens the Cybership dashboard in a new tab)
  2. Click Import
  3. Upload your CSV file
  4. Confirm import
  5. Import processes asynchronously via background job queue
  6. Monitor job progress in real-time
  7. Review completion status and any errors (includes line numbers for debugging)

Wait for the job to finish and inspect created, updated, skipped, and failed rows. A row-based import can partly succeed. Correct failed rows before retrying; do not assume the whole file was rolled back or that repeating new rows is harmless.

Existing products are matched by id, not SKU. Leave the ID empty only when creating a new product.

If you want to update inventory quantities, use the Inventory Upload feature instead.