Products & Catalog
Managing products
Browse, create, and edit the products your business sells through its storefront.
View as MarkdownProducts live under Catalog → Products in the sidebar. The list shows everything the active business exposes through its API; the product page is where you edit a single product. Everything on these screens is scoped to the active business: if no business is selected, the page shows Select a business first.
The product list
The Products page lists your catalog in a table with these columns: an image thumbnail (a gray placeholder square when the product has no image), Name, SKU (shows - when empty), Status (a status pill), and Price (right-aligned). Click any row, or the eye icon at the end of it, to open the product's page.
- Search filters the list as you type (matches on the server, with a short delay).
- Filter by Status narrows the list to Draft, Active, or Archived products.
- Sort by clicking the Name, SKU, Status, or Price column headers.
- Pagination is fixed at 25 rows per page. Use Previous / Next; the footer shows "Page X of Y" and the total count.
When you have no products at all, the list shows an empty state ("No products yet") with New product and Import CSV buttons to get started.
Product statuses
| Status | Meaning |
|---|---|
| Draft | The product exists but is not published. New products start here. |
| Active | The product is live and exposed through the storefront API. |
| Archived | The product is retired but kept for reference. |
Bulk actions
Select products with the row checkboxes (or the select-all checkbox in the header) to unlock bulk actions:
- Set status prompts for a New status (Draft, Active, or Archived) and asks you to confirm before applying it to every selected product.
- Delete removes all selected products after a confirmation dialog. This is destructive.
Import and export CSV
- Export CSV downloads your catalog as
products.csv. If the export fails, an inline "Export failed." message appears. - Import CSV opens the Import products dialog. Choose a
.csvfile with a header row and click Import. The import upserts: the result reports how many rows were created, updated, and failed, with a per-row error message ("Row {n}: ...") for each failure. The product list refreshes when you close the dialog, not before.
The file's columns are id, capability, name, slug, sku, barcode, status, price_amount, compare_at_amount, currency, description and categories. capability is standard (Product) or made_to_measure (Made to measure); both amounts are in minor units (1990 for 19.90). The easiest way to get a valid file is to export first and edit that.
Create a product
-
Click New product on the Products page.
-
The screen asks What are you selling? and explains "This decides which sections the product gets. It can't be changed later." Pick one of the cards:
Card Meaning Product Sold as is: one price, or options like size or color with their own SKU and price. Always offered. Made to measure Priced from dimensions and option choices (e.g. a width x height grid), made per order. Only offered while the Configurator module is enabled for your business. See Variants and the configurator. -
The header now reads "Selling as Product" (or "Selling as Made to measure"); click Change to go back to the cards. Fill in the Details section: Name is required ("Give the product a name." otherwise), Description is optional.
-
Click Save in the header. The product is created as a draft and you land on its page, where every other section becomes available.
You no longer type a slug when creating a product: the storefront address is derived from the name (a second "T-shirt" gets t-shirt-2). Change it later under Search & social. What you pick on the first screen is permanent; to sell the same thing the other way, create a new product.
The product page
The product page is one editor: a header, a column of sections, and a sidebar on the right (below the sections on small screens).
The header and Save
The header shows the back arrow, the product name, its status pill, a Save button and a More actions menu (the "⋯" button).
- One Save for the whole page. Edit as many sections as you like; the header says Unsaved changes, and Save stores every section you changed, in order. While it runs the button reads Saving…; afterwards the header says Saved.
- A failed save keeps your edits. The header shows "Save failed. Your changes are still here." and the page scrolls to the section that failed, opening it if it was collapsed, with the error under the field. Sections saved before the failure stay saved.
- Leaving with unsaved changes asks first. The back arrow (or your browser's back button) opens an Unsaved changes dialog; Discard changes leaves without saving.
- Delete lives in the More actions menu. The Delete product dialog asks 'Delete "{name}"? This cannot be undone.' and returns you to the product list.
Some sections are editors of their own that save as you go instead of through the header Save: Images, Options & variants, and the configurator cards. Each one confirms its own saves.
If the product's way of selling is switched off for your business, a warning banner under the header says so, for example "Made to measure is turned off; this product cannot be bought." The product stays editable; it cannot be bought until the module is enabled again.
If the product was deleted, the page shows "This product does not exist (it may have been deleted)." with a Back to products link.
Sections
Which sections you see depends on what the product is and which modules your business has:
| Section | When it shows | What it holds |
|---|---|---|
| Details | Always | Name and Description. |
| Images | Always | The product's images, picked from the media library. See Media. |
| Pricing | Always | Price (Base price for Made to measure), Compare-at price, Unit and Currency. |
| Stock & shipping | Always | SKU, Barcode (EAN/GTIN), the Track stock, Requires shipping and Returnable switches, Weight (grams) and Stock quantity. |
| Options & variants | Product only | Options and generated variants. See Variants and the configurator. |
| Bulk pricing | Product only, collapsed at first | Prices per customer group and quantity. See Bulk pricing. |
| Dimensions, Price rules, Option groups | Made to measure, with the Configurator module | The configurator. See Variants and the configurator. |
| Quote | With the Sales module | How the product can be bought. See Quote. |
| Search & social | Always, collapsed at first | Meta title and description, the address, a Google preview and the social image. See Search & social. |
The sidebar holds Status, Tags, Categories, VAT class (only with the Webshop module) and Lead time.
Product fields
| Field | Section | Description |
|---|---|---|
| Name | Details | Required. |
| Description | Details | Optional free text. |
| Price | Pricing | Amount in major units, with a dot or a comma for decimals (19.99 or 19,99); anything else shows "Enter an amount like 12.90." For a product with variants it is the default each variant can override. |
| Base price | Pricing | Made to measure only, in place of Price: the starting price when the product has no dimensions. Option choices add to it; once a dimension grid exists, the grid price replaces it. |
| Compare-at price | Pricing | Optional. "The old price, shown struck through. Must be higher than the price." |
| Unit | Pricing | What one quantity means: Piece (default), Kilogram, Gram, Liter, Meter, Square meter (m²), Cubic meter (m³) or Hour. See Units and decimal quantities. |
| Currency | Pricing | EUR, USD or GBP. A product that already has another currency keeps it as an extra option. |
| SKU | Stock & shipping | Optional stock-keeping unit. |
| Barcode (EAN/GTIN) | Stock & shipping | Optional. |
| Track stock | Stock & shipping | Whether sales of this product count against stock. Off means the product sells without limits, even if it has a stock record. |
| Requires shipping | Stock & shipping | Whether the product is shipped. When on, Weight (grams) appears. |
| Returnable | Stock & shipping | Whether the product can be returned. |
| Weight (grams) | Stock & shipping | Whole number of grams. |
| Stock quantity | Stock & shipping | Only with the Stock module, Track stock on, and a product without variants (variants keep their own stock). Placeholder "Blank = not tracked". 0 or more, with at most 3 decimals; otherwise "Stock must be 0 or more, with at most 3 decimals." |
| Status | Sidebar | Draft, Active or Archived. |
| Tags | Sidebar | Free labels. Type one and press Enter (or a comma); click the cross on a tag to remove it. |
| Categories | Sidebar | Type in Search categories and click a match to add it; click the cross on a category to remove it. Without any, the card says "Not in any category yet." Manage the tree under Categories. |
| VAT class | Sidebar | Default VAT class or one of your tax classes, shown as "Name (rate%)". Only with the Webshop module. Tax classes are managed under Settings → Taxes. |
| Lead time (days) | Sidebar | Whole number of days, 0 to 365. "Days you need before the order ships. Blank = ships right away." |
Setting Status to Active is refused while the product cannot be priced (no price, or dimensions without price rules). The Status card then shows "Not published: {reason}" and the product keeps its old status.
Units and decimal quantities
The Unit decides how quantities of the product are counted everywhere: in carts, on orders, on quotes and in stock. A Piece product is sold in whole numbers; every other unit accepts decimals with up to 3 places, so a customer can buy 0.75 kg and a quote can carry 64.5 m². The line total is the unit price times the quantity, rounded to the cent. Quantity fields in the dashboard accept a decimal comma as well as a dot (0,75 or 0.75).
Bulk pricing
The Bulk pricing section (Product only) sets "Fixed prices and quantity discounts per customer group." Each row has:
| Field | Description |
|---|---|
| Group | Everyone, or one of your contact groups (managed under Contacts). |
| Variant | All variants or a specific active variant. This column only appears when the product has active variants. A variant you deactivated stays visible in a row that still uses it, marked "(inactive)". |
| Min qty | The minimum quantity this price applies from. Must be a whole number of 1 or more. |
| Price | The price for that group and quantity. |
Use Add price to add rows and the trash icon to remove them, then save with the header Save. Saving replaces the entire set of group prices at once. You cannot save a row for everyone at quantity 1: "A price for everyone at quantity 1 is the base price, set it on the product itself." With no rows, the section shows "No group prices yet. Base product pricing applies to everyone."
Quote
With the Sales module enabled, the Quote section sets the product's Purchasability: Direct checkout only (default), Quote only, or Direct checkout and quote. The quote options only take effect while quote requests are switched on under Sales → Settings → Quotes; until then the section shows "Quote requests are switched off under Sales → Settings → Quotes, so this product still checks out directly until you enable them." Without the Sales module the section is not shown and every product checks out directly.
Search and social
The Search & social section (collapsed at first) controls how the product appears in search results and when it is shared:
| Field | Description |
|---|---|
| Meta title | The title search engines show. Empty means the product name. A counter shows the length against 60 characters. |
| Meta description | The snippet under the title. Empty means the start of the description. A counter shows the length against 160 characters. |
| URL handle | The product's storefront address (/products/{handle}). "Changing the address sends visitors from the old one to the new one." |
| Google preview | A live preview of the search result: the address, the title and the description, cut where Google would cut them. |
| Social image | The image shown when the product is shared: Primary image (default) or any of the product's images. "Shown when the product is shared. Add images under Media to pick another one." |
When you change the URL handle and save, the old address keeps working: a storefront that uses the redirect lookup sends visitors on to the new one. The same goes for a category's slug. See the SEO API reference for how a storefront uses it.
Product preview
A floating Product preview button (bottom-right) opens a storefront-style sheet: the image carousel (or "No images"), name, computed price, a quantity stepper, and an Add to cart button showing the line total. For a Made to measure product it renders the live configurator and fetches a server price quote with a line-item breakdown as you change inputs.
The preview is display-only for you as a merchant: its Add to cart button does nothing, and the server always recomputes prices at cart time on the real storefront. For how your storefront consumes products, see the API reference.