Skip to content
  • There are no suggestions because the search field is empty.

How do I import product data?

1. Creating and Updating Products by SKU

You can create or update products using their SKU as the unique identifier.

  • Creating Products: To create a new product, the following fields are required:

    • Parent

    • SKU

    • Name

    • Price

    • Category Path

  • Updating Products: You can update any product information by using the SKU only. For example:

SKU Price
SKU Name
SKU Any other field

 


 

 

 

Do not include the "Parent" column if you are updating products.

2. Building your CSV file

For a smoother experience, you can export your existing products and use the file as a template for updates. Alternatively, you can create your own CSV file.

 

Anything that has a 1 can be replaced with 2, 3, 4, and so on to create multiple values. To add more entries, simply include additional columns following the same pattern. For example, a column with image 1 can be expanded to image 2, image 3, image 4, etc., allowing for multiple sets of data.

 

Heading Description Value
parent This connects the variants to a parent product. As long as the parent is the same for all variants, it will create a single product Number
sku Product Identifier Text
barcode barcode Text
mpn MPN Text
name Product Name Text
category path Product Category Text
brand name Product Brand Text
price Product Price Number
on sale Is the product on sale? true/false
sale price Product Sale Price Number
active Is the product Active? true/false
visible Is the product Visible? true/false
track stock Does this product track stock? true/false
stock Product Stock Level Number
tag 1 Product Tag Text
on website Show in Categories, Groups and Search true/false
charge tax Charge tax on this product true/false
description Product description Text (HTML allowed)
cost price Product Cost Price Number
default variant Whether this child should be the default variant for the product true/false
slug The URL slug for this product. If a valid slug Text is not provided we will automatically convert it to a valid slug format. slug
stock on order_date The date stock is expected to come in. date (YYYY-MM-DD)
stock on order This is used with stock_on_order_date to help keep track of incoming stock Number
weight Product weight Number
weight unit Product weight unit kg
can be purchased Whether this product can be added to basket true/false
has serial number When enabled serial numbers for the product can be entered when dispatching an order true/false
hide in categories When true the product will not be visible on category pages true/false
limit one per order When true the product can only be purchased once within the same order true/false
meta description The description content to show on search engines. Text
meta title The title of the product's page on search engines. Defaults to the product name if not provided. Text
preorder unavailable If you store is configured to allow pre-orders and preorder_unavailable is set to false, customers wont be able to pre order this product true/false
promo text The promotional text content to be applied to the product. Text (HTML allowed)
publish date A date in the future the product should be published on in UTC time. Set to null or don't provide this property to publish immediately. Any value provided other than null will be overridden if active is set to true. YYYY-MM-DD HH-MM-SS
use canonical url When true the same canonical URL will be used for all variants true/false
canonical override Set the canonical URL of this product (Optional. Advanced SEO feature - use with caution) slug
image 1 Product Image URL. You can create as many columns as you need by increasing the number by one. For example: Image 2, Image 3 URL
attribute:name Substitute 'name' for the name of your attribute. For example Size. Text
quantity increment 1 : min This will set "Can buy any quantity" to false and create an Increment number
quantity increment 1 : max This will set "Can buy any quantity" to false and create an Increment number
quantity increment 1 : increment This will set "Can buy any quantity" to false and create an Increment number
custom field:cf_field Substitute 'cf_field1' for the name of your custom field. For example cf_region. Text

 

If you would like to add/update tabbed content or customisations,  you can add multiple of them by adding more columns. Each additional tabbed content / customisation section follows the same format, with an increasing number to differentiate them. For example, beyond customisation 1 : label, customisation 1 : type, you can add customisation 2 : label, customisation 2 : type, customisation 3 : label, customisation 3 : type, and so on. Simply continue this pattern to accommodate as many customisation sections as needed.

 

