catalog.liquid tags are grouped by default vs optional usage.
- Default components are already present in the shipped
catalog.liquidtemplate. - Optional components can be added or used to replace parts of the default layout.
{% 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 %}
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.