Install a theme and load its demo content
A theme is the storefront: what the customer sees. The panel and the store run separately, so changing theme does not touch your products or your orders.
Installing it
Section titled “Installing it”Copy the theme folder into themes/. The panel reads that folder off disk: as
soon as it has a valid theme.json, it appears in Panel → Themes.
If your themes live somewhere else, say so with THEMES_DIR in the .env.
Each theme declares in its theme.json which stack it uses (Next, Astro, Vite,
Nuxt…), what pages it brings and what environment variables it needs. That is the
theme contract, and it is what lets themes of
different technologies live in the same catalogue.
Loading its demo content
Section titled “Loading its demo content”A freshly installed theme looks empty, and you cannot judge it that way. Almost all of them ship demo content: categories and products with a photo and a price.
In Panel → Themes, the package button shows you what it brings before you put it in — how many products, how many categories, and whether the content is valid. A button that just said “install demo” would force you to accept blind.
On import:
- It deletes nothing. Whatever you already had stays.
- It is idempotent. If a product already exists with the same identifier, it is updated rather than duplicated. You can import twice without worry.
- It goes to a sales channel of the theme’s own. This is the important part: if you have the demo content of two themes in the same store, each storefront sees only its own. Without it, the bakery would show the growshop’s products.
When it finishes it gives you the theme’s publishable key. Put it in its
.env (COMMERCE_KEY, or VITE_… / NEXT_PUBLIC_… depending on the stack):
without that key its site sees no products, and the error does not say a key
is missing.
Activating it
Section titled “Activating it”Activate switches the panel over to that theme’s store and loads its demo content. If the theme has its own store declared, it is another backend with its own users: it may ask you for that store’s password.
Activating does not change the public site. The storefront is served by a different application, on a different port, and is none the wiser. To change what the customer sees, that theme has to be deployed.
Customising it
Section titled “Customising it”Customise opens the editor: colours, fonts, copy and home-page blocks,
according to what the theme declares in its settings.schema.json. It is saved
per store, so updating the theme does not overwrite your configuration.
When something is off
Section titled “When something is off”“0 products” on the site → the publishable key is missing from the theme’s
.env, or does not match the channel where the content is.
The storefront shows products that are not its own → they are all in the same sales channel. Reimport the demo content: it places them in the theme’s channel.
“This theme brings no demo content” → it has no demo/contenido.json. Not an
error, it just does not ship one.
See also
Section titled “See also”- Theme contract — what a theme must meet
- Theme security — the risk in installing a third-party one