Bolder — Liquid Reference

Auto-generated on 2026-07-07 · 103 drops · 60 filters · 43 tags

Introduction

Bolder storefronts are rendered using Liquid, a safe and expressive templating language. Your theme is a collection of .html template files that Liquid processes on each request, injecting live store data — products, collections, cart contents, customer info — into your markup.

The system is multi-tenant: each store is served under its own subdomain (yourstore.bolder.net or a custom domain), and the rendering pipeline is isolated per shop. Every template has access to a set of Liquid Drops — Ruby objects exposed to the template layer — which provide the store's data in a safe, read-only way.

You can customise themes directly from the Bolder admin editor, or locally using the Bolder CLI, which lets you edit files in your preferred code editor and sync changes in real time.

How rendering works

When a visitor loads a page, Bolder:

  1. Resolves the shop from the subdomain or custom domain
  2. Determines the route (home, product, cart, etc.) and picks the matching template
  3. Wraps the template inside layout.html
  4. Populates Liquid drops (shop, product, collections, cart…)
  5. Renders the final HTML and sends it to the browser

There is no build step — Liquid renders server-side on every request. Assets (CSS, JS, images) are uploaded to the theme and served from Bolder's CDN via the asset_url filter.


Theme Structure

A Bolder theme is a set of Liquid template files. Each file is rendered for a specific route or purpose.

Core templates

layout.html
Master wrapper. All other templates are injected here via {% content_for_layout %}.
home.html
Shop homepage.
products.html
Product listing / catalog.
product.html
Single product page.
cart.html
Shopping cart.
page.html
Static CMS page.
blog.html
Blog post listing.
post.html
Individual blog post.

Custom HTML blocks

FileInserted location
custom_head.htmlInside <head>
custom.cssExtra CSS after theme stylesheet
before_header.htmlBefore the shop header
after_header.htmlAfter the shop header
custom_foot.htmlBefore closing </body>

Liquid Basics

Liquid has three building blocks: output tags, logic tags, and filters.

Output — {{ }}

{{ shop.name }}
{{ product.price | money }}
{{ 'Hello, ' | append: customer.name }}

Logic tags — {% %}

{% if product.available %}
  <button>Add to cart</button>
{% else %}
  <span>Out of stock</span>
{% endif %}

{% for variant in product.variants %}
  <option value="{{ variant.id }}">{{ variant.title }}</option>
{% endfor %}

Global variables

VariableDescription
shopThe current store
cartThe visitor's current shopping cart
customerThe logged-in customer (nil if not logged in)
collectionsAll product collections
productsAll products (paginated)
blogThe blog object

Image Resizing

Bolder automatically generates resized versions of product images. Reference preset sizes or generate custom crops on the fly.

Preset sizes

NameDimensions
thumbnail75 × 75 px
small240 × 180 px
medium500 × 375 px
large800 × 600 px

Custom resize

{{ product.images.first | resize: '300x300' }}
{{ product.images.first | resize: '600x400!' }}
{{ product.images.first | resize: '300x300#' }}
Geometry flags: no flag = fit  ·  ! = force exact  ·  # = crop to fill  ·  > = only shrink

Developing with the CLI

The Bolder CLI lets you edit theme files locally and sync changes to your store in real time.

gem install bolder_cli
bolder themes clone
bolder themes watch
CommandWhat it does
bolder themes compareDiff local vs remote
bolder themes pullDownload remote changes
bolder themes pushUpload all local files
bolder themes watchAuto-upload on save
bolder themes publishPublish dev theme to production

Liquid Drops

Ruby objects exposed to Liquid templates. Click a chip to jump to its full description below the card.

AddonDrop

inherits Liquid

Represents an installed app or addon for the shop. Accessible via `shop.addons`. Use `key` to identify the addon and conditionally render its widgets.

methodskey
Methods
keyReturns [String] The addon's key identifier.

AddonsDrop

inherits Liquid

Methods
has_console_loginReturns [Boolean] whether the account has console login capability.
liquid_method_missing(addon_key)addons.subscription_products Returns [AddonDrop, nil] the addon drop for the given key.

AddressDrop

inherits Liquid

Represents a postal address. Exposed on branch locations, customer records, and order shipments. Provides street, locality, region, and country data along with formatted display strings.

Methods
as_json(opts = {})Returns [Hash] A hash representation of the address for JSON serialization.
idReturns [Integer] The address identifier.
place_idReturns [String, nil] The Google Places identifier for this address.
latlongReturns [Array, nil] The [latitude, longitude] array, or nil if not available.
has_coordinatesReturns true if the address has GPS coordinates attached.
coordinatesReturns the [latitude, longitude] pair, or nil if not geocoded.
nameReturns the label/contact name for this address (e.g. "Home", "Office").
streetReturns the full street line (street_1 + street_2 combined).
street_1Returns the first street line (street number and name).
street_2Returns the second street line (apartment, floor, etc.), or nil.
locality_nameReturns the city or locality name.
locality_idReturns the locality/city identifier code.
region_nameReturns the region/state/province name.
region_codeReturns the region/state ISO code.
country_nameReturns the country name.
country_codeReturns the ISO 3166-1 alpha-2 country code (e.g. "CL", "AR", "MX").
postal_codeReturns the postal/ZIP code.
shortestReturns the minimal address string (city and region only).
shortReturns a short address string (street, city, region — no country).
fullReturns the full address string excluding country.
to_sReturns the full address string (same as `full`). alias for `full`

AggregatesDrop

inherits Liquid

Methods
collectionsReturns [TermCollectionDrop, nil] Collection facets for the search results.
product_typesReturns [TermCollectionDrop, nil] Product type facets for the search results.
vendorsReturns [TermCollectionDrop, nil] Vendor facets for the search results.
tagsReturns [TermCollectionDrop, nil] Tag facets for the search results.
attributesReturns [Array<KeyValuesDrop>] Attribute facets grouped by key for the search results.

AssetDrop

inherits ModelDrop · ImageAspectRatio

Represents a product image or file asset. Provides URL helpers for all standard image sizes and metadata about the file.

Attributes
id
title
file_name
extension
description
seller_id
updated_on
image_width
image_height
Methods
selfReturns the default image for the given context, or the default placeholder.
to_sReturns the generated resize URL string.
webpReturns the resized URL converted to WebP format.
typeReturns the MIME content type of the file (e.g. "image/jpeg").
sizeReturns the file size in bytes.
is_imageReturns true if the asset is an image.
is_videoReturns true if the asset is a video.
is_fileReturns true if the asset is neither an image nor a video (e.g. PDF, font).
is_default_imageReturns true if no real image has been uploaded (placeholder is shown).
is_landscape_imageReturns true if the image width is greater than its height.
is_portrait_imageReturns true if the image height is greater than its width.
is_square_imageReturns true if the image width and height are equal.
human_sizeReturns a human-readable file size string (e.g. "240 KB" or "1 MB").
has_variantsReturns true if the asset has variants.
variantsReturns a VariantsDrop containing all variants for this asset.
available_variantsReturns a VariantsDrop containing only available online variants.
variant_idsReturns an array of variant IDs for this asset.
available_variant_idsReturns an array of available online variant IDs.
has_hotspotsReturns true if the asset has hotspots.
hotspots_configReturns the hotspots configuration hash, or nil if no hotspots exist.
thumbnailhttps://o.btcdn.co/29/original/151073-bannercarteras.png Returns the thumbnail-size image URL (approx. 100×100 px crop).
mediumReturns the medium-size image URL (approx. 480×480 px).
smallReturns the small-size image URL (approx. 240×240 px).
largeReturns the large-size image URL (approx. 800×800 px).
originalReturns the original full-resolution image URL.
base_nameReturns the file name without its extension.
actual_file_nameReturns the actual file name with prefix ID.
urlReturns the original image URL. Useful as a generic accessor for non-image assets. This alias makes sense for non-image assets
protected_path(size = 'original')Returns the protected path URL for the given size.
resizerReturns a Resizer instance for this asset, or nil if it's a default image.
as_json(opts = {})Returns a hash representation of the asset for JSON serialization.
source_variants

BlogDrop

inherits ModelCollectionDrop

Represents the blog section. Exposed as `blog` in blog templates. Provides access to paginated posts, calendar archives, and category tags. Can be filtered by date (year/month/day) or tag.

Attributes
month_num
year
post_count
Methods
dateReturns [Time, False] the parsed date, or false if no year/month.
yearReturns [Integer, Nil] the year from params.
monthReturns [Integer, Nil] the month from params.
month_nameReturns [String] localized month name.
dayReturns [Integer, Nil] the day from params.
postsReturns [PostsDrop] the posts collection.
each(&block)Make these drops iterable Returns [Enumerator] an enumerator over posts.
calendarReturns [Array<CalendarItemDrop>] calendar items for archives.
categoriesReturns [BlogTagsDrop] available post categories.

BlogTagDrop

inherits ModelDrop

Attributes
name
slug
Methods
titleReturns [String] the tag name (for consistency with other drops).
post_countReturns [Integer] number of posts in this tag.

BlogTagsDrop

inherits ModelCollectionDrop

Methods
slugsReturns [Array<String>] the slugs for all blog tags.
include?(obj)Returns [Boolean] whether the given object is included in the tags.
init_drop(model)Returns [BlogTagDrop, nil] a new BlogTagDrop instance for the model.

BranchDrop

inherits ModelDrop

Represents a physical store location (branch). Exposed as items in `shop.branches`, `shop.pickup_branches`, and `shop.shipping_branches`. Provides address, contact details, and fulfilment (pickup/shipping) availability.

Attributes
id
name
type
stock_location_id
manager_name
email_address
Methods
imagesReturns all images associated with this branch as an AssetsDrop.
main_imageReturns the primary cover image for this branch as an AssetDrop, or nil.
has_main_imageReturns true if this branch has a cover image set.
addressReturns the branch's physical address as an AddressDrop.
phone_numberReturns the primary contact phone number (alias for primary_number).
primary_numberReturns the primary phone number as a ContactNumberDrop, or nil if not set.
secondary_numberReturns the secondary phone number as a ContactNumberDrop, or nil if not set.
shipping_pausedReturns true if shipping from this branch is temporarily suspended.
provides_shippingReturns true if this branch currently offers home delivery for the active customer.
pickup_pausedReturns true if local pickup at this branch is temporarily suspended.
provides_pickupReturns true if this branch currently allows in-store pickup for the active customer.
has_delivery_windowsReturns true if this branch uses delivery time windows for scheduling.
shipping_scheduleAlias for delivery_schedule.
delivery_scheduleReturns the branch's delivery window schedule as a DeliveryWindowScheduleDrop, or nil.
has_available_timesReturns true if the branch has configured opening hours.
open_hoursReturns formatted opening hours as an HTML string (days grouped, lines separated by `<br />`).
as_json(opts = {})Returns a Hash representation of this branch for JSON serialization.

