Next Commerce
ThemesGuides

Custom Product Templates

Products can have very different design requirements. Assign a named custom product template when a product needs a purpose-built layout.

Product Template Location

Store product templates under templates/catalogue:

Product Templates Location
templates/catalogue/
  product.html
  product.subscription.html
  product.bundle.html

The segment between product. and .html is the product's template key. A product URL slug does not select the template.

Build a Standalone Product Document

Create the exact file for the key you plan to assign:

Custom Product Template Naming
templates/catalogue/product.<template-key>.html

Do not extend templates/catalogue/product.html from a product.<template-key>.html file. Runtime template resolution already treats the generic template as a fallback; inheriting from it can hide selection mistakes and couples the custom design to a separate page implementation.

A custom product template may be a complete document or extend the shared layouts/base.html shell. Keep independently replaceable global surfaces in named template blocks.

Example Custom Product Template
{% extends "layouts/base.html" %}

{% block title %}{{ product.title }}{% endblock title %}

{% block content %}
    <article data-product-id="{{ product.id }}">
        <h1>{{ product.title }}</h1>
        {# Render the complete custom product experience here. #}
    </article>
{% endblock content %}

Validate and upload the exact file before assigning it:

ntk validate --server templates/catalogue/product.subscription.html
ntk push templates/catalogue/product.subscription.html --json --no-progress

Assign and Verify the Template

On the product, set Product Template to the template key—for example, subscription. You can use the dashboard or the Admin API. Then open the product route in a preview session with skip_cache=1.

On the network domain, confirm X-Theme-Template: templates/catalogue/product.subscription.html. If the header reports templates/catalogue/product.html, the platform fell back to the generic template; check the product's template field, filename, validation result, and upload outcome.

Preview selection is pinned in the preview_theme cookie. Use the storefront preview indicator's Exit preview action or /?deactivate-theme=true when you finish; opening a plain URL does not deactivate the preview.

On this page