Skip to main content

product

A product in the store.

Properties

Returns true if at least one of the variants of the product is available. Returns false if not.

For a variant to be available, it needs to meet one of the following criteria:

  • The variant.inventory_quantity is greater than 0.
  • The variant.inventory_policy is set to continue.
  • The variant.inventory_management is nil.
  • The variant has an associated delivery profile with a valid shipping rate.

The taxonomy category for the product

Anchor to
collections
array of collection

The collections that the product belongs to.

Note

Collections that aren't available on the Online Store sales channel aren't included.

Anchor to
compare_at_price

The lowest compare at price of any variants of the product in the currency's subunit.

The value is output in the customer's local (presentment) currency.

For currencies without subunits, such as JPY and KRW, tenths and hundredths of a unit are appended. For example, 1000 Japanese yen is output as 100000.

Tip

Use money filters to output a formatted price.

Anchor to
compare_at_price_max

The highest compare at price of any variants of the product in the currency's subunit.

The value is output in the customer's local (presentment) currency.

For currencies without subunits, such as JPY and KRW, tenths and hundredths of a unit are appended. For example, 1000 Japanese yen is output as 100000.

Tip

Use money filters to output a formatted price.

Anchor to
compare_at_price_min

The lowest compare at price of any variants of the product in the currency's subunit. This is the same as product.compare_at_price.

The value is output in the customer's local (presentment) currency.

For currencies without subunits, such as JPY and KRW, tenths and hundredths of a unit are appended. For example, 1000 Japanese yen is output as 100000.

Tip

Use money filters to output a formatted price.

Anchor to
compare_at_price_varies

Returns true if the variant compare at prices of the product vary. Returns false if not.

The description of the product.

Note

This is the same value as product.description.

A timestamp for when the product was created.

Tip

Use the date filter to format the timestamp.

Anchor to
description

The description of the product.

Note

This is the same value as product.content.

The first (featured) image attached to the product.

The first (featured) media attached to the product.

Tip

You can use media filters to output media URLs and displays. To learn about how to include media in your theme, refer to Support product media.

Anchor to
first_available_variant

The first available variant of the product.

For a variant to be available, it needs to meet one of the following criteria:

  • The variant.inventory_quantity is greater than 0.
  • The variant.inventory_policy is set to continue.
  • The variant.inventory_management is nil.

Returns true if the product is a gift card. Returns false if not.

The handle of the product.

Anchor to
has_only_default_variant

Returns true if the product doesn't have any options. Returns false if not.

The ID of the product.

Anchor to
images
array of image

The images attached to the product.

Anchor to
media
array of media

The media attached to the product, sorted by the date it was added to the product.

Tip

You can use media filters to output media URLs and displays. To learn about how to include media in your theme, refer to Support product media.

Anchor to
metafields

The metafields applied to the product.

Tip

To learn about how to create metafields, refer to Create and manage metafields or visit the Shopify Help Center.

Anchor to
options
array of string

The option names of the product.

Example
Output the options

You can use the size filter with dot notation to determine how many options a product has.

{% if product.options.size > 0 -%}
{% for option in product.options -%}
- {{ option }}
{%- endfor %}
{%- endif %}

Output

- Size
- Strength
Anchor to
options_by_name

Allows you to access a specific product option by its name.

Example
Output the values for a specific option

When accessing a specific option, the name is case-insensitive.

<label>
Strength
<select>
{%- for value in product.options_by_name['strength'].values %}
<option>{{ value }}</option>
{%- endfor %}
</select>
</label>

Output

<label>
Strength
<select>
<option>Low</option>
<option>Medium</option>
<option>High</option>
</select>
</label>
Anchor to
options_with_values

The options on the product.

The lowest price of any variants of the product in the currency's subunit.

Note

This is the same value as product.price_min.

The value is output in the customer's local (presentment) currency.

For currencies without subunits, such as JPY and KRW, tenths and hundredths of a unit are appended. For example, 1000 Japanese yen is output as 100000.

Tip

Use money filters to output a formatted price.

The highest price of any variants of the product in the currency's subunit.

The value is output in the customer's local (presentment) currency.

For currencies without subunits, such as JPY and KRW, tenths and hundredths of a unit are appended. For example, 1000 Japanese yen is output as 100000.

Tip

Use money filters to output a formatted price.

The lowest price of any variants of the product in the currency's subunit.

Note

This is the same value as product.price.

The value is output in the customer's local (presentment) currency.

For currencies without subunits, such as JPY and KRW, tenths and hundredths of a unit are appended. For example, 1000 Japanese yen is output as 100000.

Tip

Use money filters to output a formatted price.

Anchor to
price_varies