CartDrop

inherits Liquid

Represents the current shopping cart. Exposed as `cart` in all Liquid templates. Use it to display item counts, totals, and line items.

Methods
to_sReturns the cart code as a string representation.
as_jsonReturns an empty hash for JSON serialization.
codeReturns the unique identifier for this cart session.
has_overbought_itemsReturns true if any line item quantity exceeds available stock.
unitsReturns the total number of individual units across all line items.
overbought_itemsReturns line items whose requested quantity exceeds available stock.
has_removed_itemsReturns true if the cart contains items that were automatically removed (e.g. went out of stock).
removed_itemsItems that were removed from the cart since the last load (e.g. due to stock changes).
line_itemsReturns an array of line item hashes, each with product title, variant, quantity, and price data.
formatted_totalReturns the cart grand total as a pre-formatted string including the currency symbol.
formatted_net_totalReturns the cart net total (excluding taxes) as a pre-formatted string.
promotionReturns the active promotion applied to the cart, if any.
weightReturns the total weight of all items in the cart, in grams.
discountsReturns an array of discount objects applied to the cart.
discount_totalReturns the total monetary value of all discounts applied to the cart, in cents.

CartRequirementsDrop

inherits Liquid

methodsto_s list
Methods
to_sReturns [String] JSON representation of the requirements list.
listReturns [Array<Hash>] List of requirements as validation entries.

CollectionDrop

inherits ModelWithServiceDrop · WithShopTags · WithRelations · ResourceImages

Represents a product collection (category). Exposed as `collection` on collection pages and as items in `shop.collections` or `product.collections`. Use it to list the collection's products, images, and metadata.

Attributes
id
slug
title
body
num_product_types
Translatable fields
title
body
Methods
typeReturns [String] the type of this drop.
to_paramReturns [String] the URL-safe slug for this collection.
nameReturns [String] the collection name (alias for title).
translated_nameReturns [String] the translated collection name.
descriptionReturns the collection's body text (alias for the `body` attribute).
translated_descriptionReturns [String] the translated collection's description (alias for translated_body).
imagesReturns all images associated with this collection as an AssetsDrop.
product_typesReturns the product types (sub-categories) that have products in this collection.
vendorsReturns the vendors that have products in this collection.
descriptionReturns the collection's body text (alias for the `body` attribute).
first_productReturns the first product in this collection, or nil if empty.
has_productsReturns true if this collection has at least one product.
sizeReturns the total number of products in this collection.
productsReturns all products in this collection as a ProductsDrop, respecting manual sort order.
available_productsReturns only in-stock products in this collection (excludes out-of-stock unless unlimited-stock is set). only products in stock or available_if_no_stock: true
has_attributesReturns [Boolean] true if the collection has any custom attributes.
meta_descriptionReturns [String, nil] the meta description for this collection.
meta_fieldsReturns [MetaFieldsDrop] the custom meta fields for this collection.
product_attributesReturns [ProductAttributesDrop] the product attributes for this collection.
filterable_product_attributesReturns [ProductAttributesDrop] the filterable product attributes for this collection.
variant_optionsProductAttributesDrop has same behaviour we want for variant_options
promotionsReturns [PromotionsDrop] the promotions available for this collection.
each(&block)Make these drops iterable
ids_to_show_firstthese two methods are called from renderers, so need to be public
products_order_for_esmanual order doesn't work in ES, so only pass order if different
as_jsonReturns [Hash] a JSON representation of this collection.

ColorMapDrop

inherits Liquid

Methods
each(&block)Returns [void] Yields each color mapping object to the block.
as_json(opts = {})Returns [Hash] A hash suitable for JSON serialization with color names as keys and hex values.

ContactGroupDrop

inherits Liquid

Methods
to_sReturns the group name as a string representation. Returns the group name as a string representation.
idReturns the unique identifier for this contact group. Returns the unique identifier for this contact group.
nameReturns the name of the contact group. Returns the name of the contact group.
provides_shippingReturns true if this group provides shipping services. Returns true if this group provides shipping services.
provides_pickupReturns true if this group provides pickup services. Returns true if this group provides pickup services.
shipping_branchesReturns an array of shipping branches available for this group. Returns an array of shipping branches available for this group.
pickup_branchesReturns an array of pickup branches available for this group. Returns an array of pickup branches available for this group.
price_list_idReturns the price list ID associated with this contact group.

ContactNumberDrop

inherits Liquid

aliasestrim → strip
Methods
to_sReturns the contact number as a string. Returns the contact number as a string.
stripReturns the contact number with non-numeric characters removed. Returns the contact number with non-numeric characters removed.
typeReturns the type of contact number (e.g., 'whatsapp', 'telegram', or nil). Returns the type of contact number (e.g., 'whatsapp', 'telegram', or nil).
urlReturns a clickable URL for the contact number (tel:, wa.me, or t.me). Returns a clickable URL for the contact number (tel:, wa.me, or t.me).
formatReturns a human-readable formatted contact number with delimiters.

CustomerDrop

inherits Liquid

Represents the currently logged-in customer. Exposed as `customer` in all templates. Check `customer.is_logged_in` before accessing other properties. Nil if no customer session is active.

Methods
nameAlias for full_name.
full_nameReturns the customer's full name.
first_nameReturns only the customer's first name.
last_nameReturns the customer's last name (everything after the first word).
emailReturns the customer's email address.
companyReturns the customer's company name, or nil if not set.
company_id_numberReturns the customer's tax ID or company ID number, or nil if not set.
last_logged_onReturns the date and time the customer last logged in.
logged_inAlias for is_logged_in.
is_logged_inReturns true if the customer currently has an active session.
tagsReturns the customer's assigned tags as a TagsDrop (used for segmentation and access control).
tag_listReturns an array of tag strings associated with the customer.
has_tagsReturns true if the customer has any tags assigned.
has_price_listReturns true if the customer is assigned to a specific price list.
has_contact_groupReturns true if the customer belongs to a contact group.
price_listReturns the customer's assigned price list as a PriceListDrop, or nil.
contact_groupReturns the customer's contact group as a ContactGroupDrop, or nil.
price_list_idReturns the customer's price list ID, or nil if not assigned.
contact_group_idReturns the customer's contact group ID, or nil if not assigned.
membershipReturns the customer's membership as a CustomerMembershipDrop, or nil.
has_membershipReturns true if the customer has an active membership.
has_subscriptionsReturns true if the customer has any subscriptions.
subscriptionsReturns the customer's subscriptions as a CustomerSubscriptionsDrop, or nil.
last_ordered_productsReturns the customer's recently ordered products as a ProductsDrop, or nil.
has_favorite_productsReturns true if the customer has any favorite products.
favorite_productsReturns the customer's favorite products as a ProductsDrop, or nil.
salespersonReturns the customer's assigned salesperson as a SalespersonDrop, or nil.
wallet_pointsReturns the customer's wallet points balance.
promotionsReturns the customer's available promotions as a PromotionsDrop, or nil.
cart_requirementsReturns the cart requirements list for the customer's contact group, or nil.

CustomerMembershipDrop

inherits ModelDrop

Represents the logged-in customer's active membership plan. Accessed via `customer.membership`. Use it to show plan-specific content or gating.

Attributes
id
plan_id
plan_name
Methods
to_sReturns [String] The plan name.

DateTimeDrop

inherits Liquid

Wraps a Ruby Time/DateTime for use in Liquid templates. Returned by date attributes such as `product.updated_on`, `post.published_on`, `promotion.starts_at`, etc. Supports Liquid's built-in `date` filter via `strftime`.

Methods
to_sReturns the ISO 8601 string representation (default string output).
wdayReturns the day of week as an integer (0 = Sunday, 6 = Saturday).
dayReturns the day of the month (1–31).
monthReturns the month number (1–12).
yearReturns the four-digit year.
strftime(str)Formats the date/time using a strftime-compatible format string, respecting locale. Also invoked by Liquid's built-in `date` filter.
dateReturns a human-readable localized date string (e.g. "14 de abril, 2026").
timeReturns the time portion as a string (e.g. "14:30 PM").
unixReturns the Unix timestamp (seconds since epoch) as an integer.
to_iReturns the Unix timestamp as an integer.
iso8601Returns the ISO 8601 formatted date/time string.

DynamicLinkDrop

inherits LinkDrop

Methods
titleReturns [String] The name of the link
slugReturns [String] The parameterized slug of the name
to_paramReturns [String] The slug (alias for to_param)
has_submenuReturns [Boolean] Whether this link has a submenu (always false for dynamic links)
submenuReturns [nil] No submenu for dynamic links
linkableReturns [Object, nil] The linkable object if any
liquid_method_missing(meth)Returns [nil] Always returns nil for undefined methods
linkable_urlReturns [String] The path for the link

DynamicMenuDrop

inherits MenuDrop

Methods
titleReturns [String] The name of the menu
slugReturns [String] The parameterized slug of the name
to_paramReturns [String] The slug (alias for to_param)
has_submenusReturns [Boolean] Whether this menu has submenus (always false)
each(&block)Returns [void] Yields each child link in the submenu

FormDrop

inherits SectionDrop

Represents a contact or custom form page. Inherits page properties from SectionDrop. Exposes field groups (contact, company, custom), validation errors, and the form's POST endpoint. Use `sent` to check if the form was just submitted successfully.

