Skip to main content
catalog.liquid tags are grouped by default vs optional usage.
  • Default components are already present in the shipped catalog.liquid template.
  • Optional components can be added or used to replace parts of the default layout.
Shared page components are documented on Shared page components: {% legacy_navbar %}.

Default components

{% additions_filter_aggregator %}

{% additions_search %}

{% additions_shopify_filters %}

{% additions_turbo_frame %} ... {% endadditions_turbo_frame %}

Block tag for catalog results frame.

{% additions_collection_filter_pills %}

{% additions_form_wrapper %} ... {% endadditions_form_wrapper %}

Block tag that wraps selected products in confirmation form.

{% additions_product_card %}

Set show_info_icon: true to show an information button on each product image in both the add-products and replacement catalogs. In replacement catalogs, customers can also inspect the product they are replacing. Opening product information does not select a replacement or change its quantity. The button dispatches ssc:product-info:open on window. Your custom catalog template supplies the information panel and handles this event to display the dish description, ingredients, or other product details. Enabling the icon alone does not provide that content. If your template already handles this event for add-products cards, the same handler works for replacement cards. The event’s detail contains productId (the Firmhouse product ID), shopifyProductId, and shopifyVariantId for the selected variant. Shopify IDs are null when unavailable. Set info_open_event to use a different event name, and make sure your template listens for that name. Set hide_variant_selector: true to render grouped products as a single card without variant pills or a dropdown, so customers add the product without choosing a variant. This applies to both the add-products and replacement catalogs, and it takes precedence over use_variant_pills. Available variants are ordered by the customer’s subscription price, cheapest first, including country overrides, Shopify pricing, and plan discounts, with the product ID breaking price ties. For a product without an existing selection, the first variant is selected by default in both catalogs. Existing customer selections are preserved. In replacement catalogs, set hide_price: true to hide the card price. The default catalog template reads this from the replacement flow when the dashboard listing uses hide_replacement_price: true.

{% additions_lazy_page_frame %}

Loads the next page of products when the bottom of the catalog scrolls into view. Place it directly after the product grid, as a sibling of the grid element, so each page renders as its own full-width responsive grid.
The tag renders nothing when there are no more products.

{% additions_empty_state %}

{% additions_action_bar %}

Sticky bottom action bar for confirming product changes.

Optional components

{% additions_shopify_filter_list %}

Used mainly when composing a custom sidebar or filter layout.

{% additions_sidebar_pane %} ... {% endadditions_sidebar_pane %}

Block tag for custom side panel layouts.