If you have more than a handful of products, importing them from a spreadsheet is faster than typing each one. This article covers how to prepare the file, every field the self-serve import accepts, each step of the upload, and the things it does not do, so you know what to finish by hand afterwards.
Moving a whole catalog, or products with sizes, colors, add-ons or stock counts? You do not have to use this import at all. Our team imports your catalog for you, variants, modifiers and stock included. See Need variants, modifiers or stock counts imported? Our team does it for you below.
What the import is good for
The self-serve import creates products with their basic details: names, description, SKU, price, cost, category, status and sales channels. It is the right tool for loading a catalog of simple products in one go.
It does not create variants, modifier groups or stock counts. For a small catalog, import the products and complete them in the product form afterwards (see "What the self-serve import does not handle"). For anything bigger, send us your product list and our team imports it with the variants, modifiers and stock counts included.
Need variants, modifiers or stock counts imported? Our team does it for you
The limits described on this page apply only to the self-serve CSV import in Shop+. Our team has back-office import tools that are not available in the merchant dashboard, and uses them to load a complete catalog for you: products with their sizes and colors (including the price, SKU and stock count of each variant), modifier groups attached to the right products, and opening stock counts.
This is the normal way to move an existing catalog onto Stackably. A boutique with hundreds of SKUs in sizes and colors, or a shop coming from another point-of-sale system, does not re-enter its products by hand and does not need to work around the self-serve import.
What to do: send your product list to your agent or to support. An export from your previous point-of-sale or online store, or a spreadsheet, is fine. Our team takes it from there as part of your setup.
For agents: a merchant with a large catalog, or one migrating from another system, can be told yes, we import it all, including variants, modifiers and stock. The import is done by our team, not by the merchant through the screen described below.
The end result
In this example a five-row file creates five products: a granola with a picture and a sale price, a bottled cold brew, an enamel pin, an open-price catering deposit, and a seasonal coffee saved as a draft. Three subcategories that did not exist yet (Pantry, Bottled and Gifts) are created along the way.
Step 1 – Prepare your CSV file
Build the list in Excel, Google Sheets or Numbers with one product per row and one column per field, then save or download it as a CSV file. Only CSV files are accepted.
The first row must be column headings. If you name your headings the same as the fields in the table below, the import matches them for you.
Only Product Name is required by the import. In practice include at least Product Name, External Title, Description, Price, Category, Product Type, Status and the channel columns, so the products are complete and visible where you sell.
Every field you can import
Field | What to put in the column |
Product Name (required) | Your internal name for the product |
External Title | The name customers see. It can be the same as the product name |
Description | Text shown on the product page of the online store |
SKU | Your stock code or the item's barcode |
Price | Numbers only, with no $ sign. For example 9.50 |
Strike Price | An optional "was" price, numbers only |
Cost | What you pay for the item, numbers only. See the note on inventory tracking below |
Open Price | Yes or No. Yes means the price is typed in at the time of sale |
Taxable | Yes or No |
Status | Active or Draft |
POS Available | Yes or No. Yes is needed to sell the product on a terminal |
Online Store | Yes or No. Yes is needed to sell it on the online store |
Kiosk, Order To Table, Third Party (OrderOut), Conversation Product | Yes or No for each of the other sales channels. Order To Table is not used; Stackably does not offer table ordering, so leave it as No. |
Track Inventory | Yes or No |
Sell Out Of Stock | Yes or No |
Category (by name) | The category name, spelled the same as in Shop+ |
Subcategory (by name) | The subcategory name. A subcategory that does not exist is created under the category |
Product Type (by name) | The product type name, spelled the same as in Shop+ |
Image URLs | A web link to a picture of the product |
Physical Product, Weight, Weight Unit, Origin Country, HS Code | Shipping details for physical products |
Color, Online Sale Method, Payout | Optional product settings |
External POS ID, External Tax ID | Reference IDs from another system, if you use them |
The list of fields also includes entries that start with Modifier:, such as Modifier: Size and Modifier: Color. Leave these unmapped. See "What the self-serve import does not handle".
A sample file
These are the headings and the first row of the file used in this article. Copy the headings into your own spreadsheet to start.
Headings: Product Name, External Title, Description, SKU, Price, Strike Price, Cost, Open Price, Category, Subcategory, Product Type, Taxable, Status, POS Available, Online Store, Kiosk, Track Inventory, Sell Out Of Stock, Image URLs
Example row: House Granola 12 oz, House Granola, Small-batch oat and almond granola in a resealable bag., GRAN-12, 9.50, 11.00, 4.25, No, MERCHANDISE, Pantry, retail, Yes, Active, Yes, Yes, No, Yes, No, (link to the product picture)
Step 2 – Open the import window
In the left sidebar click Shop+ and stay on Products. In the toolbar above the product list, click the Upload products icon. It is the upward arrow to the right of the + icon.
The Import Products window opens. The three steps are shown across the top: Upload, Match Fields and Review.
Step 3 – Upload the file
Drag your CSV file onto the upload area, or click the area and choose the file. When the file name and size appear under the upload area, click Next.
Step 4 – Match your columns to product fields
The Match CSV Columns screen lists each column from your file on the left and an Import As list on the right. Columns whose headings match a field name are matched automatically. In this example all nineteen columns were matched without any changes.
Check every row. For a column that was not matched, open its Import As list and choose the right field. For a column you do not want, leave it on Do not import. Columns left unmapped are ignored. When every column is right, click Next.
Tip: a heading that is close but not identical may not be matched. For example, a column headed "Strikethrough Price" has to be set to Strike Price by hand.
Step 5 – Review and edit the rows
The Review & Edit screen shows every row that will be imported, with a count at the top. You can type over any value, change a Yes or No setting, or click Remove at the end of a row to leave that product out. Scroll the table to the right to see all the columns.
This is your last chance to catch mistakes, so check prices, categories and statuses here. Click Back to return to the matching step, or Confirm Import to create the products.
Step 6 – Check the imported products
A success message appears, the window closes, and the products are added to the Products list. Use the All tab to see active and draft products together, since products imported as Draft do not show on the Active tab.
Open two or three products and confirm the price, category, channels and picture came through as you expected.
What the self-serve import does not handle
These limits apply to the import you run yourself from the Products tab. Our team can import all of them for you; see Need variants, modifiers or stock counts imported? above. If you are importing yourself, plan for these before you start, so nothing is missed afterwards.
Variants are not imported. There are no fields for option names, variant prices, variant SKUs or variant stock. Import the product, then add its sizes and colors under Product Variants in the product form.
Modifier groups are not imported. There are no fields for a group's minimum, maximum, selection type or option prices, and nothing attaches a group to a product. Build modifier groups on the Modifiers tab and attach them in the product form.
Do not use the "Modifier:" fields. Mapping a column to Modifier: Size or Modifier: Color does not create variants. It creates separate modifier groups whose options are each priced at the product's full price, it does not attach them to the product, and it can remove letters from the product name. Leave these on Do not import.
Stock quantities are not imported. There is no field for a count. Products with tracking on start at 0 in stock.
A Cost turns inventory tracking on. Any row with a value in Cost is imported with tracking on, even when Track Inventory says No. If you do not want a product tracked, leave Cost empty in the file and add the cost later, or turn tracking off in the product form after importing.
Tags, labels, vendors and units are not imported. Add them in the product form or with the bulk action bar.
Other product settings are not imported. Bulk pricing tiers, tag-based pricing, bundles, recipes, print configuration, Contains Alcohol and Price by Weight are set in the product form.
After the import: a short checklist
Receive stock for every tracked product, so it does not sit at 0. See "Receiving stock with cost, lot and expiry".
Add variants to products that come in sizes or colors. See "Product variants: sizes, colors and combinations".
Attach modifier groups to menu items and customizable products. See "Attaching modifier groups to a product".
Set print configuration for kitchen items. See "Print Configuration in Shop+".
Publish drafts when they are ready. See "Publication status and sales channels".
Sync to devices so the new products reach your terminals.
Tips for a clean import
Test with five rows first. Import a small file, check the results, then import the rest.
Import each file once. The import adds products. Remove rows you have already imported before uploading a corrected file.
Create categories and product types before importing. Spell them in the file the same way they appear in Shop+.
Use numbers only for money. No $ signs or commas.
Use Yes and No for the on and off settings.
Keep one product per row. Do not add a row for each size or color.
Import as Draft if you want to review everything before it goes on sale. Change the status to Active afterwards, one at a time or in bulk.
Common questions
I am moving from another system with hundreds of products. Do I have to enter them by hand? No. Send your product list to your agent or to support and our team imports it for you, including sizes and colors, modifier groups and stock counts. See Need variants, modifiers or stock counts imported? above.
What file type do I need? A CSV file. Save or download your spreadsheet as CSV.
Which columns are required? Only Product Name. Include price, category, product type, status and channels so the products are ready to sell.
Can I import products with sizes and colors? Not with the self-serve import: import the product as one row, then add the variants in the product form. For a large catalog, have our team import it with the variants included.
Can I import modifiers? Not with the self-serve import. Build modifier groups on the Modifiers tab and attach them to products, or have our team import your catalog with the modifiers included.
Can I import my stock counts? Not with the self-serve import. Receive stock after importing, or have our team import your catalog with opening stock counts included.
Why are my imported products out of stock? They were imported with tracking on, which happens whenever Track Inventory is Yes or the row has a Cost. Receive stock, or turn tracking off on the product.
Why can't I see a product I imported? It may have been imported as Draft. Click the All or Draft tab above the product list.
What happens if my category does not exist? Create categories before importing. Subcategories that do not exist are created for you.
Can I add product pictures in the import? Yes. Put a web link to the picture in a column and match it to Image URLs.