Attributes
referrer
Translatable fields
title
body
success_message
Methods
typeReturns the type of drop, always 'form'.
post_pathReturns the relative POST path for submitting this form (e.g. "/forms/contact").
post_urlReturns the absolute POST URL for submitting this form.
imagesReturns an empty array (forms do not have images).
main_imageReturns nil (forms do not have cover images).
has_main_imageReturns false (forms do not have cover images).
relationsReturns an empty array (forms do not have relations).
has_relationsReturns false (forms do not have relations).
has_errorsReturns true if the form has validation errors (e.g. after a failed submission).
sentReturns false on the initial form page; overridden to true in SentFormDrop after successful submission.
is_multipartReturns true if the form contains a file-upload field, requiring multipart encoding.
contact_fieldsReturns the standard contact fields (name, email, phone, message) as an array of FormFieldDrop.
company_fieldsReturns company-specific fields as an array of FormFieldDrop.
custom_fieldsReturns the form's custom fields as an array of FormFieldDrop.
has_address_fieldsReturns true if the form has an address field group.
has_custom_fieldsReturns true if the form has any custom fields.
has_company_fieldsReturns true if the form has any company fields.
errorsReturns the list of validation errors as ErrorDrop objects.
success_messageReturns the localised success message shown after a successful form submission.

FormFieldDrop

inherits Liquid

Represents a single form field within a FormDrop. Renders itself as an HTML input via the `html` method. Field type determines the subclass used: text, email, textarea, select, checkbox, file, etc.

Methods
selfReturns [FormFieldDrop] a new instance of the appropriate field type class.
selfReturns [FormFieldDrop] a new instance of the appropriate field type class.
htmlReturns [String] the HTML representation of the field.
as_json(opts = {})Returns [Hash] a JSON representation of the field.

GalleryDrop

inherits ModelDrop · WithRelations

Represents an image gallery. Iterable — loop over it to access GalleryItemDrop entries. Accessible via page relations or `shop.galleries`.

Attributes
title
slug
Methods
nameReturns [String] the gallery title.
to_sReturns [String] the gallery slug.
itemsReturns [self] self (gallery is iterable).
has_itemsReturns [Boolean] whether gallery has items.
sizeReturns [Integer] number of items in gallery.
firstReturns [GalleryItemDrop, Nil] the first gallery item.
lastReturns [GalleryItemDrop, Nil] the last gallery item.
first_itemReturns [GalleryItemDrop, Nil] the first item (alias for first).
last_itemReturns [GalleryItemDrop, Nil] the last item (alias for last).
to_aReturns [Array<GalleryItemDrop>] gallery items as array.
each(&block)Yields each gallery item.
as_json(opts = {})Returns [Hash] JSON representation of gallery.

GalleryItemDrop

inherits LinkDrop

Methods
imageReturns [AssetDrop, Nil] the gallery item image.
titleReturns [String] image title.
descriptionReturns [String] image description.
meta_fieldsReturns [MetaFieldsDrop] meta fields for this item.
attributesReturns [MetaFieldsDrop] attributes (alias for meta_fields).
as_json(opts = {})Returns [Hash] JSON representation of gallery item.

GiftCardDrop

inherits ProductDrop · NonDeliverableProductMethods · NonStockTrackedProductMethods

Represents a gift card product. Behaves like a ProductDrop but `is_gift_card` returns true and variant-selection methods return nil (gift cards use a custom denomination input instead).

Methods
product_classReturns [String] 'gift_card'.
variants_countReturns [Integer] 0.
is_gift_cardReturns [Boolean] true.
has_multiple_pricesReturns [Boolean] false.

KeyValuesDrop

inherits Liquid

Methods
keyReturns the key string (slugified name). Returns the key string (slugified name).
slugReturns the slug (same as key). Returns the slug (same as key).
nameReturns the name as a string. Returns the name as a string.
typeReturns the type as a string. Returns the type as a string.
valuesReturns the array of values. Returns the array of values.
mappingsReturns the mappings hash.
sizeReturns the number of values. Returns the number of values.
is_booleanReturns true if the values represent a boolean type. Returns true if the values represent a boolean type.
as_json(opts = {})Returns a hash suitable for JSON serialization.

LinkDrop

inherits SectionDrop

Represents a single navigation link. Inherits page properties from SectionDrop and adds URL resolution, external-link detection, and submenu support. Accessed as items within a MenuDrop.

Methods
typeReturns 'link'.
menuReturns the parent menu this link belongs to.
htmlReturns a ready-to-use `<a>` HTML tag for this link. External links include rel="noopener noreferrer" and target="_blank".
urlReturns the fully-qualified URL for this link, including the host.
targetReturns "_blank" if the link should open in a new tab, "_self" otherwise.
pathReturns the path portion of the URL (without host). Returns "" for external links to other domains.
is_externalReturns true if the link points to a different domain than the current storefront.
linkableReturns the Drop representing the linked resource (e.g. CollectionDrop, ProductDrop), or nil for raw URL links.
to_paramReturns the URL-safe slug or identifier for this link.
has_submenuReturns true if this link has a dropdown submenu (static or dynamic).
submenuReturns the submenu as a MenuDrop, or nil if this link has no children.
liquid_method_missing(meth)link.has_product_types link.has_tags link.product_types link.products link.first_product etc... Handles dynamic method calls for linkable associations (e.g. has_products, product_types).
is_usable_as_filterReturns true if this link can be used as a filter (Collection, ProductType, Vendor, or Tag).
linkable_group_nameReturns the pluralized class name of the linkable (e.g. "collections", "product_types").
linkable_typeReturns the type of the linkable (e.g. "Collection", "Product", "URL").
as_json(opts = {})Returns a hash representation of this link for JSON serialization.
child_menuReturns the child menu associated with this link, or nil if none exists.
dynamic_submenuReturns a DynamicMenuDrop if the linkable has a dynamic submenu type, or nil otherwise.
linkable_first(meth)Returns the first item of an association (e.g. first_product) from the linkable.
linkable_has?(meth)Returns true if the linkable responds to the given method and it has any items.
is_http_uri_or_path?(str)Returns true if the string starts with a slash or "http".
linkable_urlReturns the URL string of the linkable, stripped of whitespace.
uri_or_url(&block)Parses the linkable URL and yields the URI to the block, or returns the URL as-is.
path_and_query(uri)Returns the path and query string of the URI, including the path prefix.
current_host?(host)Returns true if the given host matches the current storefront's host.
liquify_linkables(obj)Converts linkable objects to their Liquid drop representations.
liquify_linkable(item)Returns a Liquid drop for the given item (Product, Collection, ProductType, Vendor, or Tag).

LinksDrop

inherits ModelCollectionDrop

Methods
init_drop(model)Returns [LinkDrop] a new drop for the model.

MembershipPlanDrop

inherits ModelDrop · NonDeliverableProductMethods · NonStockTrackedProductMethods · SubscribableDropMethods

