Skip to main content
These functions load your brand’s product catalog and shipping configuration. They are available in backend templates (server-rendered {{ }} and @foreach, etc.). All data is scoped to the current brand automatically—the page’s brand context supplies the brand id, and the platform never mixes another brand’s products or profiles into your page.
If the brand context is missing or invalid, these functions return empty results or null (they do not fall back to a global list). Category joins also require category rows to belong to the same brand as the product.

Product lookups

Fields you can use on a product

Typical fields include code, title, checkout_title, slug, price, retail_price, currency, image, description, classification, tax_category (tax provider code), tax_exempt, subscription fields when applicable, downloadable files, and merchandising categories:
  • title — The customer-facing display title: uses checkout_title when set, otherwise the internal title.
  • slug — SEO-friendly URL slug. Auto-generated from checkout_title/title if not manually set in the SEO tab. Used with wildcard routes for clean product URLs (e.g. {{ product | productUrl:'shop/product' }}/shop/product/my-product-123).
  • product_category_id / product_subcategory_id — ids in your product category tree (configured in the Products area).
  • category_name / subcategory_name — display names for those ids (when set on the product).
  • product_files — downloadable files attached to the product. Each row includes purpose (digital or bonus), title, description, image, file, kind (one of 'audio', 'video', 'document', 'image', 'archive', 'file' — derived from extension/mime so you don’t have to classify yourself), is_primary, sort_order, and metadata (mime_type, size, checksum, extension).
  • bonus_files / digital_files — purpose-filtered views of product_files.
  • primary_download_url — convenience URL for the product’s first primary downloadable file.
Use ProductDownloads(product) when you want a single rolled-up array of everything the customer can download — digital_files then bonus_files then anything else in product_files, with the legacy digital_file / bonus_file scalars filled in only when no file rows exist, deduplicated by URL. Each entry: { url, title, kind, purpose, extension, mime_type, size, is_primary, sort_order }. Use GetProducts with category_id to limit to products in that category or subcategory row (matches either primary or subcategory assignment). Use subcategory_id to require a specific subcategory id on the product.

Display helpers

Product categories

Combine with @foreach to build category navigation or filter UI on landing pages.

Shipping profiles

Shipping profiles define rates and rules used at checkout. These functions help you build shipping policy or FAQ pages.

tax_categories on a shipping profile

Shipping profiles do not store a tax code themselves. tax_categories is the list of distinct tax_category values from products that use that shipping profile—useful for disclosure text (“products shipped under this method may use tax codes …”), not for live tax calculation (checkout handles that).

Other useful fields

  • name, description
  • is_default, allow_select_on_checkout
  • product_stats_loadedfalse on list responses unless you set include_product_stats: true

Examples

List products in a category (replace 3 with a real category id from your store):
Category menu (tree):
List a product’s downloads with type-aware icons (no URL parsing required):
Shipping methods (names only, fast):

See also