Skip to main content

Products & Catalog

How themes load and render the public catalog.

Data sources

Public HTTP (examples):
  • /api/stores/by-subdomain/{subdomain}/products
  • Storefront bootstrap payload used by Vite themes
Do not use /api/dashboard/* from a theme.

Product shape (theme-facing)

Aligned with MarktProduct / StoreProduct:

Groups


Nunjucks patterns

All products

Use minPrice / maxPrice on cards; variants[].price on the product page.

Catalog with groups

More: Shortcodes & Tags.

Vite patterns

Link cards to /product/${product.slug}.

Add to cart & buy

Never invent a payment form that posts card numbers to your theme origin.

Visibility & empty states

  • private never appears in the public payload — do not invent drafts
  • on-hold does appear — show “On hold”, disable Add to cart / Buy now
  • Empty catalog → friendly empty UI
  • Loading → skeletons on Vite

See also