Attributes
id
model
description
class_slug
slug
currency_code
Methods
is_blockedReturns [Boolean] Whether the plan is blocked.
is_bundleReturns [Boolean] Always false for membership plans.
is_gift_cardReturns [Boolean] Always false for membership plans.
is_membership_planReturns [Boolean] Always true for membership plans.
has_optionsReturns [Boolean] Always true (plans can't be added from listing pages).
assetsReturns [AssetsDrop] The assets for this plan.
imagesReturns [AssetsDrop] The images for this plan.
variantsReturns [Array] Empty array (no variants for membership plans).
first_assetReturns [AssetDrop, nil] The first asset.
first_imageReturns [AssetDrop, nil] The first image.
first_fileReturns [FileDrop, nil] The first file.
vendorReturns [VendorDrop, nil] The vendor for this plan.
product_typeReturns [ProductTypeDrop, nil] The product type.
google_categoryReturns [nil] Always nil for membership plans.
has_tagsReturns [Boolean] Always false.
has_attributesReturns [Boolean] Always false.
to_sReturns [String] The model name.
updated_onReturns [Date] The updated timestamp.
meta_fieldsReturns [MetaFieldsDrop] Custom meta fields.
attributesalias_method macro does not work because it would have to be declared in every subclass Returns [MetaFieldsDrop] Alias for meta_fields.
membership_feesReturns [Array<SubscriptionFeeDrop>] Membership fees.
urlReturns [String] The URL path to the plans page.
pathReturns [String] The path to the plans page.
price_includes_taxReturns [Boolean] Always true.
has_sale_priceReturns [Boolean] Always false.
has_volume_discountReturns [Boolean] Always false.
has_multiple_pricesReturns [Boolean] Whether there are multiple prices.
priceReturns [MoneyDrop] The price (alias for regular_price).
regular_priceReturns [MoneyDrop] The regular price.

MenuDrop

inherits ModelDrop · WithRelations

Represents a navigation menu containing an ordered list of links. Accessible via `shop.menus` or the `{% menu %}` tag. Iterate directly over a MenuDrop to loop through its links.

Attributes
title
slug
Methods
nameReturns [String] the menu title.
has_submenusReturns [Boolean] whether the menu has any submenus.
each(&block)Returns [void] Yields each link to the block.
as_json(opts = {})Returns [Hash] a JSON representation of the menu.

MenusDrop

inherits Liquid

Represents a collection of menus for a shop.

Methods
allReturns [self] this collection.
sizehandle group results, for which rails returns a hash instead of an integer Returns [Integer] the number of top-level menus.
countReturns [Integer] the number of top-level menus.
firstReturns [MenuDrop, nil] the first menu in the collection.
lastReturns [MenuDrop, nil] the last menu in the collection.
each(&block)Make these drops iterable Yields each menu to the block.
paginate(*args)Make them paginatable
as_json(opts = {})Returns [Array] an array of JSON representations of all menus.
to_aReturns [Array] an array of MenuDrop objects.
child_menus_of(link)

MetaFieldDrop

inherits ModelDrop

Represents a single custom metadata field on a product, collection, or page. Accessed via `product.meta_fields`, `product.attributes`, or `collection.meta_fields`. `to_s` (and `value`) returns the field's value formatted according to its type.

Attributes
name
key
Methods
to_sReturns the field's formatted value as a string (same as `value.to_s`).
slugReturns the field's key (alias for `key`).
field_typeReturns the field type string (e.g. "string", "int", "boolean", "split_string").
valueReturns the field value formatted according to its type. Booleans return a localised yes/no string; integers are cast; split_string values are joined.
boolean_stringReturns the localized yes/no string for boolean fields.
has_valueReturns true if the field has a non-blank value.
has_multiple_valuesReturns true if the field is a split_string type with more than one value.
valuesReturns the array of split string values, or nil for other field types.
is_integer(value)Returns true if the value can be parsed as an integer.
as_json(opts = {})Returns a hash representation of the meta field for JSON serialization.

MetaFieldsDrop

inherits ModelCollectionDrop

Methods
allReturns [ModelCollectionDrop]
presentReturns [Array<MetaFieldDrop>]
get(field_name)Returns [MetaFieldDrop, nil]
each(&block)Returns [Enumerator]
to_aReturns [Array<MetaFieldDrop>]
has_attributesReturns [Boolean]
associationoverwrite attr_reader method and filter hidden attrs and sort Returns [Array<MetaField>]
liquid_method_missing(field_name)Returns [MetaFieldDrop, nil]
init_drop(model)Returns [MetaFieldDrop]

ModelCollectionDrop

inherits Liquid

Base class for collections of Liquid drops. Wraps an ActiveRecord association and provides iteration, size, and first/last methods.

Methods
all
sizehandle group results, for which rails returns a hash instead of an integer
count
first
last
each(&block)Make these drops iterable
paginate(*args)Make them paginatable
as_json(opts = {})
to_a

ModelCollectionWithProductsDrop

inherits ModelCollectionWithServiceDrop

Methods
with_available_promotionsReturns [ModelCollectionWithProductsDrop] A new collection with available promotions.
nonemptyReturns [ModelCollectionWithProductsDrop] A new collection with nonempty items.
slugsReturns [Array<String>] Array of slugs for all models in the collection.
include?(obj)

ModelWithServiceDrop

inherits ModelDrop

Extends ModelDrop with a service object for accessing API data. Used for lazy loading relationships and accessing shop context.

Methods
to_liquid(service = nil)
shop

ModifierDrop

inherits ModelDrop

Represents a product modifier — an optional add-on a customer can select when ordering (e.g. gift wrapping, engraving, custom text). Exposed via `product.modifiers`. May carry an additional price and custom input fields collected at checkout.

Attributes
id
name
slug
description
max_count
Methods
has_additional_price_globalReturns true if this modifier has a flat additional price (applied once per order line).
additional_price_globalReturns the flat additional price as a MoneyDrop, or nil if none is set.
has_additional_price_per_unitReturns true if this modifier has a per-unit additional price.
additional_price_per_unitReturns the per-unit additional price as a MoneyDrop, or nil if none is set.
is_multipartReturns true if any custom field on this modifier is a file-upload field.
custom_fieldsReturns the modifier's custom input fields as an array of FormFieldDrop.
has_custom_fieldsReturns true if the modifier has any custom input fields.
error_messages_for(key)

MoneyDrop

inherits ModelDrop

Represents a monetary value with currency-aware formatting. Returned by price attributes on products and variants. Supports arithmetic operators so you can add, subtract, multiply, and divide prices in Liquid.

Attributes
cents
Methods
formatReturns [String] the formatted price string including the currency symbol (e.g. "$12.99"). Includes "from" prefix for products with multiple prices, and tax labels when applicable.
to_numberReturns [MoneyDrop] self for use in math operations.
moneyReturns [Money] the underlying Money object.
with_thousand_separatorReturns [String] the formatted price with a thousands separator (e.g. "$1,299.00").
without_symbolReturns [String] the numeric amount as a string without the currency symbol (e.g. "12.99").
without_symbol_with_thousand_separatorReturns [String] the numeric amount without symbol, with a thousands separator.
numericReturns [Integer] the raw integer amount in the smallest currency unit (cents for USD). Useful for passing prices to JavaScript or comparing values.
numberReturns [Integer] Alias for numeric. Returns the raw integer amount in cents.
to_fReturns [Integer] Alias for numeric. Returns the raw integer amount in cents.
positiveReturns [Boolean] true if the amount is greater than zero.
zeroReturns [Boolean] true if the amount is zero.
absReturns [MoneyDrop] the absolute value of this monetary amount.
currency_codeReturns [String] the ISO 4217 currency code (e.g. "USD", "EUR").

PaymentMethodDrop

inherits Liquid

Represents a payment method available at checkout (e.g. credit card, bank transfer, PayPal). Exposed as items in `shop.payment_methods`. Includes logo URL and optional surcharge info.

Methods
nameReturns the localised display name of the payment method.
has_surchargeReturns true if this payment method charges an additional surcharge fee.
surcharge_amountReturns the surcharge amount (numeric value; use with a money filter for display).
surcharge_typeReturns the surcharge type: "percentage" or "fixed".
token_based?Returns true if this payment method uses a saved token (e.g. Webpay Oneclick, PayPal Wallet).

PostDrop

inherits ModelWithServiceDrop · WithShopTags · WithRelations · WithRelations · BlockRenderer

Represents a single blog post. Exposed as `post` in blog post templates and as items in `blog.posts`. Supports navigation to previous/next posts.

Attributes
id
title
slug
published_on
updated_on
user_name
user_email
Translatable fields
title
body
Methods
nameReturns the post title. Alias for title.
user_nameReturns the display name of the author who wrote this post.
descriptionReturns the post's short description or excerpt.
meta_descriptionReturns the short_description if set, otherwise falls back to description. Used in SEO meta tags.
previousReturns the previous post as a PostDrop (by publication date), or nil if this is the first post.
nextReturns the next post as a PostDrop (by publication date), or nil if this is the last post.
imagesReturns all images attached to this post as an AssetsDrop.
main_imageReturns the post's primary/featured image as an AssetDrop, or nil if none is set.
tag_listReturns a plain array of tag name strings associated with this post.
has_main_imageReturns true if the post has a designated cover/featured image.
path_segmentsReturns an array of path segments for building the post URL.
main_assetReturns the primary/first post asset, or nil if none.

PostsDrop

inherits ModelCollectionWithServiceDrop

Methods
tagged_with(tag_list)posts.tagged_with.recetas Returns [PostsDrop] posts matching the given tag list.
liquid_method_missing(str)Returns [PostsDrop, Array, Nil] posts matching the method name.
latest(num)Returns [PostsDrop] the latest num posts.

PriceListDrop

inherits Liquid

Represents a customer-specific price list. Accessible via `customer.price_list`. When active, all product prices shown to the customer come from this list instead of public prices.

Methods
to_sReturns the price list name (default string output).
idReturns the unique identifier of this price list.
nameReturns the display name of this price list.
tax_nameReturns the name of the tax applied to this price list (e.g. "IVA").
tax_rateReturns the tax rate as a decimal (e.g. 0.19 for 19% VAT).
prices_include_taxReturns true if the prices in this list already include tax.

ProductAttributesDrop

inherits ModelCollectionDrop

used in ProductsDrop#attributes and in ShopDrop#variant_options and ShopDrop#product_attributes

Methods
firstReturns [KeyValuesDrop, nil] the first product attribute.
lastReturns [KeyValuesDrop, nil] the last product attribute.
to_aReturns [Array<KeyValuesDrop>] all product attributes as an array.
each(&block)Yields each product attribute as KeyValuesDrop.

ProductBundleDrop

inherits ProductDrop

Represents a product bundle — a fixed or customizable set of products sold together. Inherits from ProductDrop; `is_bundle` returns true. Use `bundle_config` for the full JSON configuration needed by the add-to-cart form.

Methods
product_classReturns [String] the product class identifier.
is_bundleReturns [Boolean] whether this is a bundle.
variants_countReturns [Integer] the number of variants (always 0 for bundles).
has_bundle_discountReturns [Boolean] whether the bundle has a bundle discount.
bundle_price_modeReturns [String] the bundle price mode.
has_valid_volume_discountReturns [Boolean] whether the bundle has a valid volume discount.
has_dynamic_priceReturns [Boolean] whether the bundle has a dynamic price.
has_multiple_pricesReturns [Boolean] whether the product has multiple prices.
is_single_itemReturns [Boolean] true if bundle has no options and contains a single fixed item.
savings_amountReturns [MoneyDrop, nil] the savings amount compared to buying items separately.
unbundled_items_priceReturns [MoneyDrop, nil] the total price of all items if bought unbundled.
bundle_itemsReturns [Array<ProductBundleItemDrop>] the fixed bundle items.
products_in_bundleReturns [Array<ProductBundleItemDrop>] the products in the bundle.
any_available
has_unlimited_stockReturns [Boolean] whether the bundle has unlimited stock.
stockReturns [Integer] the available stock.
weight_in_grReturns [Integer] the weight in grams.
has_custom_bundle_priceReturns [Boolean] whether the bundle has a custom price.
bundle_config

ProductBundleItemDrop

inherits Liquid · TranslatableDrop

Methods
sourceReturns [ProductDrop] the source product.
availableReturns [Boolean] whether the bundle item is available.
is_availableReturns [Boolean] whether the bundle item is available.
nameReturns [String] the product + variant name.
product_nameReturns [String] the product name.
variant_nameReturns [String] the variant name.
translated_nameReturns [String] the translated product + variant name.
translated_product_nameReturns [String] the translated product name.
translated_variant_nameReturns [String] the translated variant name.
imageReturns [AssetDrop] the image for this bundle item.
bundle_item_productReturns [ProductDrop] the product for this bundle item.
bundle_item_variantReturns [VariantDrop] the variant for this bundle item.

ProductBundleOptionDrop

inherits Liquid · TranslatableDrop

Methods
is_optionalReturns [Boolean] whether the option is optional (min_count == 0).
has_variable_countReturns [Boolean] whether the option has a variable count.
bundle_itemsReturns [Array<ProductBundleItemDrop>] the bundle items in this option.
translated_nameReturns [String] the translated name.

ProductComparisonTableDrop

inherits ModelWithServiceDrop

Methods
titleReturns [String] the title of the comparison table.
descriptionReturns [String] the description of the comparison table.
productsReturns [ProductsDrop] the products being compared.
products_countReturns [Integer] the number of products being compared.
attributesReturns [ProductAttributesDrop] the attributes for comparison.

ProductDrop

inherits ModelWithServiceDrop · WithShopTags · WithRelations · SubscribableDropMethods · ProductWithOptionsDropMethods · VolumeDiscountable

Represents a product in the store. Exposed as `product` in product and collection templates. Provides access to pricing, images, variants, inventory, tags, and promotional data.

methodshas_short_description product_class as_json(opts = {}) cart_json selected_branch_id contact_group_id price_list_id price_from_list plans_with_access is_restricted_to_members accessible_to_customer is_bundle is_gift_card is_membership_plan
aliasesmodel → title name → title translated_title → translated_model translated_name → translated_model
Attributes
id
title
slug
class_slug
description
short_description
currency_code
updated_on
cart_max_quantity
cart_quantity_multiple
Translatable fields
model
description
opt1_name
opt2_name
opt3_name
Methods
has_short_descriptionReturns true if a short description is present for this product.
product_classReturns the class type of this drop for internal classification.
as_json(opts = {})Returns a JSON representation of the product for API rendering.
cart_jsonReturns a JSON representation of the product optimized for cart rendering.
selected_branch_idReturns the ID of the currently selected branch for this request context.
contact_group_idReturns the contact group ID associated with the service for this product.
price_list_idReturns the active price list ID for the current request context.
price_from_listReturns true if a price list is currently active for this product.
plans_with_accessReturns an array of membership plans that grant access to this product.
is_restricted_to_membersReturns true if this product is restricted to specific membership plan holders.
accessible_to_customerReturns true if the current customer has access to view/purchase this product.
is_bundleReturns false — standard products are not bundles. Returns false — standard products are not bundles.
is_gift_cardReturns false — standard products are not gift cards.
is_membership_planReturns false — standard products are not membership plans.
is_intangibleReturns false — standard products are tangible (shippable). Returns false — standard products are tangible (shippable).
is_deliverableReturns true — standard products can be delivered.
tracks_stock
is_blockedReturns true if this product is blocked from purchase.
notifies_when_restockedReturns true if the product should show a "Notify when restocked" option.
is_dynamic_bundleReturns true if this is a dynamic bundle with multiple options.
has_optionsReturns true if the product requires the customer to choose an option before adding to cart. True for gift cards, subscriptions, or products with multiple selectable variants. used in add to cart tag to determine whether to show 'view options' or 'add to cart' in list view
has_options_for_slideoutReturns true if this product has options that can be shown in a slideout panel.
to_paramReturns the slug for URL parameter representation of this product.
has_collectionsReturns true if the product belongs to at least one collection.
first_collectionReturns the first collection this product belongs to.
collectionsReturns all collections this product belongs to as a CollectionsDrop.
tag_listReturns the product's tags as a plain array of tag name strings.
tagsReturns all tags associated with this product as a TagsDrop.
first_tagReturns the product's first tag, or nil if none exist.
vendorReturns the product's vendor/brand as a VendorDrop, or nil if not set.
product_typeReturns the product type classification as a ProductTypeDrop, or nil if not assigned.
bundle_configReturns the bundle configuration hash for dynamic bundle products.
google_categoryReturns the Google product category ID for this product's type.
weight_in_grReturns the product weight in grams.
weight_in_kgReturns the product weight in kilograms.
price_per_kgReturns the price per kilogram for this product.
meta_field_groupsReturns custom field groups as a MetaFieldGroupsDrop.
attribute_groupsReturns attribute groups (alias for meta_field_groups).
meta_fieldsReturns custom attributes (meta fields) defined on this product as a MetaFieldsDrop.
attributesReturns custom attributes (meta fields) defined on this product as a MetaFieldsDrop.
has_attributesReturns true if this product has any custom attributes defined.
meta_descriptionReturns the meta description for SEO purposes.
meta_keywordsReturns the meta keywords for SEO purposes.
can_show_price_publiclyReturns true if prices can be shown to public visitors.
has_dynamic_priceReturns true if the product has a dynamic price that varies by context.
price_if_staticReturns the static price when dynamic pricing is not active.
has_multiple_pricesReturns true if this product has multiple pricing tiers (e.g., subscription plans).
priceThe current selling price. Returns sale_price when active, otherwise regular_price.
price_for_metawe do allow sale prices to be showed in _product_meta Returns the price to display in product metadata.
regular_priceThe standard list price as a MoneyDrop. Includes a "from" prefix when the product has multiple variant prices.
sale_priceThe discounted sale price as a MoneyDrop, or nil if no sale is active.
has_sale_priceReturns true if a sale price is currently active on this product.
is_sale_price_setReturns true if a sale price has been configured for this product.
sale_price_starts_atReturns the start date and time for the sale price as a DateTimeDrop.
sale_price_ends_atReturns the end date and time for the sale price as a DateTimeDrop.
has_discountReturns true if the product has an active discount.
discount_percentageReturns the sale discount as an integer percentage of the regular price (e.g. 20 for 20% off).
price_comparisonReturns the comparison price (original price before discount) as a MoneyDrop.
has_price_comparisonReturns true if a comparison price is available for display.
price_comparison_percentageReturns the percentage difference between comparison price and regular price.
has_savingsReturns true if the product has any savings (sale price or volume discount).
savings_amountReturns the savings amount as a MoneyDrop.
savings_percentageReturns the savings percentage as a formatted string.
volume_discount_comparison_priceReturns the comparison price used for volume discount calculations.
has_public_priceReturns true if a public price is defined for this product.
public_priceReturns the public (catalog) price as a MoneyDrop.
has_price_list_savingsReturns true if there are savings available from a price list.
price_list_savings_amountReturns the savings amount from price list as a MoneyDrop.
price_list_savings_percentageReturns the savings percentage from price list as a formatted string.
taxReturns the tax amount for this product (currently returns nil).
price_with_taxReturns the price including tax.
prices_from_listsReturns prices from all price lists as an array.
has_promotionsReturns true if any promotions are available for this product.
promotionsReturns promotions applicable to this product for an anonymous visitor as a PromotionsDrop.
promotions_for_customerReturns promotions applicable to this product for the logged-in customer.
promotions_as_count_groupReturns promotions for this product grouped by quantity tier for anonymous visitors.
promotions_as_count_group_for_widgetReturns promotions for this product grouped by quantity tier for widgets (anonymous).
promotions_as_count_group_for_customer_in_widgetReturns promotions for this product grouped by quantity tier for logged-in customers in widgets.
promotions_by_discount_groupReturns promotions for this product grouped by discount type.
has_modifiersReturns true if the product has customization modifiers (e.g. gift wrapping, engraving options).
modifiersReturns the available customization modifiers as a ModifiersDrop.
has_similar_productsReturns true if this product has similar products defined.
similar_productsReturns similar products for this product as a ProductsDrop.
has_matching_bundlesReturns true if this product has matching bundles.
matching_bundlesReturns matching bundles for this product as a ProductsDrop.
minimum_stockReturns the minimum stock threshold for this product.
has_stock_in_multiple_branchesReturns true if stock exists in multiple branches.
stock_in_branchesReturns stock information for each branch as an array of ProductStockInBranchDrop.
stock_in_selected_branchReturns the stock count in the currently selected branch.
stockReturns the available stock count for the active context (selected branch or online).
online_stockReturns the number of units available for purchase online.
all_stockReturns the combined stock across all locations.
available_in_selected_branchReturns true if stock is available in the currently selected branch.
available_in_any_branchReturns true if there is stock in any branch or online location.
available_onlineReturns true if the product can be purchased online right now.
any_availableReturns true if any variants are available for purchase (considers stock and blocking).
is_availableReturns true if the product has at least one purchasable variant in the current context.
not_availableReturns true if no variants are currently available for purchase.
shipping_option_couriersReturns available courier options for this product's shipping.
has_estimated_days_to_deliveryReturns true if estimated days to delivery are available for this product.
estimated_days_to_deliveryReturns estimated delivery time range as a hash with 'min' and 'max' keys.
available_for_shippingReturns true if the product is available for shipping.
available_for_pickupReturns true if the product is available for pickup.
has_unlimited_stockReturns true if any variants allow unlimited stock (negative stock allowed).
has_unlimited_stock_by_selected_branchReturns true if unlimited stock is allowed in the currently selected branch.
variantsReturns all variants of the product as a VariantsDrop, including unavailable ones.
available_variantsReturns only the variants that are currently available for purchase.
unavailable_variantsReturns variants that are out of stock or otherwise unavailable.
variants_for_json(hide_unavailable: false, sort: false)Returns variants formatted for JSON rendering.
variants_countReturns the total number of variants for this product.
has_variantsReturns true if this product has more than one variant.
can_select_variantReturns true if the product has multiple variants that can be selected.
initial_selected_variantReturns the first available variant for this product.
default_variant_idUsed in old cart forms. DEPRECATED as the variant might not be available!
available_variant_idReturns the ID of the first available variant.
has_variant_optionsReturns true if this product has variant options (e.g., Size, Color).
available_variant_options_matrixReturns the variant options matrix for available variants only.
variant_options_matrixReturns the variant options matrix for all variants.
variant_options_treeReturns the variant options tree for this product.
variant_option_typeReturns the first variant option type (e.g., 'color', 'size').
has_colorsReturns true if this product has color variant options.
has_color_variant_optionReturns true if the product has a color variant option.
has_image_variant_optionReturns true if the product has an image variant option.
color_mapReturns the color map for this product as a ColorMapDrop.
variant_option_namesReturns all variant option names as an array.
variant_option_nameReturns the first variant option name.
custom_variant_option_nameReturns the custom variant option name if different from default.
assetsReturns all assets (images, videos, and files) attached to this product.
imagesReturns all images attached to this product as an AssetsDrop. Falls back to a placeholder if no images have been uploaded.
videosReturns video assets attached to this product.
filesReturns downloadable file assets attached to this product.
asset_countReturns the total number of assets attached to this product.
image_countReturns the total number of images attached to this product.
video_countReturns the total number of videos attached to this product.
file_countReturns the total number of files attached to this product.
has_assetsReturns true if this product has any assets attached.
has_imagesReturns true if this product has any images attached.
has_videosReturns true if this product has any videos attached.
has_filesReturns true if this product has any files attached.
first_assetReturns the first asset attached to this product.
first_imageReturns the first image attached to this product.
first_videoReturns the first video attached to this product.
first_fileReturns the first file attached to this product.
cart_max_quantity_by_typeReturns the maximum cart quantity allowed by product type.
cart_quantity_multiple_by_typeReturns the cart quantity multiple required by product type.
unit_of_measureReturns the unit of measure for this product (e.g., 'kg', 'lb').
unit_display_quantityReturns the display quantity for the unit of measure.
price_per_display_unitReturns the price per display unit as a MoneyDrop.
has_volume_discountReturns true if this product has a volume discount available.

ProductGroupsDrop

inherits Liquid

Methods
liquid_method_missing(str)Returns [CollectionDrop, ProductTypeDrop, ProductSetDrop, VendorDrop, TagDrop, nil] the product group drop for the given type and slug.

ProductSetDrop

inherits ModelWithServiceDrop · WithRelations · ResourceImages

Represents a saved product set — a dynamic collection defined by a search query. Exposed as items in `shop.product_sets`. Iterable directly to loop through its products.

Attributes
name
slug
Translatable fields
name
Methods
to_paramReturns [String] the slug for URL parameter.
has_productsReturns [Boolean] true (avoids unnecessary query).
productsReturns [ProductsDrop] the products in this set.
each(&block)Make these drops iterable Yields each product in the set.

ProductSetsDrop

inherits ModelCollectionWithServiceDrop

Methods
slugsReturns [Array<String>] the slugs of all product sets.
include?(obj)

ProductStockInBranchDrop

inherits Liquid

Methods
stock_locationReturns [StockLocationDrop] The stock location drop if found
branchReturns [BranchDrop] The branch drop if found
allows_negative_in_locationReturns [Boolean] Whether any variant allows negative stock in this location
variant_stocksReturns [Array<Hash>] List of variant stocks with variant_id, available_stock, and allows_negative
method_missing(key, args = nil)Returns [Object] The value for the given key from source or public method.
liquid_method_missing(key)Returns [Object] The value for the given key from source or public method.
as_json(opts = {})Returns [Hash] JSON representation of the stock data

ProductTypeDrop

inherits ModelWithServiceDrop · WithShopTags · WithRelations · WithRelations · ResourceImages

Represents a product type classification (analogous to a category in other platforms). Exposed as `product_type` on type pages and via `product.product_type`. Can hold custom attributes shared by all products of that type.

Attributes
id
name
description
slug
products_count
cart_max_quantity_per_product
cart_quantity_multiple
unit_of_measure
unit_display_quantity
to_param
Translatable fields
name
description
Methods
type
to_paramReturns [String] the slug for URL parameter.
imagesReturns [AssetsDrop] the images associated with this product type.
has_productsReturns [Boolean] true if the product type has products.
first_productReturns [ProductDrop, nil] the first product in the collection.
productsproducts with both type and tags Returns [ProductsDrop] products matching both the product type and tag.
available_productsReturns [ProductsDrop] products in stock or available_if_no_stock: true. only products in stock or available_if_no_stock: true
product_attributesReturns [ProductAttributesDrop] the product attributes for this type.
filterable_product_attributesReturns [ProductAttributesDrop] the filterable product attributes.
variant_optionsProductAttributesDrop has same behaviour we want for variant_options Returns [ProductAttributesDrop] the variant options for products of this type.
scoped_tagstags for this type with products filtered by the type Returns [Array<ScopedTagDrop>] tags scoped to this product type.
promotionsReturns [PromotionsDrop] the available promotions for this product type.
vendorsReturns [VendorsDrop] the vendors for this product type.
as_jsonReturns [Hash] a JSON representation of the product type.

ProductsDrop

inherits ModelCollectionWithServiceDrop

Methods
include?(obj)
recently_updatedReturns [RecentlyUpdatedProductsDrop] products sorted by recent updates.
sorted_byReturns [SortedProductsDrop] products sorted by the given mode. (eg. 'products.sorted_by.name')
tagged_withReturns [TaggedProductsDrop] products with the given tags. (eg. 'products.tagged_with.foo+bar' (tag slugs))
with_typeReturns [TypedProductsDrop] products of the given type. (eg. products.with_type.a-product-type (slug))
with_vendorReturns [VendoredProductsDrop] products from the given vendor. (eg. products.with_vendor.a-vendor (slug))
tagsReturns [TagsDrop] all tags from products in the collection.
attributesReturns [ProductAttributesDrop] the product attributes.
attribute_listReturns [ProductAttributesDrop] the product attributes.
variant_namesReturns [Array<String>] all variant names from products in the collection.

PromotionDrop

inherits ModelDrop

Represents a discount promotion. Exposed as items in `product.promotions`. Provides discount type, value, validity dates, and activation rules.

Attributes
id
name
usage_count
usage_limit
remaining_uses
product_range_from
product_range_to
contact_tag
Methods
is_publicReturns true if this promotion is visible to anonymous visitors. Code-based money discounts are kept private; all others are public.
has_product_count_groupReturns true if this promotion has a product count group defined.
product_count_groupReturns the product count group as a Liquid-compatible object, or nil.
product_count_group_nameReturns the name of the product count group.
product_count_group_typeReturns the type of the product count group.
has_product_discount_groupReturns true if this promotion has a product discount group defined.
product_discount_groupReturns the product discount group as a Liquid-compatible object, or nil.
product_discount_group_nameReturns the name of the product discount group.
product_discount_group_typeReturns the type of the product discount group.
has_discount_group_filterReturns true if a discount group filter is active.
discount_group_filter_modeReturns the discount group filter mode.
discount_group_filter_intervalReturns the discount group filter interval.
discount_group_filter_descReturns a human-readable description of the discount group filter.
price_range_fromReturns the lower bound of the price range as a MoneyDrop, or nil.
price_range_toReturns the upper bound of the price range as a MoneyDrop, or nil.
discount_typeReturns the discount type: "percentage", "fixed", or "free_shipping".
discountReturns a formatted discount string (e.g. "−20%", "−$5.00", or "Free shipping").
discount_over(price)Returns the discount amount applied over a given price as a MoneyDrop.
starts_atReturns the promotion start date as a DateTimeDrop, or nil if no start date is set.
expires_atReturns the promotion expiry date as a DateTimeDrop, or nil if it never expires.
is_expiredReturns true if the promotion's expiry date has passed.
is_upcomingReturns true if the promotion start date is in the future.
is_cumulativeReturns true if this promotion can stack with other promotions.
non_cumulativeReturns true if this promotion cannot be combined with others.
activation_modeReturns the activation mode string: "code", "auto", "fulfillment", or "payment".
is_automaticReturns true if the promotion is applied automatically (no coupon code required).
by_codeReturns true if the promotion requires a coupon code to be activated.
for_payment_methodReturns true if this promotion is tied to a specific payment method.
payment_method_nameReturns the name of the associated payment method, or a fallback message. Returns the name of the associated payment method, or a fallback message.
for_fulfillment_methodReturns true if this promotion is tied to a specific fulfillment method. Returns true if this promotion is tied to a specific fulfillment method.
for_shipping_optionReturns true if this promotion is tied to a shipping option. Returns true if this promotion is tied to a shipping option.
for_local_pickupReturns true if this promotion is for local pickup at a branch. Returns true if this promotion is for local pickup at a branch.
fulfillment_method_nameReturns the name of the fulfillment method. Returns the name of the fulfillment method.
fulfillment_method_descReturns a human-readable description of the fulfillment method.
codeReturns the coupon code string if the promotion is public and code-based, otherwise nil.
has_main_imageReturns true if the promotion has a cover/banner image.
main_imageReturns the promotion's cover image as an AssetDrop, or nil.

RelationDrop

inherits ModelWithServiceDrop

Attributes
name
description
slug
Methods
urlReturns [nil]
typeReturns [String] The child type underscored (e.g., 'product_type', 'gallery', 'collection', 'tag', 'vendor')
objectReturns [Object] The child or parent object depending on target
parentReturns [Object] The parent object if visible, otherwise nil
childReturns [Object] The child object if visible, otherwise nil
has_productsReturns [Boolean] Whether the object has products
productsReturns [Array] List of products if available

SectionDrop

inherits ModelDrop · WithRelations · WithRelations · BlockRenderer

Represents a static page (also called a section). Exposed as `page` in page templates. Pages can have images, custom meta fields, a body with Markdown/HTML, and related links. LinkDrop inherits from this class, so links share the same base properties.

aliasescover_image → main_image has_cover_image → has_main_image attributes → meta_fields
Attributes
title
sent
Translatable fields
title
body
success_message
Methods
slugReturns [String] the URL-friendly slug for this section.
typeReturns [String] the type of this section (e.g. "page").
menuReturns [nil] the menu this section belongs to (always nil for sections).
nameReturns [String] the name of this section (alias for title).
descriptionReturns [String] the description or body content of this section.
imagesReturns [AssetsDrop] the collection of images for this section.
main_imageReturns [AssetDrop, nil] the cover image for this section, if any.
has_main_imageReturns [Boolean] whether this section has a cover image.
has_attributesReturns [Boolean] whether this section has any meta attributes with values.
meta_fieldsReturns [MetaFieldsDrop] the meta fields for this section.
meta_descriptionReturns [String, nil] the meta description for this section, if type is 'page'.
resource_nameReturns [String] the resource name (alias for type).

SentFormDrop

inherits FormDrop

A FormDrop variant returned after a form is successfully submitted. Identical to FormDrop but `sent` always returns true, so templates can show a success message.

methodssent
Methods
sentReturns [Boolean] Always true to indicate form was sent successfully.

ShipmentDrop

inherits Liquid

Represents an order shipment with fulfilment status and optional carrier tracking. Used in transactional email templates to display delivery progress, status bar, and tracking events.

Methods
has_trackingReturns true if carrier tracking data is available for this shipment.
is_status_noneReturns true if the current delivery status is "none" (unfulfilled).
current_statusReturns the current delivery status object.
statusReturns the shipment status string (carrier status if tracked, otherwise the order fulfillment status).
contact_nameReturns the recipient's name.
localized_delivery_statusReturns the localised label for the current delivery status.
delivery_statusReturns the effective delivery status key (e.g. "queued", "shipped", "delivered").
delivery_statusesReturns all delivery status steps as DeliveryStatusDrop objects, with completion state.
delivery_status_barReturns the subset of delivery statuses used to render a progress bar.
tracking_dataReturns carrier tracking information as a ShipmentTrackingDrop, or nil if unavailable.
courier_nameReturns the carrier name for this shipment.
tracking_codeReturns the carrier tracking code for this shipment.
order_codeReturns the order's short code (e.g. "#1234").
destReturns a short destination string (street, city, region), or nil if no address is set.

ShopDrop

inherits ModelDrop

Represents the current shop (store). Exposed as `shop` in all Liquid templates. Provides access to store settings, branding assets, branches, and cart configuration.

Attributes
name
short_name
description
subdomain
currency_code
custom_header
can_show_prices_publicly
unavailable_products_mode
checkout_orders_quote_flow
products_cross_stock_mode
Translatable fields
name
description

StockLocationDrop

inherits ModelDrop

Represents the shop's inventory/stock location. Accessible via `shop.stock_location`. Used internally to scope stock queries; `name` is the only public attribute.

attrname
Attributes
name

SubscriptionFeeDrop

inherits Liquid

Represents a subscription plan's fee structure — one-time setup fee plus a recurring renewal fee. Exposed as items in `product.subscription_fees` for subscribable products.

Methods
idReturns the unique identifier of the subscription fee.
setup_feeReturns the one-time setup/activation fee as a MoneyDrop.
renewal_feeReturns the recurring renewal fee as a MoneyDrop (includes the billing interval).
interval_labelReturns a localised label describing the billing interval (e.g. "monthly", "annually").
payment_intervalReturns the billing interval key (e.g. "month", "year").
variant_idReturns the variant ID associated with this subscription fee.
as_json(opts = {})Returns a hash representation of the subscription fee for JSON serialization.

TagDrop

inherits ModelWithServiceDrop · WithRelations

Represents a product tag. Tags cross-categorize products across collections. Exposed as `tag` on tag pages and as items in `product.tags`.

Attributes
name
slug
color
products_count
visible
icon
Methods
idReturns [String] the tag's ID (slug) for JSON compatibility.
is_visibleReturns [Boolean] whether the tag is visible.
typeReturns [String] 'tag'.
to_paramReturns [String] the tag's slug.
titleReturns [String] the tag's name.
has_productsReturns [Boolean] whether the tag has products.
first_productReturns [ProductDrop, nil] the first product.
productsReturns [ProductsDrop] all products for this tag.
available_productsReturns [ProductsDrop] available products (in stock).
promotionsReturns [PromotionsDrop] available promotions.
as_jsonReturns [Hash] a JSON representation of the tag.

TagsDrop

inherits ModelCollectionWithProductsDrop

ThemeAssetDrop

inherits Liquid · ImageAspectRatio

Methods
selfReturns [ThemeAssetDrop] a new instance from a URL.
selfReturns [ThemeAssetDrop] a new instance from a URL.
urlReturns [String] the URL of the theme asset.
to_sReturns [String] the URL representation.
titleReturns [String] the title (base name) of the asset.
extensionReturns [String] the file extension.
base_nameReturns [String] the base name without extension.
human_sizeReturns [String, nil] the human-readable file size (e.g., "1.5 MB").
geometrySets the geometry for image resizing.
resizerReturns [AssetDrop::Resizer] the resizer instance for this asset.
is_landscape_imageReturns [Boolean] whether this is a landscape image.
is_portrait_imageReturns [Boolean] whether this is a portrait image.
is_square_imageReturns [Boolean] whether this is a square image.
has_variantsReturns [Boolean] always false (theme assets don't have variants).
idReturns [nil]
descriptionReturns [nil]
shop_idReturns [nil]
variantsReturns [Array] empty array.
variant_idsReturns [Array] empty array.
thumbnailReturns [String] the URL (thumbnail size).
mediumReturns [String] the URL (medium size).
smallReturns [String] the URL (small size).
largeReturns [String] the URL (large size).
originalReturns [String] the URL (original size).
protected_path(size = 'original')Raises [RuntimeError] unsupported for theme assets.

VariantDrop

inherits ModelWithServiceDrop · VolumeDiscountable

Represents a specific product variant — a unique combination of option values (e.g. "Blue / Large"). Provides pricing, stock, image, and option data for a single purchasable SKU.

Attributes
title
id
sku
color
option_values
weight_in_grams
Translatable fields
opt1
opt2
opt3
Methods
translated_titleReturns the variant title translated into the current locale.
opt1
opt2
opt3
productReturns the parent ProductDrop for this variant.
weight_in_grAlias for weight_in_grams.
weight_in_kgReturns the variant weight in kilograms.
price_per_kgReturns the price per kilogram, or nil if weight is not set.
has_colorReturns true if the variant has a non-default color value assigned.
online_stockReturns the number of units available for online purchase.
stockReturns the stock count for the currently selected branch, or online stock if no branch is selected.
is_available_if_no_stockReturns true if this variant is configured to remain purchasable even when out of stock.
has_unlimited_stockAlias for is_available_if_no_stock.
is_availableReturns true if this variant can currently be purchased. Takes into account stock levels, selected branch, and unlimited-stock settings.
stock_in_selected_branchReturns the stock count for the selected branch, or nil if no branch is selected.
has_volume_discountReturns true if this variant has an active volume discount.
raw_priceused in ItemWithTax Returns the raw (unformatted) price for this variant.
priceThe current selling price. Returns sale_price if a sale is active, otherwise regular_price.
regular_priceThe standard list price as a MoneyDrop.
sale_priceThe discounted sale price as a MoneyDrop, or nil if no sale is active.
has_sale_priceReturns true if a sale price is currently active.
discount_percentageReturns the discount percentage relative to the regular price, or nil if no sale is active.
has_price_comparisonReturns true if a comparison price (strikethrough price) is available to display.
price_comparisonReturns the comparison price (strikethrough price), or nil if not available.
price_comparison_percentageReturns the discount percentage relative to the regular price.
price_comparison_or_nilkeeping this method for backwards compat
public_priceReturns the public price for this variant, or nil if not set.
taxReturns nil (tax is not calculated at variant level).
price_with_taxReturns the price including tax (same as price for variants).
asset_idsReturns an array of asset IDs for this variant's product.
assetsReturns all assets for this variant as an AssetsDrop.
imagesReturns images specifically associated with this variant as an AssetsDrop.
filesReturns downloadable file assets attached to this variant.
asset_countReturns the total number of assets (images + files) for this variant.
image_countReturns the number of images for this variant.
file_countReturns the number of file assets for this variant.
has_assetsReturns true if the variant has any assets.
has_imagesReturns true if the variant has any images.
has_filesReturns true if the variant has any downloadable files.
first_assetReturns the first asset for this variant.
first_imageReturns the first image for this variant.
first_fileReturns the first downloadable file for this variant.
option_valuesReturns an array of the variant's option values (e.g. ["Blue", "Large"]).
option_assets_idsReturns an array of asset IDs for option values.
opt1_asset_idReturns the asset ID for the first option value.
variant_option1_imageReturns the image asset for the first option value.
option_images_urlsReturns an array of image URLs for option values.
price_per_unitReturns the price per unit as a MoneyDrop, or nil if not available.
price_per_display_unitReturns the price per display unit as a MoneyDrop, or nil if not available.
as_json(opts = {})used in dynamic variants template to build list in view define here so we don't do BooticClient::Entity#as_json for Api Products

VendorDrop

inherits ModelWithServiceDrop · WithShopTags · WithRelations · WithRelations · ResourceImages

Represents a product vendor or brand. Exposed as `vendor` on vendor pages and via `product.vendor`. Supports filtering and browsing products by brand.

Attributes
id
name
slug
description
products_count
Translatable fields
name
description
Methods
typeReturns [String] 'vendor'.
to_paramReturns [String] the vendor's slug.
imagesReturns [AssetsDrop, nil] the vendor's images.
has_productsReturns [Boolean] whether the vendor has products.
first_productReturns [ProductDrop, nil] the first product.
productsReturns [ProductsDrop] all products for this vendor.
available_productsonly products in stock or available_if_no_stock: true Returns [ProductsDrop] only products in stock.
product_typesReturns [ProductTypesDrop] product types for this vendor.
product_attributesReturns [ProductAttributesDrop] product attributes.
filterable_product_attributesReturns [ProductAttributesDrop] filterable product attributes.
variant_optionsProductAttributesDrop has same behaviour we want for variant_options Returns [ProductAttributesDrop] variant options.
promotionsReturns [PromotionsDrop] available promotions.
as_jsonReturns [Hash] a JSON representation of the vendor.

VolumeDiscountDrop

inherits ModelWithServiceDrop

Represents a volume (tiered) discount applied to a product or group of products. Accessible via `product.volume_discount`. Defines tiers, discount type, and how savings accumulate.

Attributes
id
name
slug
discount_type
apply_mode
Methods
titleReturns the name of the volume discount.
typeReturns the discount type string (e.g., 'percentage', 'fixed').
is_cumulativeReturns true if quantities from multiple products are counted together to reach a tier.
cumulative_modeReturns the cumulative mode string ("global") or nil for non-cumulative discounts.
repeating_tierReturns true if the last tier repeats for quantities beyond its threshold.
single_tierReturns true if there is exactly one tier and it does not repeat.
apply_to_allReturns true if the discount applies to every item in the order (not just group members).
completing_mode_apply_individuallyReturns true if completing mode applies to each qualifying product individually.
completing_mode_apply_globallyReturns true if completing mode applies to all qualifying products together.
is_completing_modeReturns true if the discount uses "completing" mode (discount is applied once a threshold is reached).
tiersReturns the array of discount tier hashes (each with quantity threshold and discount value).
is_fixedReturns true if this is a fixed-amount (per-unit) volume discount.
is_percentageReturns true if this is a percentage-based volume discount.
is_group_percentageReturns true if the discount is a percentage applied across an entire product group.
is_sale_price_triggerReturns true if the discount is triggered by reaching a sale price threshold.
first_tierReturns the first (lowest-threshold) tier hash.
last_tierReturns the last (highest-threshold) tier hash.
each(&block)Yields each tier hash for iteration in Liquid templates. {% for tier in product.volume_discount %} ... {% endfor %}
has_productsReturns true if this volume discount has associated products.
productsReturns the collection of products associated with this volume discount.
products_countReturns the number of products associated with this volume discount.

VolumeDiscountWithPriceDrop

inherits VolumeDiscountDrop

Methods
completing_first_priceReturns [String, nil] HTML string for completing first tier price, or nil if not in completing mode.
first_tier_msgReturns [String] HTML string for the first tier message.
tiersReturns [Array<Hash>] Array of tier hashes with MoneyDrop values.

Liquid Filters

Custom filters extending Liquid’s built-in set.

ImageFilters
resized_image_url(filename_with_extension, geometry_string)
Returns a resized URL for a theme asset image file using the given geometry string (e.g. `"200x200"`).
resize(image, geometry_string)
Resizes an image asset or asset URL to the given geometry string (e.g. `"300x"`, `"x200"`, `"100x100"`). Accepts an AssetDrop, LogoDrop, or plain filename string.
greyscale(image)
Converts an image asset to greyscale via the resize server.
webp(image)
Converts an image to WebP format, returning a WebP URL or setting the webp flag on the image object.
TextFilters
translate(str, args = nil)
defaults to given string if not found
localize(str, args = nil)
like translate but for our system translations
split_text(post_or_str, link_text = t('titles.read_more')
Splits a post or string at the `<!--more-->` marker (or at max_length characters) and appends a "read more" link pointing to the post's URL.
split(post_or_str, link_text = t('titles.read_more')
to_bool(var)
Returns the string `"true"` or `"false"` from any truthy/falsy value.
to_slug(str)
Converts a string to a URL-safe slug (lowercase letters, digits, and hyphens).
titleize(str)
Converts a dashed, underscored, or dotted string into a human-readable capitalized title.
to_money(str)
Wraps a numeric amount in a MoneyDrop using the shop's currency, enabling price formatting filters.
with_discount_from(product_price, promo)
Subtracts a promotion's discount from a product price and returns the discounted MoneyDrop.
format_text(input)
Renders a Markdown string or post body as HTML, converting single newlines to `<br>` tags.
render_markdown(text, options = {})
Renders a Markdown string as HTML using the Redcarpet library.
simple_format(text, options = {})
Converts plain text into HTML by wrapping paragraphs and converting single newlines to <br> tags.
simple_format(text, options = {})
Converts plain text into HTML by wrapping paragraphs and converting single newlines to <br> tags.
to_json(obj)
Converts an object to its JSON string representation.
bool_to_yesno(num)
Converts 0 to a localized "No" string and 1 to "Yes"; passes other values through unchanged.
json_escape(text)
Escapes a string for safe embedding inside a JSON string value (collapses whitespace and escapes quotes).
escape_quotes(str)
Escapes double quotes in a string by prefixing them with a backslash.
meta_escape(str, limit = nil)
Strips HTML tags and escapes HTML entities for safe use in meta tag content attributes.
escape_html(text)
Escapes HTML special characters (`&`, `<`, `>`, `"`) in a string.
strip_tags(html)
Removes all HTML tags from a string, returning plain text.
print_if_equal(text, one, two)
Returns `text` if `one` equals `two`, otherwise returns nil.
print_if_matches(text, one, two)
Returns `text` if `one` contains or matches `two` (supports regex strings like `/pattern/`). print_if_matches("selected", "something", "some")
print_if_included(text, needle, haystack)
Returns `text` if `needle` is included in `haystack` (array, hash, or string). Arguments can be passed in either order. print_if_included("checked", "things", ["list", "of", "things"]) or print_if_included("checked", ["list", "of", "things"], "things")
print_if_filter_active(text, params, link)
Returns `text` if the given navigation link is currently active as a filter in the request params.
if_current_page(text, link)
Returns `text` if the current request path exactly matches the given link's path.
if_within_section(text, link)
Returns `text` if the current request path starts with or matches the given link's path.
if_within_catalog(text)
Returns `text` if the current path is within any catalog section (products, collections, types, tags, or vendors).
UrlFilters
image_url(product, size = 'large')
Returns the URL for a product's first image at the given size (e.g. `"large"`, `"medium"`) or geometry string.
asset_url(filename_with_extension)
Returns the CDN URL for a named theme asset file (e.g. `"logo.png"`, `"app.js"`).
theme_asset_url(filename_with_extension)
returns url and path for filename depending if asset or template exists or not if not, it will point to static.bootic.net/blank.type?original=missing.type if yes, it will point to themes.bootic.net/theme/:id/:name.:type
protected_asset_path(filename_with_extension, size = 'original')
js_bundle_url(filenames)
Returns a single bundled URL for a comma-separated list of JS filenames.
css_bundle_url(filenames)
Returns a single bundled URL for a comma-separated list of CSS filenames.
scss_bundle_url(filenames)
Returns a single bundled URL for a comma-separated list of SCSS filenames.
asset_url_no_timestamp(filename_with_extension)
Returns the asset URL without the cache-busting timestamp query string.
shared_url(path)
Returns a URL for a shared (cross-theme) path with the shop's last-refreshed timestamp appended.
image_tag(url_or_asset, alt_text = nil)
Returns an `<img>` tag for the given URL or asset, with an auto-derived alt attribute.
lazy_image_tag(url_or_asset, alt_text = nil)
Returns a lazy-loading `<img>` tag using `data-src` instead of `src` (for use with lazy-load JS libraries).
image_tag_with_webp(url_or_asset, alt_text = nil)
Returns a `<picture>` element with a WebP source and a fallback image source for browsers without WebP support.
lazy_image_tag_with_webp(url_or_asset, alt_text = nil)
Returns a lazy-loading `<picture>` element with WebP and fallback sources (uses `data-srcset`).
stylesheet_tag(url, media = 'all')
Returns a `<link rel="stylesheet">` tag for the given CSS filename or URL. Supports comma-separated filenames for bundling in production, or individual tags in dev mode.
stylesheet_tag_with_preload(url, media = 'all')
Returns a preload `<link>` tag that loads the stylesheet asynchronously and applies it once loaded.
javascript_tag(url, append = '')
Returns a `<script>` tag for the given JS filename or URL. Supports comma-separated filenames for bundling in production, or individual tags in dev mode.
async_javascript_tag(url)
Returns an async/defer `<script>` tag for non-blocking JavaScript loading.
tagged_resource_path(resource, tag, page = 1)
Returns the filtered URL for a resource (collection, type, or vendor) combined with a tag filter.
typed_collection_path(collection, type, page = 1)
Returns the URL for a collection filtered by a product type.
tagged_collection_path(collection, tag, page = 1)
Returns the URL for a collection filtered by a tag.
vendored_collection_path(collection, vendor, page = 1)
Returns the URL for a collection filtered by a vendor.
tagged_typed_products_path(type, tag, page = 1)
Returns the URL for a product type filtered by a tag.
vendored_typed_products_path(type, vendor, page = 1)
Returns the URL for a product type filtered by a vendor.
tagged_vendored_products_path(vendor, tag, page = 1)
Returns the URL for a vendor's products filtered by a tag.
vendored_products_path(vendor, page = 1)
Returns the URL for all products by a given vendor.
WillPaginateFilters
pagination(paginated_list, opts = {})
Renders pagination for a paginated collection using the mode set in the theme's settings (`page_numbers`, `more_results`, or `next_page`).
more_results(paginated_list, opts = {})
Renders a "Load more" button that appends the next page of results via AJAX. Falls back to numbered page links when the visitor navigates directly to a non-first page.
page_numbers(paginated_list, opts = {})
Renders numbered page links with previous/next labels (classic pagination).
next_page(paginated_list, opts = {})
Renders previous/next page links only (no numbered page links).

Liquid Tags

Custom block/inline tags available in Liquid templates.

{% add_to_cart %}
{% add_to_cart_in_branch %}
{% add_to_cart_js %}
Renders JavaScript bindings for the add-to-cart interaction.
{% add_to_cart_no_variants %}
Renders a simplified Add to Cart button, automatically selecting the first available variant.
{% async_partial %}
Loads a partial template asynchronously via AJAX, deferring its render until after page load.
{% bootic_header %}
Injects shared CSS, RSS links, OpenGraph tags, and JSON-LD structured data. Use the 'v2' parameter for current functionality.
{% bootic_js %}
Includes the JavaScript runtime for Bolder's module and cart system.
{% branch_chooser %}
Renders a UI for customers to select their preferred pickup or delivery branch.
{% bundle_option_configurator %}
Renders the option selector for configuring a customisable product bundle.
{% cart_table %}
Renders the static (non-JavaScript) cart items table.
{% cart_table_template %}
Injects the JavaScript template used by the dynamic cart renderer.
{% comments %}
Renders a customer reviews/comments section for the current product or post.
{% compare_products %}
Renders a product comparison widget allowing customers to compare multiple products.
{% contact_form_fields %}
Renders the standard contact form fields (name, email, message, etc.).
{% currency_select %}
Renders a currency selector dropdown for multi-currency stores.
{% current_description %}
Renders a meta description for the current page, suitable for use in a <meta name="description"> tag.
{% current_title %}
Renders an appropriate page title for the current page (product name, collection name, shop name, etc.).
{% delivery_setup %}
Deprecated. Previously rendered the delivery and pickup setup flow.
{% dynamic_cart_table %}
Renders the interactive shopping cart table with live updates. Requires the cart object; intended for use in cart.html.
{% embed_form %}
Renders an embeddable contact form (inherits field rendering from ContactFormFieldsTag).
{% find_in_block %}
Finds and exposes a specific item from a collection within a Liquid block.
{% fulfillment_info %}
Renders fulfilment method information (shipping or pickup options) for the current product or cart.
{% include_optional %}
Includes a Liquid partial template if it exists; silently skips if the file is not found.
{% include_partial %}
Includes a Liquid partial template by filename.
{% language_select %}
Renders a language/locale selector dropdown for multi-language stores.
{% loop %}
Iterates over a collection rendering each item through a reusable partial template. Example: {% loop products in 'product_item' %}
{% navigation_path %}
Renders breadcrumb navigation for the current page.
{% notify_restocked_form %}
Renders a form allowing customers to sign up for back-in-stock notifications for an out-of-stock product.
{% product_comparison_table %}
Renders a side-by-side attribute comparison table for selected products.
{% product_filters %}
Renders a filter panel for narrowing product listings by tag, type, vendor, or collection.
{% promotions_for %}
Renders the active promotions applicable to a given product or the current cart.
{% random_number %}
Outputs a random integer between the given min and max values, useful for randomised layouts.
{% render_component %}
Renders a registered Vue or Web Component by name.
{% sale_price_countdown_for %}
Renders a countdown timer showing the time remaining until a product's sale price expires.
{% shipping_calculator %}
Renders a modal for calculating shipping costs by region.
{% signup_form %}
Renders a customer account registration form.
{% stock_status %}
Renders a label showing the product's current stock availability (in stock, low stock, out of stock).
{% subscribe_form %}
Renders a newsletter or mailing-list subscription form.
{% toggle_quote_cart %}
Toggles the cart between standard purchase mode and quote-request mode.
{% unit_price %}
Renders the product's selling price, including comparison/sale price markup if applicable.
{% variant_colors %}
Renders colour swatch inputs for selecting product colour variants.
{% volume_discount_table %}
Renders a tiered quantity-pricing table for a product's volume discount.