Litestore · Operator guide

Products

Learn how product options generate the variant grid, what the publish gate requires, and how add-on and related links work.

A product carries its options, the variants generated from them, per-variant price and stock, media, categories and tags, SEO fields, and its links to other products.

The options you choose decide the variant grid. That is why a size × colour product stays one record instead of becoming several near-duplicates that have to be edited in step with each other.

Almost everything below the options follows from them, so the option choice is the one to get right first.

Options generate the variants

Pick the options and their values on the product, and the variant grid follows.

Change the values and the grid is rewritten to match. There is one path that writes variants, and it is the same whether you are creating the product or editing it later — so an edit cannot leave the grid in a state that a fresh product could not reach.

Price and stock per variant

Each variant carries its own:

  • SKU
  • stock
  • list price
  • sale price
  • cost

A sale price can also have an optional start and end date.

A variant left without a list price gets no price row at all. That is why an unpriced variant can only exist on an unpublished product — publishing requires a price on every variant.

What happens at zero

Stock behaviour is set per variant, not per product.

You can turn stock tracking off for that variant entirely.

Or you can leave tracking on and choose what a sold-out variant does:

  • block add-to-cart and checkout
  • stay buyable as a back-order and ship on restock

Before you can publish

Products have three statuses:

Draft
Published
Archived

There is no scheduled publishing for a product. Moving one to Published requires five rules to pass:

  1. a category
  2. at least one image
  3. at least one variant
  4. no two variants sharing an option combination
  5. a price on every variant

The checklist on the product page lists these same rules, so it cannot read complete while publishing is blocked.

SKUs and slugs cannot be duplicated

Your store will not accept two products sharing an SKU or a slug, capitalisation included, so duplicates can't be created by accident. SKUs are derived from the slug and the option values; a derived SKU that is already taken is regenerated rather than failing the save.

Renaming a product

Old slugs are kept and redirect to the current one.

A rename therefore does not break a link a customer has already saved or shared.

An add-on is a paid product offered alongside this one — installation, insurance, gift wrap. It prices, attaches and ships as its own line in the cart.

A related link is display-only. The label you give it is its meaning: "Wear it with", "In this kit".

Either kind can be added three ways:

  • by hand
  • generated with AI
  • from customer activity

There is no separate cross-sell or upsell type. The labelled related link replaced them.

Media

Media is held per product and per variant, so a colour that looks nothing like the others does not have to share the product's photographs.

The records behind a product

One product record carries the options, the variants generated from them, each variant's price row, and its links to other products:

Product
ProductVariant
VariantPrice
ProductRelationship

Building a product

  1. Create the product and choose its options and values.
  2. Open the variants table and set SKU, price, and stock on each row.
  3. Add media, a category, tags, SEO fields and product links, then publish once the five rules pass.

When you get to the links, the choice between the two kinds is about money rather than presentation.

Use an add-on when the second product is actually bought — it needs its own price, its own line in the cart, and its own shipment.

Use a related link when you only want to point at something, and let the label carry the meaning.

The order of the steps matters more than it looks:

Every variant, price, SKU and publish check hangs off the options you picked first, so changing the options late rewrites the grid underneath everything you have set on it.

On this page