Importing & Exporting
Importing & Exporting Products
You can bulk import products to create and update your products with a CSV file. It works best when you start from an Endless product export, make your changes, and import the updated file back into Endless.
How It Works
Product import is an upsert workflow. If a row's SKU matches an existing product in the selected brand, that product is updated. If the SKU does not match, a new product is created.
When a row updates an existing product, blank values are treated as no change and will not replace existing values.
Before You Begin
Use SKU values consistently, decide whether each row is meant to create or update a product, and start from an Endless export whenever possible. Header names are flexible about capitalization and spacing, but using the exported names is the safest option.
Columns
Required Columns
Name- Product name.SKU- Main identifier used to match an existing product for updates.
Core Product Fields (Optional)
UPC- Product UPC code.Part Number- Internal or manufacturer part number.Description- Product description text.Product Type- Options arepart,base_item,bundleandnon_inventory. When creating a new product, this will default tobase_itemif this column is omitted.base_itemis often referred to as Finished Good in the app.Archived- Controls status.Yesmarks the product archived; other values are treated as active.UOM- Unit of measure.Image- One or more image URLs. Multiple values can be comma-separated.Tags- Product tags. Multiple values can be comma-separated.
Base Dimensions (Optional)
Weight- Base product weight.Length- Base product length.Width- Base product width.Height- Base product height.
Pricing And Inventory Settings (Optional)
MSRP- MSRP price value. Do not include the currency symbol.MAP- MAP price value. Do not include the currency symbol.Restock Threshold- Quantity threshold used for restocking logic.Shippable- Options areYes,No. Defines whether the product can be added to orders and fulfilled.Yesbecomestrue.
Product Documentation (Optional)
Packaging URL- Link to packaging documentation.Specs URL- Link to specs documentation.
Purchasing (Optional)
HTS Code- Customs HTS code.HTS Name- Customs HTS description or name.Country Of Origin- Country of origin for customs data.Duty Rate- Base customs duty rate.Sourcing Method- How the product is sourced.
Shipping Package Fields (Optional)
Shipping Weight- Shipping package weight.Shipping Length- Shipping package length.Shipping Width- Shipping package width.Shipping Height- Shipping package height.Package Type- Shipping package type.Ship Ready Packaging- Whether the item uses ship-ready packaging.Yesbecomestrue.Shipping Package- Shipping package label or type text.Weight Factor- Shipping weight factor value.
Inner Pack Fields (Optional)
Inner Pack GTIN- Inner pack GTIN.Inner Pack Quantity- Inner pack quantity.Inner Pack Weight- Inner pack weight.Inner Pack Length- Inner pack length.Inner Pack Width- Inner pack width.Inner Pack Height- Inner pack height.
Master Carton Fields (Optional)
Master Carton GTIN- Master carton GTIN.Master Carton Quantity- Master carton quantity.Master Carton Weight- Master carton weight.Master Carton Length- Master carton length.Master Carton Width- Master carton width.Master Carton Height- Master carton height.
Pallet Fields (Optional)
Pallet GTIN- Pallet GTIN.Pallet Quantity- Pallet quantity.Pallet Weight- Pallet weight.Pallet Length- Pallet length.Pallet Width- Pallet width.Pallet Height- Pallet height.
Cost Fields (Optional)
Landed Cost- Product economics landed cost. Do not include the currency symbol.BOM Cost- Product economics BOM cost. Do not include the currency symbol.Unit Cost- Product economics unit cost. Do not include the currency symbol.Packaging Cost- Product economics packaging cost. Do not include the currency symbol.Inbound Freight Cost- Product economics inbound freight cost. Do not include the currency symbol.Duties Cost- Product economics duties cost. Do not include the currency symbol.
Custom Attributes
custom.<handle>- Custom product attribute column.<handle>must match an existing product attribute definition handle, such ascustom.color. You should set these up in Endless before importing.
CSV Examples
This is the smallest recommended file:
Name,SKU
Classic Tee,TEE-001
Logo Hat,HAT-001
This example updates existing products by SKU:
Name,SKU,Description,MSRP,Archived
Classic Tee,TEE-001,Updated short sleeve tee,29.99,No
Logo Hat,HAT-001,Updated embroidered cap,24.99,Yes
Name,SKU,custom.color,custom.material
Classic Tee,TEE-001,Red,Cotton
Blank Values
When importing products, blank cells do not clear existing product data. If a product already exists, blank cells are ignored and the current value remains unchanged. To update a field, enter a new value in that cell.
Limits And Results
The product import tool is meant for product record data such as core fields, dimensions, pricing, tags, image URLs, customs and shipping fields, packaging fields, and custom attributes. It is not meant for inventory quantities or bundle composition management.
Extra columns are allowed, but unsupported columns are ignored. Blank rows are skipped. After import, Endless reports how many rows created new products, updated existing products, and failed. Rows are processed individually, so one bad row does not prevent other valid rows from importing.
Troubleshooting
If a row created a new product when you expected an update, the SKU most likely did not match an existing product in the selected brand.
Importing & Exporting Product Components
You can define or replace bundle composition in bulk with a CSV file. Each row represents one bundle-to-component relationship: BUNDLE_SKU is the parent product, COMPONENT_SKU is the component product, and COMPONENT_QTY is the quantity required.
Before You Begin
Make sure all parent and component products already exist in Endless, and that each SKU matches exactly. Most importantly, include the full component list for every bundle you are updating. If a bundle is in the file, Endless treats those rows as the complete definition for that bundle.
Columns
BUNDLE_SKU- The parent sku, which could be a bundle or a finished good.COMPONENT_SKUCOMPONENT_QTY
Use these exact column names.
Recommended Workflow
The easiest workflow is to export bundle components from Endless, keep the bundles you want to update, include the full final component list for each bundle, adjust any COMPONENT_QTY values, and import the file back. Starting from an export helps you preserve valid SKUs and avoid removing components by accident.
CSV Examples
This is the smallest valid file:
BUNDLE_SKU,COMPONENT_SKU,COMPONENT_QTY
BUNDLE-001,PART-001,2
BUNDLE-001,PART-002,3
You can include multiple bundles in the same file:
BUNDLE_SKU,COMPONENT_SKU,COMPONENT_QTY
BUNDLE-001,PART-001,2
BUNDLE-001,PART-002,3
BUNDLE-002,PART-001,1
Replacement Behavior
The component import tool is replacement-based for each bundle in the file. If a bundle appears in the import, its existing component list is replaced by the rows you provide for that bundle. If a component is missing from those rows, it is removed. Bundles that are not in the file are left unchanged.
If the same BUNDLE_SKU and COMPONENT_SKU pair appears more than once, the last row wins.
BUNDLE_SKU,COMPONENT_SKU,COMPONENT_QTY
BUNDLE-001,PART-001,2
BUNDLE-001,PART-001,5
After import, PART-001 is set to quantity 5 for BUNDLE-001.
Validation Rules
Endless validates the file before changing any bundle relationships. BUNDLE_SKU and COMPONENT_SKU must exist in the selected brand, and COMPONENT_QTY must be greater than zero. Empty files with only headers result in no changes, but incomplete or invalid rows cause the import to fail.
Only valid composition relationships are allowed:
- a Bundle can contain finished goods or parts
- a Finished Good can contain parts.
Invalid pairings, such as a Bundle containing another Bundle, fail validation.
Limits
This import can create new component relationships for existing products, replace a bundle's component list, update quantities in bulk, and handle multiple bundles in one file. It does not create products, adjust inventory, or append components onto the existing bundle definition.
Troubleshooting
If the import fails, check that BUNDLE_SKU and COMPONENT_SKU exist in the selected brand, COMPONENT_QTY is greater than zero, the parent and component product types form a valid combination, and that you included the full intended component list for every bundle in the file.
The most common reason for a failing import is that either the bundle SKU or the component SKU does not exist in your catalog. The failed import notification will include a list of missing SKUs.
If a bundle ends up with fewer components than expected, the file most likely included only part of that bundle's component list.