If you need to add or update multiple products and their information to your online store or POS at once, you can achieve this by using SHOPLINE’s Product Bulk Import template (a CSV file) to upload the data. This will save you significant time compared to adding the products one by one manually. This template allows you to edit multiple product properties, including name, SKU, images, price, stock, weight, and more. Visit the Product Bulk Operation section for detailed instructions on editing products.
Before You Start
Using a spreadsheet tool to format product data per the instructions below, you can easily import products into your SHOPLINE online store and POS in batch.
Before you start, get the following product information ready:
Names of your products
Any variants, such as sizes, colors, or flavors
Retail prices of your products
These are tax-exclusive prices if your store displays prices exclusive of tax
These are tax-inclusive prices if your store displays prices inclusive of tax
Supply prices of your products
Existing barcode/SKU numbers
Downloading the Template
To get started, download the product template file. This template contains all the required fields for importing product data into your store:
From your SHOPLINE Admin, go to Products.
Click Import in the top-right corner, then select Import locally.
In the pop-up window, click Product information template to download the template file. To update existing products, click Export products to download the current data before making edits.
Notes:
Supported file formats for import are .xlsx and .csv, with a maximum file size of 40 MB.
SHOPLINE only recognizes correctly formatted files. Ensure the file follows the template structure before uploading.
Some spreadsheet tools (such as certain versions of Microsoft Excel) may not handle CSV files properly. To avoid formatting issues, consider using a dedicated CSV editor or WPS Office.
To prevent formatting errors, make sure the number of characters in each cell does not exceed the limits supported by your spreadsheet software:
Microsoft Excel and WPS: up to 32,767 characters per cell
Apple Numbers: up to 1,000,000 characters per cell
If you encounter issues when downloading or opening the template file, we recommend using Chrome to avoid potential formatting problems.
Do not modify the field names or their order in the first row of the template. Changing or rearranging the headers may prevent SHOPLINE from recognizing the data, resulting in import failure.
Understanding the Fields
Once you have downloaded the product template spreadsheet file, you can add your product information. Two types of products can be added to your store, and each requires slightly different information:
Standard product: A single product with a single SKU and its own inventory.
Product with variants: A product offered in different variations, such as size or color. Each variant is a unique SKU with its respective inventory.
Notes on updating products:
Fill in all necessary fields marked as Required.
Follow the descriptions for each field carefully to avoid batch import failures.
When you execute an update by overwriting values with the CSV file, SHOPLINE will replace any existing products with the same handle. Existing values will be overwritten with the values in the CSV file. For example, if the Brand value of an existing product is "Apple", but the Brand column for this product is empty in your imported CSV file, the brand information will be overwritten with a blank value.
Product Data Fields
Field Name
Description
Rules / Notes
Product id (export only)
System-generated unique ID for each product, used by merchants to retrieve the product_id
Any value entered during import will be ignored.
Maximum length is 64 characters.
Variant id (export only)
System-generated unique ID for each variant, used to identify existing variants during updates
This field is not included in the import template. However, if it is manually added and used for updates, it will be recognized and applied.
Note: Commonly used when you need to modify options or option values (Option1–5 names and their values) without changing the variant_id, in order to avoid impacting advertising campaigns and data tracking.
Optional, but required when updating existing variants.
Must belong to the product identified by Handle. Mismatch will cause the import to fail.
Handle (Optional)
Unique product identifier generated from the product title, used as the primary identifier to match products during import
The column must be retained, but values can be left blank.
Must exactly match the existing Handle for updates; otherwise, it will be treated as a new product.
If a match is found, the product will be updated.
If not, a new product will be created.
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
Spaces and special characters are automatically converted to "-" (e.g., “apple phone” → “apple-phone”).
Note: If the Handle matches, this field is not overwritten during updates, but all other associated information will be updated.
Title (Required)
Product name or title
The column must be retained, and values cannot be empty.
Maximum length is 255 characters; exceeding this limit will cause import failure.
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
This field is not affected by the "Ignore blank fields" setting. Leaving it blank will cause the import to fail.
Subtitle (Optional)
Product subtitle or tagline
The column must be retained, but values can be left blank.
Maximum length is 400 characters; any excess content will be automatically truncated.
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
Product description html (Optional)
Detailed product description
The column must be retained, but values can be left blank.
Both plain text and HTML are supported.
To apply formatting such as line breaks or bold text, HTML code is required.
For plain text, enter the content directly without additional styling.
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
SPU (Optional)
Merchant-defined internal product identifier
The column must be retained, but values can be left blank.
Maximum length is 255 characters; exceeding this limit will cause import failure.
Emojis are not supported and will cause import failure.
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
Vendor (Optional)
Product brand or manufacturer
The column must be retained, but values can be left blank.
Maximum length is 255 characters; any excess content will be automatically truncated.
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
Tags (Optional)
Tags used for categorization and search filtering
The column must be retained, but values can be left blank.
Enter multiple tags in one row, separated by commas (e.g., red, summer).
Tags are case-insensitive (ABC = abc).
A maximum of 250 tags per product is allowed; any tags beyond this limit will be ignored.
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
Collections (Optional)
Collection handles the product belongs to
The column must be retained, but values can be left blank.
Use collection handles (not titles), with spaces converted to "-".
Separate multiple collection handles with commas.
Smart collections are not supported.
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
Warning: If this column is removed from the sheet, existing collections may be cleared. Please proceed with caution.
Master image (Optional)
Main product image URL
The column must be retained, but values 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 10MB; exceeding this limit will cause import failure.
The maximum length per image URL is 512 characters; exceeding this limit will also cause import failure.
Image Alt Text (Optional)
Alternative text for product images (SEO & accessibility)
The column must be retained, but values can be left blank.
Maximum length is 512 characters; any excess content will be automatically truncated.
SEO title (Optional)
SEO title for the product page, displayed in search results
The column must be retained, but values can be left blank.
It is recommended to include core product keywords.
Maximum length is 255 characters; exceeding this limit may result in truncation and may affect SEO performance.
For products with multiple variants, only the first row should be filled, and 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 values can be left blank.
It is recommended to keep it concise and include core keywords.
Maximum length is 1,024 characters; exceeding this limit may result in truncation and may affect SEO performance.
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
SEO keywords (Optional)
SEO keywords for the product.
The column must be retained, but values can be left blank.
It is recommended to use high-frequency keywords relevant to the product.
Separate multiple keywords with commas. A maximum of 50 keywords is allowed per product; any additional keywords will be ignored.
The total length is limited to 500 characters; if this limit is exceeded, the field will be treated as not provided.
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
Published (Optional)
Whether the product is published to the online store
The column must be retained, but values can be left blank.
Enter "Y" to publish the product or "N" to keep it unpublished.
If left blank, the default value will be "Y".
Any invalid value will be treated as "Y".
For local imports, values follow the toggle rules. For other import methods, the value will be set to "Y".
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
Status (Optional)
Product availability status
The column must be retained, but values can be left blank.
Supported values are "Y" (active), "N" (draft), and "archived".
If left blank, the default value will be "Y".
Any invalid value may be converted to the default value "Y".
For local imports, values follow the toggle rules. For other import methods, the value will be set to "Y".
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
Standardized Product Type (Optional)
Standard product category (based on Google Product Category), used for tax calculation
The column must be retained, but values can be left blank.
The value must be selected 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 calculation.
For products with multiple variants, only the first row should be filled, and 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.
Maximum length is 255 characters; exceeding this limit will cause import failure.
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
Created time (Optional)
Product creation time
The column must be retained, but values can be left blank.
This field is typically not required and is mainly used in data migration scenarios (e.g., 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 will be used.
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
SKU (Optional)
Merchant-defined variant identifier
The column must be retained, but values can be left blank.
Leaving this field blank when uploading the CSV file and checking Update/ overwrite the same products, any existing values will be used for missing columns, the existing SKUs will be cleared.
Each SKU must be unique within the product.
A maximum of 500 SKUs is allowed per product; maximum length for each SKU is 255 characters.
For products with multiple variants, this field should be filled for each row.
Option1 name (Optional)
Name of the first variant attribute (e.g., Color)
The column must be retained, but values can be left blank.
This field is not affected by the "Ignore blank fields" setting. When updating the CSV file, do not clear the information in this field, as doing so will result in the deletion of the original variant value.
A product can have up to 5 option names; maximum length for each name is 255 characters.
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
Warning: Clearing this field during updates may remove existing variant structures.
Option1 value (Optional, but required if Option 1 Name has a value)
Value of the first variant attribute
If the corresponding option name is provided, this field becomes required.
The column must be retained, but values can be left blank.
This field is not affected by the "Ignore blank fields" setting. When updating the CSV file, do not clear the information in this field, as doing so will result in the deletion of the original variant value.
Each cell should contain only one value.
Duplicate values (after trimming spaces) are not allowed and will cause import failure.
Values should be filled row by row based on variant combinations (e.g., Red-S, Red-M should be entered in separate rows).
Warning: Clearing this field during updates may remove existing variant values.
Option2–Option5 name (Optional)
Name of the second to fifth variant attributes
Same rules as Option1 name.
Option2–Option5 value (Optional, but required if the corresponding option name has a value)
Value of the second to fifth variant attributes
Same rules as Option1 value.
Option1 value image (Optional)
Image URL for the first variant value
The column must be retained, but values can be left blank.
Each option value supports only one image.
Supported formats include JPG, JPEG, PNG, GIF, and WebP.
Each image must not exceed 10MB.
The maximum length per URL is 512 characters; exceeding this limit will cause import failure.
Option2–Option5 value image (Optional)
Image URL for the second to fifth variant values
Same rules as Option1 value image.
Image (Optional)
Image URL for the variant (SKU)
The column must be retained, but values can be left blank.
Each SKU supports only one image.
Supported formats include JPG, JPEG, PNG, GIF, and WebP.
Each image must not exceed 10MB.
The maximum length per URL is 512 characters; exceeding this limit will cause import failure.
SKU Image Alt Text (Optional)
Alternative text for variant images
The column must be retained, but values can be left blank.
Maximum length is 512 characters; any excess content will be automatically truncated.
SKU price (Optional)
Selling price of the variant
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 will be 0.
Negative values will be converted to 0.
Values exceeding 11 digits will be truncated to 11 digits (maximum value: 99999999999).
For products without variants, only the first row should be filled; for products with multiple variants, this field should be filled for each SKU row.
SKU compare at price (Optional)
Original price of the variant
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 will be 0.
Negative values will be converted to 0.
Values exceeding 11 digits will be truncated to 11 digits (maximum value: 99999999999).
For products without variants, only the first row should be filled; for products with multiple variants, this field should be filled for each SKU row.
SKU weight (Optional)
Weight value of the variant
The column must be retained, but values can be left blank.
Enter numbers only with up to 2 decimal places.
Negative values will be converted to 0.
Non-numeric values will cause import failure.
Values exceeding 12 digits will be truncated to 12 digits (maximum value: 999999999999).
For products without variants, only the first row should be filled; for products with multiple variants, this field should be filled for each SKU row.
SKU weight unit (Optional)
Unit of the variant weight
The column must be retained, but values can be left blank.
Supported values are g, kg, lb, and oz.
Invalid values will be automatically converted to g.
When the "Ignore blank fields" setting is disabled, leaving this field blank will reset the value to g.
For products without variants, only the first row should be filled; for products with multiple variants, this field should be filled 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 tracking or "F" to disable it.
If left blank, the default value will be "T".
Invalid values will be treated as "T".
For local imports, values follow the toggle rules. For other import methods, the value will be set to "Y".
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
SKU Inventory Policy (Optional)
Overselling rule for the variant
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 will be "deny".
Invalid values will be treated as "deny".
For products with multiple variants, this field should be filled for each SKU row.
SKU Inventory Quantity (Optional)
Inventory quantity of the variant
The column must be retained, but values can be left blank.
Only integers are supported.
The value must be within the range of -999,999,999 to 999,999,999.
Non-numeric values will be converted to 0.
This field does not take effect when multiple inventory locations are enabled.
During overwrite updates, leaving this field blank will retain the existing inventory. When the "Ignore blank fields" setting is disabled, leaving this field blank will reset the value to 0.
Cost per item (Optional)
Cost price 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 will be truncated to 11 digits (maximum value: 99999999999).
For products without variants, only the first row should be filled; for products with multiple variants, this field should be filled for each SKU row.
Barcode (ISBN, UPC, GTIN, etc.) (Optional)
Barcode for logistics and inventory tracking
The column must be retained, but values can be left blank.
Maximum length is 255 characters.
It is recommended to ensure uniqueness to avoid conflicts.
For products with multiple variants, this field should be filled for each SKU row.
SKU tax policy (Optional)
Whether the variant 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 will be "T".
Invalid values will be treated as "T".
For local imports, values follow the toggle rules. For other import methods, the value will be set to "Y".
SKU shipping policy (Optional)
Whether the variant 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 will be "T".
Invalid values will be treated as "T".
For local imports, values follow the toggle rules. For other import methods, the value will be set to "Y".
Path (Optional)
Custom product page URL path (relative)
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 are not allowed.
Invalid values will not block product import but may fail to update the URL.
Notes:
Reserved system prefixes are not allowed. Paths starting with "/collections" or "/products" are not supported.
This feature requires custom URL configuration to be enabled.
Gift card (Optional)
Whether the product is a gift card
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 will be "F".
Invalid values will be treated as "T".
For products with multiple variants, only the first row should be filled, and subsequent rows can be left blank.
For local imports, values follow the toggle rules. For other import methods, the value will be set to "N".
HS code (Optional)
Customs HS code for declaration
The column must be retained, but values can be left blank.
The value must be 6 to 12 digits; invalid formats will cause import failure.
For products with multiple variants, this field should be filled for each SKU row.
Shipping origin (Optional)
Country/region code of the 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 import failure.
For products with multiple variants, this field should be filled for each SKU row.
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 is not included in the default import template. It is only available in exported product files.
Each market corresponds to a separate column (e.g., 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 (e.g., 9.99).
The currency follows the market currency configured in the store.
For products without variants, only the first row should be filled; for products with multiple variants, this field should be filled for each SKU row.
This column is not included in the default import template. It is only available in exported product files.
Each market corresponds to a separate column (e.g., Price / Europe).
Metafield Description (export only)
Product metafield values
The field structure depends on the metafield definition configured in the store.
Values must match the data type defined for the metafield (e.g., text, number, URL, boolean).
Invalid values may cause import failure or be ignored.
Adding Standard Products
To create a standard product, start by assigning a name to your product. It's essential to ensure that each product name is unique and specific to avoid confusion, especially if your store offers similar items. Avoid using general or vague names like “t-shirt”. Use a specific name like "SHOPLINE Anniversary T-shirt" for easy identification.
you can manually create a handle by entering the value in the supported format, or you can leave the Handle field blank and let SHOPLINE generate one automatically. Similarly, You have the option to either create your own SKU for the product or let POS automatically generate one by leaving the corresponding field blank.
It is essential to provide a retail price for your product. Leaving the retail price column blank will result in the product being priced at $0.
To add more standard products, create another entry in a new row and follow the instructions above. Repeat the process for as many products as needed.
Adding Products with Variants
When creating a product with variants, it's important that each variant has a different name to group them together.
For example, say you want to upload a T-shirt that has two different attributes (options): Color and Size.
Option 1 Name: Enter the name of the first variant. For example, Color. Option 1 Value: Enter the value of the first variant. For example, Red, Yellow, and Blue. Option 2 Name: Enter the name of the first variant, for example, Size. Option 2 Value: Enter the value of the first variant, for example, S, M, and L.
Please note that you need to list all possible or available combinations of the attributes, as each combination represents a variant. Please see below for an example.
To add more variant products, navigate to the next row in the spreadsheet and follow the same steps mentioned above. Repeat the process for as many products as needed.
Importing the File for Bulk Product Updates
Once you have completed your product template, you can upload it to your SHOPLINE Admin to create or update products in bulk.
From your SHOPLINE Admin, go to Products. Click Import in the top-right corner, then select Import locally.
In the import pop-up window, upload your completed file by clicking the upload area or dragging and dropping the file.
Configure the import settings as needed:
Override the same handle products: If the Handle in your file matches an existing product, that product will be updated. Products without a Handle will be created as new products.
Ignore blank fields: Empty fields in the file will not overwrite existing data. If unchecked, empty fields will clear existing values.
Only update product metafields: Only metafields will be updated for existing products based on the Handle column; no new products will be created.
Click Import to start the import process.
Notes:
Supported file formats are .xlsx, .xls, and .csv, with a maximum file size of 40 MB.
If the upload fails, please check:
Whether the file format is correct
Whether the data is filled in according to the template guidelines
If your store has multiple inventory locations enabled, inventory quantities cannot be updated through this import. Please use the inventory file on the inventory management page instead.
Once the import is complete, you can view the imported or updated products on the Products page. To ensure accuracy, we recommend opening the product details page to review the imported data.