Returns true if the product's variant prices vary. Returns false if not.

Anchor to
published_at

A timestamp for when the product was published.

Tip

Use the date filter to format the timestamp.

Anchor to
quantity_price_breaks_configured?

Returns true if the product has at least one variant with quantity price breaks in the current customer context. Returns false if not.

Anchor to
requires_selling_plan

Returns true if all of the variants of the product require a selling plan. Returns false if not.

Note

A variant requires a selling plan if variant.requires_selling_plan is true.

Anchor to
selected_or_first_available_selling_plan_allocation

The currently selected, or first available, selling plan allocation.

The following logic is used to determine which selling plan allocation is returned:

Selling plan allocationReturn criteria
The currently selected allocationReturned if a variant and selling plan are selected.

The selected variant is determined by the variant URL parameter, and the selected selling plan is determined by the selling_plan URL parameter.
The first allocation on the first available variantReturned if no allocation is currently selected.
The first allocation on the first variantReturned if no allocation is currently selected, and there are no available variants.

If the product doesn't have any selling plans, then nil is returned.

Anchor to
selected_or_first_available_variant

The currently selected or first available variant of the product.

Note

The selected variant is determined by the variant URL parameter. The selected_variant parameter is available on product pages only.

For a variant to be available, it needs to meet one of the following criteria:

  • The variant.inventory_quantity is greater than 0.
  • The variant.inventory_policy is set to continue.
  • The variant.inventory_management is nil.
Anchor to
selected_selling_plan

The currently selected selling plan.

If no selling plan is selected, then nil is returned.

Note

The selected selling plan is determined by the selling_plan URL parameter.

Anchor to
selected_selling_plan_allocation

The currently selected selling plan allocation for the currently selected variant.

If no variant and selling plan are selected, then nil is returned.

Note

The selected variant is determined by the variant URL parameter, and the selected selling plan is determined by the selling_plan URL parameter.

Anchor to
selected_variant

The currently selected variant of the product.

If no variant is currently selected, then nil is returned.

Note

The selected variant is determined by the variant URL parameter. This URL parameter is available on product pages URLs only.

Anchor to
selling_plan_groups

The selling plan groups that the variants of the product are included in.

Anchor to
tags
array of string

The tags of the product.

Note

The tags are returned in alphabetical order.

Anchor to
template_suffix

The name of the custom template of the product.

The name doesn't include the product. prefix, or the file extension (.json or .liquid).

If a custom template isn't assigned to the product, then nil is returned.

The title of the product.

The type of the product.

The relative URL of the product.

If a product is recommended, then the URL contains tracking parameters:

/products/gorgeous-wooden-computer?pr_choice=default&pr_prod_strat=description&pr_rec_pid=13&pr_ref_pid=17&pr_seq=alternating
Anchor to
variants
array of variant

The variants of the product.

Note

Returns a maximum of 250 variants when unpaginated. Tip: Use the paginate tag to choose how many variants to show per page, up to a limit of 50.

Anchor to
variants_count

The total number of variants for the product.

The vendor of the product.

{
"available": true,
"category": {},
"collections": [],
"compare_at_price": "25.00",
"compare_at_price_max": "25.00",
"compare_at_price_min": "25.00",
"compare_at_price_varies": false,
"content": "<h3>Are you low on health? Well we've got the potion just for you!</h3>\n<p>Just need a top up? Almost dead? In between? No need to worry because we have a range of sizes and strengths!</p>",
"created_at": "2022-04-13 14:46:16 -0400",
"description": "<h3>Are you low on health? Well we've got the potion just for you!</h3>\n<p>Just need a top up? Almost dead? In between? No need to worry because we have a range of sizes and strengths!</p>",
"featured_image": {},
"featured_media": {},
"first_available_variant": {},
"gift_card?": false,
"handle": "health-potion",
"has_only_default_variant": false,
"id": 6786188247105,
"images": [],
"media": [],
"metafields": {},
"options": [
"Size",
"Strength"
],
"options_by_name": {},
"options_with_values": [],
"price": "10.00",
"price_max": "22.00",
"price_min": "10.00",
"price_varies": true,
"published_at": "2022-04-13 14:53:34 -0400",
"quantity_price_breaks_configured?": false,
"requires_selling_plan": false,
"selected_or_first_available_selling_plan_allocation": {},
"selected_or_first_available_variant": {},
"selected_selling_plan": null,
"selected_selling_plan_allocation": null,
"selected_variant": null,
"selling_plan_groups": [],
"tags": [
"healing"
],
"template_suffix": "",
"title": "Health potion",
"type": {},
"url": {},
"variants": [],
"variants_count": 9,
"vendor": "Polina's Potent Potions"
}
Was this section helpful?