Creating and Updating Products in Bulk Using Product Files
You can create new products or update existing products in bulk by preparing a product file and importing it into SHOPLINE. Depending on what you want to do, start with one of the following CSV files:
Create new products: Download the Product template, enter your product information, and import the completed file into SHOPLINE.
Update existing products: Export your existing products, update their information in the exported file, and import the file back into SHOPLINE.
Note: SHOPLINE provides the product template and exported product data in CSV format. When importing products, you can upload a CSV or XLSX file.
This guide explains how to get the appropriate product file, prepare product and variant data, understand the available fields, import products into SHOPLINE, and troubleshoot common import issues.
Preparing to Create or Update Products in Bulk
Before preparing your product file, gather the product information you want to import, such as:
Product names and descriptions
Variants, such as sizes, colors, or flavors
Selling prices and costs
SKU codes and barcodes
Inventory information
Product images
Shipping information
For product prices, enter:
Tax-exclusive prices if your store displays prices exclusive of tax.
Tax-inclusive prices if your store displays prices inclusive of tax.
Getting a Product File for Bulk Creation or Updates
The file you should start with depends on whether you're creating new products or updating existing ones.
Downloading the Product Template for New Products
To create products in bulk, download the product template:
From your SHOPLINE Admin, go to Products.
Click Import in the upper-right corner and select Import locally.
In the Import window, click Product template.
Open the downloaded CSV file and enter your product information.
Note: If you encounter issues when downloading or opening the product template, try using Chrome.
Exporting Existing Products for Bulk Updates
To update existing products in bulk, first export their current product data. Using the exported file helps preserve the identifiers SHOPLINE uses to match your existing products during import.
From your SHOPLINE Admin, go to Products.
Click Export.
Under Export range, select the products you want to export:
All products: Export all products in your store.
Selected products: Export only the products you've selected from the product list.
All results from filter: Export all products that match the filters you've applied to the product list.
In Export to email, enter the email address where you want to receive the exported file.
(Optional) To include product metafields, select Product metafields, then select up to 20 metafields.
Click Export.
Download the CSV file from the email you receive and update the product information as needed.
Notes:
Your store allows a maximum of 10 concurrent export operations. If this limit is reached, Export is temporarily unavailable until one of the active export operations is completed.
When updating existing products, avoid changing identifiers such as the Handle unless necessary. SHOPLINE uses these identifiers to match the data in your file with existing products during import.
Preparing Your Product File for Import
After downloading the product template or exporting your existing products, open the file in a spreadsheet application and enter or update your product data.
When preparing your product file, follow these requirements:
Don't modify the field names or their order in the first row. Changing or rearranging the headers may prevent SHOPLINE from recognizing the file and result in import failure.
Keep all columns in the file, even if you don't need to enter a value, unless otherwise specified.
For products with variants, use a separate row for each variant combination.
When updating existing products, make sure the Handle and variant-related fields are entered correctly to avoid unintentionally creating new products or changing the existing variant structure.
SHOPLINE supports CSV and XLSX files for import, with a maximum file size of 40 MB.
When working with CSV files, some spreadsheet applications may alter the file's formatting or encoding when opening or saving it. If your CSV file displays garbled or unreadable characters, refer to "Resolving Garbled Characters in CSV Files" for troubleshooting instructions.
Make sure the content in each cell doesn't exceed the limit supported by your spreadsheet application to prevent truncation or formatting issues:
Microsoft Excel and WPS: 32,767 characters per cell
Apple Numbers: 1,000,000 characters per cell
Understanding Product File Fields
The product template and exported product file use the same general field structure. Use the tables below to understand what each field controls and how to enter its value.
Notes:
Fields marked export only are available only in exported product files and aren't included in the product template.
For products with variants, some fields apply to the entire product and only need to be entered in the first row, while SKU-level fields need to be entered for each variant. Refer to "Adding Products with Variants to the Product File" for details.
Product Identification Fields
Field
Description
Requirements
Product id (export only)
System-generated unique ID of the product
Any value entered during import will be ignored.
Maximum length is 64 characters.
Variant id (export only)
System-generated unique ID used to identify an existing variant during updates
This field isn't included in the product template. If manually added, it can be used to update existing variants.
Note: This field is commonly used when you need to modify option names or values (Option1–5) while retaining the existing variant ID, helping avoid impacts on advertising campaigns and data tracking.
Optional, but required when updating existing variants.
The Variant id must belong to the product identified by the Handle. A mismatch will cause the import to fail.
Handle (Optional)
Unique product identifier used to match products during import
The column must be retained, but the value can be left blank.
For updates, the Handle must exactly match an existing product:
If a match is found, the existing product is updated.
If no match is found, a new product is created.
For products with multiple variants, enter the Handle only in the first row. Subsequent rows can be left blank.
Spaces and special characters are automatically converted to hyphens (-) (for example, apple phone → apple-phone).
Note: If the Handle matches an existing product, this field is not overwritten during updates, but all other associated information will be updated. The exact behavior depends on whether Override the same handle products is selected during import:
If selected, the existing product with the matching handle is overwritten.
If not selected, SHOPLINE automatically appends a numeric suffix to the duplicate handle to create a unique handle, and imports the product as a new product.
Title (Required)
Product name
The column must be retained, and the value can't be left blank.
Maximum length is 255 characters. Exceeding this limit will cause the import to fail.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
This field isn't affected by Skip blank fields. Leaving it blank where required will cause the import to fail.
Basic Product Information Fields
Field
Description
Requirements
Subtitle (Optional)
Product subtitle or tagline
The column must be retained, but the value can be left blank.
Maximum length is 400 characters. Content exceeding this limit will be automatically truncated.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
Product description html (Optional)
Detailed product description
The column must be retained, but the value can be left blank.
Both plain text and HTML are supported:
For plain text, enter the content directly without additional formatting.
To apply formatting such as line breaks or bold text, use HTML.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
SPU (Optional)
Merchant-defined internal product identifier
The column must be retained, but the value can be left blank.
Maximum length is 255 characters. Exceeding this limit will cause the import to fail.
Emojis aren't supported and will cause the import to fail.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
Vendor (Optional)
Product brand or manufacturer
The column must be retained, but the value can be left blank.
Maximum length is 255 characters. Content exceeding this limit will be automatically truncated.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
Tags (Optional)
Tags used to categorize products and support search and filtering
The column must be retained, but the value can be left blank.
Separate multiple tags with commas (for example, red, summer).
Tags are case-insensitive (ABC = abc).
A maximum of 250 tags is allowed per product. Any additional tags will be ignored.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
Collections (Optional)
Collection handles the product belongs to
The column must be retained, but the value can be left blank.
Use collection handles instead of titles, with spaces converted to hyphens (-).
Separate multiple collection handles with commas.
Smart collections aren't supported.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
⚠️ Warning: Removing this column may clear existing collection assignments.
Product Image Fields
Field
Description
Requirements
Master image (Optional)
Product image URL
The column must be retained, but the value can be left blank.
Enter one image URL per row. Each product supports up to 500 images.
Supported formats include JPG, JPEG, PNG, GIF, and WebP.
Each image must not exceed 20 MB. Exceeding this limit will cause the import to fail.
The maximum length of each image URL is 512 characters. Exceeding this limit will cause the import to fail.
Note: Importing an image URL through this field always creates a new copy in your File Library, even if the image already exists there. To avoid duplicates, create the products individually instead of using bulk import.
Image Alt Text (Optional)
Alternative text for the product image, used for accessibility and SEO
The column must be retained, but the value can be left blank.
Maximum length is 512 characters. Content exceeding this limit will be automatically truncated.
SEO and Product Availability Fields
Field
Description
Requirements
SEO title (Optional)
SEO title for the product page, displayed in search results
The column must be retained, but the value can be left blank.
Include core product keywords where possible.
Maximum length is 255 characters. Content exceeding this limit may be truncated and affect SEO performance.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
SEO description (Optional)
Meta description for the product page, displayed in search results
The column must be retained, but the value can be left blank.
Keep the content concise and include core product keywords where possible.
Maximum length is 1,024 characters. Content exceeding this limit may be truncated and affect SEO performance.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
Published (Optional)
Whether the product is published to the Online Store sales channel
The column must be retained, but the value can be left blank.
Enter Y to publish the product to the Online Store channel, or N to keep it unpublished.
If left blank, the default value is Y.
Invalid values are treated as Y.
For local imports, the specified value is applied. For other import methods, the value is set to Y.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
Note:Published controls whether the product is published to the Online Store sales channel. It doesn't control the product's activation status. To control whether the product is activated or deactivated, use the Status field.
Status (Optional)
Product availability status across all sales channels
The column must be retained, but values can be left blank.
Supported values are Y (Activated), N (Deactivated), and Archived.
If left blank, the default value is Y.
Invalid values are treated as Y.
For local imports, the specified value is applied. For other import methods, the value is set to Y.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
Unlisted (Optional)
Whether the product can be discovered through storefront product lists, search, recommendations, and search engines
The column must be retained, but values can be left blank.
Enter Y to hide the product from storefront discovery (Hidden), or N to keep it discoverable (Visible).
When creating a new product, if left blank, the default value is N (Visible).
When updating an existing product, if left blank, the current value remains unchanged.
Invalid values are treated as N (Visible).
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
Standardized Product Type (Optional)
Standard product category (based on Google Product Category), used for purposes such as tax calculation
The column must be retained, but values can be left blank.
Select a value from the predefined category list (based on Google Product Category). You can enter either the category name or the full category path.
Custom or invalid values may result in incorrect tax calculations.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
Custom Product Type (Optional)
Merchant-defined product category
The column must be retained, but values can be left blank.
The maximum length is 255 characters. Exceeding this limit will cause the import to fail.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
Created time (Optional)
Product creation time, mainly used when migrating historical product data
The column must be retained, but values can be left blank.
This field is typically not required and is mainly used for data migration, such as importing historical product data from other platforms, to preserve the original product creation time.
The value must follow the ISO 8601 format.
The date cannot be earlier than 1990-01-01T00:00:00+08:00.
If left blank, the current system time is used.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
Variant Fields
Field
Description
Requirements
SKU (Optional)
Merchant-defined identifier for a product or variant
The column must be retained, but values can be left blank.
If this field is left blank when uploading the CSV file and Override the same handle products is selected, the existing SKUs will be cleared.
Each SKU must be unique within the product.
A maximum of 500 SKUs is allowed per product, and each SKU can contain up to 255 characters.
For products with multiple variants, enter a value in each row.
Option1 name (Optional)
Name of the first variant option, such as Color
The column must be retained, but values can be left blank.
This field is not affected by the Skip blank fields setting. When updating products via CSV, don't clear this field, as doing so will delete the existing variant value.
A product can have up to 5 option names, and each option name can contain up to 255 characters.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
⚠️ Warning: Clearing this field during an update may remove the existing variant structure.
Option1 value (Optional; required when Option1 name has a value)
Value of the first variant option, such as Red
If the corresponding option name is provided, this field is required.
The column must be retained, but values can be left blank when the corresponding option name isn't provided.
This field is not affected by the Skip blank fields setting. When updating products via CSV, don't clear this field, as doing so will delete the existing variant value.
Enter only one value in each cell.
Duplicate values, after spaces are trimmed, aren't allowed and will cause the import to fail.
For products with multiple variants, enter the values row by row based on the variant combinations. For example, enter Red-S and Red-M in separate rows.
⚠️ Warning: Clearing this field during an update may remove existing variant values.
Option2–Option5 name (Optional)
Names of the second through fifth variant options
Follow the same requirements as Option1 name.
Option2–Option5 value (Optional; required when the corresponding option name has a value)
Values of the second through fifth variant options
Follow the same requirements as Option1 value.
Option1 value image (Optional)
Image URL assigned to the first option value
The column must be retained, but values can be left blank.
Each option value supports only one image.
Supported formats are JPG, JPEG, PNG, GIF, and WebP
Each image must not exceed 20 MB.
Each URL can contain up to 512 characters. Exceeding this limit will cause the import to fail.
Note: Like Master image, importing an image URL through this field always creates a new copy of the image in your File Library, even if it already exists there. To avoid duplicates, create the products individually instead of using bulk import.
Option2–Option5 value image (Optional)
Image URL assigned to the corresponding option value
Follow the same requirements as Option1 value image.
Image (Optional)
Image URL assigned to a specific SKU
The column must be retained, but values can be left blank.
Each SKU supports only one image.
Supported formats are JPG, JPEG, PNG, GIF, and WebP.
Each image must not exceed 20 MB.
Each URL can contain up to 512 characters. Exceeding this limit will cause the import to fail.
Note: Like Master image, importing an image URL through this field always creates a new copy of the image in your File Library, even if it already exists there. To avoid duplicates, create the products individually instead of using bulk import.
SKU Image Alt Text (Optional)
Alternative text for the SKU image
The column must be retained, but values can be left blank.
The maximum length is 512 characters. Any content exceeding this limit will be automatically truncated.
⚠️ Warning: When updating an existing product, don't clear its existing option names or option values unless you intend to change its variant structure. Skip blank fields doesn't apply to these fields.
Pricing, Inventory, Tax, and Shipping Fields
Field
Description
Requirements
SKU price (Optional)
Selling price of the SKU
The column must be retained, but values can be left blank.
Enter numbers only, without currency symbols.
Up to 2 decimal places are supported.
If left blank, the default value is 0.
Negative values are converted to 0.
Values exceeding 11 digits are truncated to 11 digits (maximum value: 99999999999).
For products without variants, enter the value only in the first row. For products with multiple variants, enter a value for each SKU row.
SKU compare at price (Optional)
Original or comparison price of the SKU
The column must be retained, but values can be left blank.
Enter numbers only, without currency symbols.
Up to 2 decimal places are supported.
If left blank, the default value is 0.
Negative values are converted to 0.
Values exceeding 11 digits are truncated to 11 digits (maximum value: 99999999999).
For products without variants, enter the value only in the first row. For products with multiple variants, enter a value for each SKU row.
SKU weight (Optional)
Weight of the SKU
The column must be retained, but values can be left blank.
Enter numbers only, with up to 2 decimal places.
Negative values are converted to 0.
Non-numeric values will cause the import to fail.
Values exceeding 12 digits are truncated to 12 digits (maximum value: 999999999999).
For products without variants, enter the value only in the first row. For products with multiple variants, enter a value for each SKU row.
SKU weight unit (Optional)
Unit used for the SKU's weight
The column must be retained, but values can be left blank.
Supported values are g, kg, lb, and oz.
Invalid values are automatically converted to g.
When Skip blank fields is disabled, leaving this field blank resets the value to g.
For products without variants, enter the value only in the first row. For products with multiple variants, enter a value for each SKU row.
SKU Inventory Tracker (Optional)
Whether inventory tracking is enabled
The column must be retained, but values can be left blank.
Enter T to enable inventory tracking or F to disable it.
If left blank, the default value is T.
Invalid values are treated as T.
For local imports, the specified value is applied. For other import methods, the value is set to Y.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
SKU Inventory Policy (Optional)
Whether customers can continue purchasing the SKU when it is out of stock
The column must be retained, but values can be left blank.
Enter continue to allow overselling or deny to prevent it.
If left blank, the default value is deny.
Invalid values are treated as deny.
For products with multiple variants, enter a value for each SKU row.
SKU Inventory Quantity (Optional)
Inventory quantity of the SKU
The column must be retained, but values can be left blank.
Only integers are supported.
The value must be between -999,999,999 and 999,999,999.
Non-numeric values are converted to 0.
This field doesn't take effect when multiple inventory locations are enabled. To update inventory for multiple locations in bulk, use the Bulk Inventory Update feature. For detailed instructions, refer to "Bulk Updating Inventory with a CSV File."
During overwrite updates, leaving this field blank retains the existing inventory. When Skip blank fields is disabled, leaving this field blank resets the value to 0.
Cost per item (Optional)
Cost per unit
The column must be retained, but values can be left blank.
Enter numbers only, without currency symbols.
Up to 2 decimal places are supported.
Values exceeding 11 digits are truncated to 11 digits (maximum value: 99999999999).
For products without variants, enter the value only in the first row. For products with multiple variants, enter a value for each SKU row.
Barcode (ISBN, UPC, GTIN, etc.) (Optional)
Barcode used to identify the SKU
The column must be retained, but values can be left blank.
The maximum length is 255 characters.
It is recommended to use a unique value to avoid conflicts.
For products with multiple variants, enter a value for each SKU row.
SKU tax policy (Optional)
Whether the SKU is taxable
The column must be retained, but values can be left blank.
Enter T for taxable or F for non-taxable.
If left blank, the default value is T.
Invalid values are treated as T.
For local imports, the specified value is applied. For other import methods, the value is set to Y.
SKU shipping policy (Optional)
Whether the SKU requires shipping
The column must be retained, but values can be left blank.
Enter T if shipping is required or F if not.
If left blank, the default value is T.
Invalid values are treated as T.
For local imports, the specified value is applied. For other import methods, the value is set to Y.
HS code (Optional)
Harmonized System (HS) code used for customs declarations
The column must be retained, but values can be left blank.
The value must contain 6 to 12 digits. Invalid formats will cause the import to fail.
For products with multiple variants, enter a value for each SKU row.
Shipping origin (Optional)
Country/region code representing the SKU's shipping origin
The column must be retained, but values can be left blank.
The value must be a valid country or region code. Invalid codes will cause the import to fail.
For products with multiple variants, enter a value for each SKU row.
Note: If your store uses multiple inventory locations, SKU Inventory Quantity doesn't take effect through product import. Use the bulk inventory update feature to update inventory quantities across locations.
Other Product Fields
Field
Description
Requirements
Path (Optional)
Custom relative URL path for the product page
The column must be retained, but values can be left blank.
Enter only the relative path without the domain.
The path can have up to 5 levels and a maximum length of 512 characters.
Reserved system prefixes aren't allowed. Paths starting with /collections or /products aren't supported.
Invalid values won't block the product import, but the URL may fail to update.
The column must be retained, but values can be left blank.
Enter T for yes or F for no.
If left blank, the default value is F.
Invalid values are treated as T.
For products with multiple variants, enter the value only in the first row. Subsequent rows can be left blank.
For local imports, the specified value is applied. For other import methods, the value is set to N.
Included / market (export only)
Whether the product is published to a specific market
The column must be retained, but values can be left blank.
Enter TRUE to publish the product to the market or FALSE to unpublish it.
This column isn't included in the default product template. It is only available in exported product files.
Each market corresponds to a separate column (for example, Included / United States).
Price / market (export only)
Selling price of the SKU in a specific market.
The column must be retained, but values can be left blank.
Enter numbers only, without currency symbols (for example, 9.99).
The currency follows the market currency configured in the store.
For products without variants, enter the value only in the first row. For products with multiple variants, enter a value for each SKU row.
This column isn't included in the default product template. It is only available in exported product files.
Each market corresponds to a separate column (for example, Price / Europe).
Metafield Description (export only)
Product metafield value
The field structure depends on the metafield definition configured in the store.
Values must match the data type defined for the metafield (for example, text, number, URL, or boolean).
Invalid values may cause the import to fail or may be ignored.
Adding Products without Variants to the Product File
For a product without variants, enter its information in a single row.
Enter the product name in Title.
Note: Use clear and specific product titles to make products easier to identify and manage. For example, instead of T-shirt, use a more descriptive title such as SHOPLINE Anniversary T-shirt.
(Optional) Enter a Handle, or leave it blank and let SHOPLINE generate one.
(Optional) Enter an SKU for the product.
Enter the selling price in SKU price. If left blank, the price defaults to 0.
Complete any other fields you want to configure for the product.
To add another product, enter its information in the next row.
Adding Products with Variants to the Product File
For a product with variants, use separate rows to define each variant combination.
For example, suppose a T-shirt has two options: Color and Size.
Enter Color in Option1 name.
Enter the corresponding color, such as Red, in Option1 value.
Enter Size in Option2 name.
Enter the corresponding size, such as S, in Option2 value.
Each available combination should occupy a separate row because each combination represents a variant.
For example:
Title
Option1 name
Option1 value
Option2 name
Option2 value
SKU
SHOPLINE T-shirt
Color
Red
Size
S
TSHIRT-RED-S
Red
M
TSHIRT-RED-M
Yellow
S
TSHIRT-YELLOW-S
Yellow
M
TSHIRT-YELLOW-M
For product-level fields, such as Title, Vendor, and Tags, enter the value in the first row for the product and leave subsequent variant rows blank where supported.
For SKU-level fields, such as SKU, SKU price, and SKU Inventory Policy, enter the appropriate value for each variant row.
Repeat this process for each product with variants you want to import.
Importing Products into SHOPLINE
After preparing your product file, upload it to SHOPLINE to create or update products in bulk:
From your SHOPLINE Admin, go to Products.
Click Import in the upper-right corner and select Import locally.
In the Import window, upload your CSV or XLSX file by either:
Clicking the upload area and selecting the file from your device.
Dragging and dropping the file into the upload area.
Under Import settings, configure the options based on how you want SHOPLINE to process the file:
Override the same handle products (products without a handle column will be added as new products): If selected, a Handle in your file that matches an existing product will overwrite that product. If not selected, a duplicate Handle gets a numeric suffix appended automatically and is imported as a new product. Products without a Handle will be created as new products either way.
Skip blank fields (if unchecked, blanks in your file will overwrite existing data): Enable this to prevent blank fields in the file from overwriting existing product data. If disabled, blank fields may clear existing values.
Only update product metafields (works for existing products only — rows with a non-matching handle won't import): Enable this when you only want to update metafields for existing products. Rows whose Handles don't match existing products aren't imported.
Don't update inventory quantities: Enable this if you don't want inventory quantities in the file to update your existing inventory.
Click Import.
Notes:
SHOPLINE supports CSV and XLSX files for product imports, with a maximum file size of 40 MB.
Your store allows a maximum of 4 concurrent import operations. If this limit is reached, Import is temporarily unavailable until one of the active import operations is completed.
Some fields have specific update behaviors and may not be affected by Skip blank fields. Review the requirements under "Understanding Product File Fields" before updating existing products.
If your store has multiple inventory locations enabled, inventory quantities can't be updated through this product import. Use the bulk inventory update feature instead.
Checking Products After Import
After the import is complete, go to Products to review the products that were created or updated.
We recommend opening the affected products and checking important information, including:
Product information
Variants and SKUs
Prices and costs
Inventory settings
Product images
Product status and Online Store availability
Tax and shipping settings
If you're updating existing products, check that the intended fields were updated and that existing product or variant information wasn't unintentionally overwritten.
Troubleshooting Product Import Issues
If your product file can't be imported or some product information isn't imported as expected, check the following:
File format: Make sure you're importing a CSV or XLSX file and that the file doesn't exceed 40 MB.
Garbled or unreadable characters: If your CSV file contains garbled or unreadable characters after being opened or edited in spreadsheet software, refer to "Resolving Garbled Characters in CSV Files".
Column headers: Don't modify the field names or their order in the first row.
Required fields: Make sure all required fields contain valid values.
Field formatting: Check that values meet the formatting, length, and data-type requirements described in this guide.
Handles: When updating products, make sure the Handles in your file exactly match the existing products you intend to update.
Variant structure: Make sure option names, option values, and variant combinations are entered correctly.
Images: Make sure image URLs and file formats meet the applicable requirements.
Blank fields: If you're updating products, check whether Skip blank fields was enabled and whether the affected field has special blank-field behavior.
Inventory: If your store uses multiple inventory locations, update inventory quantities using the bulk inventory update feature instead of the product import.
If your CSV file displays garbled text or incorrect formatting, try opening and saving it with another spreadsheet or CSV editing tool before importing it again.