Heading Description Value
tabbed content 1 : name The title of the tab. Text
tabbed content 1: type The type of content to be displayed. video_carousel
description
promo_text
reviews
tech_spec
text
tabbed content 1 : content The content to show within the tab. Only applicable when using the type text Text (HTML allowed)
secondary image 1 : name The title of the block. Will be displayed on the product page. Text
secondary image 1 : description Text content to be displayed along with the secondary image. Text
secondary image 1 : url Image URL URL
video carousel 1 : id The ID of the video. For Youtube, this is the v query parameter. Text
video carousel 1 : type The source type of the video, either Youtube or Vimeo Youtube/Vimeo
video carousel 1 : name The name of the video. Will not be displayed on the product page. Text
video carousel 1 : url The full URL to the video URL
video carousel 1 : thumbnail The thumbnail to use for the video. Displayed when multiple videos are within the carousel. image URL
customisation 1 : label The label of the customisation. Text
customisation 1 : type The type of customisation text
text_font
textarea_font
textarea
select
checkbox
product
product_list
file
range
distance
customisation 1 : placeholder The placeholder to be displayed for the input. Only available for customisation types: text, text_font, textarea_font, textarea Text
customisation 1 : modifier type The method used to add the cost of the customisation to the products price. Only available for customisation types: text, text_font, textarea_font, textarea, select, checkbox, file, range add
multiply
add_end
multiply_end
customisation 1 : price modifier The amount to adjust the products price by when this customisation is purchased. Only available for customisation types: text, text_font, textarea_font, textarea, select, checkbox, file Number
customisation 1 : list type The type of input displayed on the product page. select
radio
customisation 1 : value The product ID to use. Only available for customisation types: product Number
customisation 1 : values 1 : name The option that will be displayed in the Select. Only available for customisation types: Select Text
customisation 1 : values 1 : price modifier The amount to adjust the products price by when this value is selected. Number
customisation 1 : extras : mandatory Is this customisation mandatory? on
customisation 1 : extras : visibility Where can the customer see this customisation?
Only available for customisation types: select
product_page_only
basket_page_only
both_pages
customisation 1 : extras : max length Maximum number of characters that can be inputed. Only available for customisation types: text, text_font, textarea_font, textarea Number
customisation 1 : extras : pattern A regex pattern that will be used to validate the users input. Only available for customisation types: text, text_font, textarea_font, textarea Regex
customisation 1 : extras : max number of files The maximum number of files that can be uploaded. Only available for customisation types: file Number
customisation 1 : extras : once per add to basket When enabled the customisation can only be added to one product in the customers basket. Only available for customisation types: product, product_list True/False
customisation 1 : extras : min The minimum value that the user can enter. Only available for customisation types: range Number
customisation 1 : extras : max The maximum value that the user can enter. Only available for customisation types: range Number
customisation 1 : extras : step The increment that the input value will be increased or decreased by when using the arrows on a number input. Only available for customisation types: range Number
customisation 1 : extras : default The default value for the input. Only available for customisation types: range Number

 

You can access and download a template here

3. Uploading Your File

Once your CSV file is ready:

  1. Go to the products index page

  2. Click on import

  3. Select Products

  4. Upload file (up to 100K rows, up to 100MB)

  5. If your column headings match our required values, they will be automatically mapped.

  6. If you're importing a sheet from another inventory system (e.g., for a price update), you can import the file as-is and manually map the columns. This flexibility allows for seamless integration without reformatting your existing file. 


Options will appear disabled if the format is incorrect. For instance, this can occur if a text Text is present in your price column when a numerical value is expected, or if a field is already in use.

Once you are happy with the mapping move to the next step 

 

5. Reviewing Your Import

After mapping your columns, you’ll see a preview of how your products will be processed:

  • Updated: SKU exists and format is correct.

  • Created: SKU does not exist, and all required fields for creation are present.

  • Ignored: SKU does not exist, and the required Parent column is missing.


6. Start the Import!

Once everything looks good, hit Start Import and let the system handle the rest! 🎉

7. Downloading the Import Report

Once the import is complete, you can download a report to check if anything went wrong. The report will provide details on any errors or issues encountered during the import process, allowing you to make necessary adjustments and re-import if needed.