Product grid

The collection page workhorse: faceted filtering, sorting, up to two editorial tiles, a filter drawer on small screens, a price range control, quick view, and pagination. The popup is configured globally in Theme settings → Quick view.

Merchant-addable
No — template section
Settings
36
Block types
1
Max blocks
2
File
sections/product-grid.liquid

Used by default on: Collection, collection.concern

When to use it

Every collection page.

Setting it up

  1. Add the section to the collection template.
  2. Set products per row and per page under Products and Grid layout.
  3. Turn on the facets you actually have data for under Filtering and sorting. Filters themselves come from the free Search & Discovery app, not from the theme.
  4. Configure Card actions for quick add and quick view, then set the popup’s media, content, purchase options, and style in Theme settings → Quick view. Choose options action selects Variant popup (the default) or Product page. Variant popup opens a compact purchase popup with variants, quantity, and Add to cart; the separate Quick view button opens the full media preview. Gift-card cards omit the extra View product action while quick view is enabled; the image, title, and popup still lead to the product page for recipient details.
  5. Choose Pagination style, then set Spacing and color.
  6. Optionally choose Add block → Editorial tile. Add an image, heading, body text, or a link with link text. Choose Tile width: 1 column, 2 columns, or Full row (default), then set Grid position and the tile’s Color scheme. Add up to two tiles.

Where the content comes from

Shopify owns products, variants, prices, availability, and the filter definitions. The section owns layout and which controls appear. Editorial tile blocks own their images, copy, links, widths, and grid positions; no metafields are required.

Notes and cautions

  • A "Vendor" filter on a single-vendor store is clutter. Only enable facets that split your catalog meaningfully.
  • Filtering works with JavaScript disabled — it submits and reloads — and gets faster once JavaScript loads.
  • Show product type tabs needs a Product type filter in Search and Discovery with at least two types in the collection. Product type tabs retain their selected product type when filtering or sorting. Clearing the maximum price restores the full range. If load more or infinite scroll fails, a visible retry link stays available; automatic scrolling resumes after a successful retry.
  • Editorial tiles can span one column, two columns, or a full grid row. Mobile caps the span to the available columns. Wide desktop tiles use a 40% image and 60% copy split and grow for longer text; images stack above copy in tiles up to 520px wide and on mobile. Tiles appear only on the first results page. Grid positions count products and tiles together; tiles at positions 4 and 7 become the fourth and seventh items. Equal positions follow block order. A wide mosaic card still counts as one item. A full-row tile starts a new row even when the preceding product row is incomplete; narrower tiles wrap only when they cannot fit in the remaining columns.
  • Tiles remain in the first page after sorting and filtering, but hide when too few products remain to reach their position. Load more and infinite scroll append products without repeating tiles; product counts exclude tiles.
  • Color filter display applies to any filter named Color or Colour, and to filters set to show swatches in Search & Discovery. For Swatches, set a color or image on each value in Search & Discovery; a value without one uses its name, so a name like Mocha shows a neutral circle.

Editorial tiles inside the collection grid

The Product grid section can insert up to two Editorial tile blocks among the collection’s products. Use them for a formulation standard, a campaign story, or a link to a routine builder. The blocks are optional; removing both leaves the collection grid intact. Each collection template holds one Product grid, the collection’s main product list. All tile widths use a soft card shadow, following the selected color scheme’s shadow color, to separate editorial content from the product grid.

Add a tile

  1. Open a collection template in the theme editor and select Product grid.
  2. Choose Add block → Editorial tile.
  3. Add an optional Image, Heading, and Body text. Without an image, the tile presents its copy on the chosen color scheme. In wide desktop tiles with copy, images fill 40% of the tile and the text uses the remaining 60%. Tiles up to 520px wide stack the image above the copy. The banner starts between 280 and 360px tall and grows when longer copy needs more room. Images fill their column using the Shopify focal point; on mobile, they stack above the text with a 4:3 crop. An image without copy uses a 16:7 crop on desktop and 4:3 on mobile. 2000 x 1500px .jpg is recommended. Add meaningful image alt text in Shopify’s media editor.
  4. To add a call to action, set Link, then enter Link text. The link appears only when both are filled. Link text is available once a destination is selected. The action matches the blog posts’ Read more link, with a line arrow and the global text hover treatment. The arrow extends on hover or keyboard focus when interface motion is enabled and the customer has not requested reduced motion.
  5. Choose Tile width: 1 column, 2 columns, or Full row (default). Columns match product tile widths. Mobile limits a two-column tile to the available one or two columns.
  6. Set Grid position, from 1 through 26, then choose the tile’s Color scheme.

The heading and body defaults provide a text tile immediately. Replace them with your own copy. Only publish formulation and certification claims that apply to your products.

Set positions

Positions count products and editorial tiles together, starting from 1 on the first results page. For example, with at least five products and two blocks:

Grid itemContent
1–3Products 1–3
4Editorial tile with Grid position 4
5–6Products 4–5
7Editorial tile with Grid position 7

Choose different positions to place the tiles separately. If both request the same position, the first block in the editor appears there and the second takes the next slot. Reordering blocks breaks these ties; different positions determine their own order. Duplicating a block preserves its content, width, and position, so change its position to separate it from the original.

Tile width controls how much of the row each block occupies. A one-column tile sits beside products; a two-column tile uses the width of two products plus the gap between them. If there is insufficient room, the tile starts on the next row. Full row starts a new row after its preceding items, and the next product starts another row. Any unused columns stay empty; products keep their original reading order. For example, position 4 follows three products, even when the desktop grid has four columns. A wide product in Mosaic still counts as one item, so Grid position describes reading order rather than a particular row or column. The grid continues to show the selected number of products per page; tiles add to that number.

Filtering, sorting, and pagination

Show product type tabs turns the Product type filter into tabs above the grid, set by Product type tabs alignment. They need a Product type filter in the Shopify Search and Discovery app and at least two product types in the collection; otherwise the setting has no effect and Product type stays in the filters. Tab labels show product types exactly as written. Product type tabs keep the selected product type when shoppers change another filter or sort order, including when JavaScript is disabled. Rapid filter changes show the results of the latest selection. Clearing the maximum price restores the collection’s full price range. Price filter values work in any currency format, including ones with a comma decimal separator such as 12,50.

Color swatch filters show a focus ring and the color name for keyboard focus, touch, and hover, and mark a selection the moment it is tapped. A struck-through compare-at price always belongs to a variant at the price shown beside it; when prices vary, the Sale badge says only “Sale”.

Tiles appear only on the first results page. Sorting and filtering render them again at their configured positions. Numbered pages after page 1 contain products only. Load more and Infinite scroll append products without repeating the tiles, and product counts and screen reader announcements continue to count products only.

If Load more or Infinite scroll cannot load a page, a visible retry link stays available. Infinite scroll pauses automatic loading until the shopper retries successfully, then resumes.

A tile hides when the current page has too few products to reach its position. A position immediately after the last available item is allowed. In the theme editor, an unreachable tile shows a setup note so you can select it and lower Grid position. No tiles appear when there are no products, including when filters return no results.

A completely blank tile is omitted on the storefront. The editor displays a setup note in its slot so you can select it and enter content.

Content ownership

Shopify collection and product records own product selection, order, prices, variants, availability, and commerce media. Section settings own the grid layout, filters, sorting, and pagination. Editorial tile blocks own their images, headings, body text, links, color schemes, widths, and positions. They work with manual content and do not require metafields. The same collection template shares its tiles across the collections that use it; use a separate template for different editorial copy.

Product grid design

100%

Use the zoom controls, then scroll to inspect the image. Press Escape to close.

Section settings

Every setting on the section itself, in the order it appears in the theme editor. Group headings match the editor's own grouping.

Products

Product card design, badges, and swatches come from theme settings. Quick-view presentation uses shared theme defaults. Choose which shopping actions appear here.

Products per pageSlider
ID
products_per_page
Default
12
Range
4 to 24, in steps of 2

Grid layout

Products per row (desktop)Slider
ID
products_per_row
Default
4
Range
2 to 4, in steps of 1
Products per row (mobile)Dropdown
ID
mobile_columns
Default
2 columns
  • 1 column1
  • 2 columns2
Grid layoutDropdown

Mosaic shows the first product as a wide feature card on the first page.

ID
grid_layout
Default
Uniform
  • Uniformuniform
  • Mosaicmosaic
Grid spacingDropdown
ID
grid_gap
Default
Medium
  • Smallsmall
  • Mediummedium
  • Largelarge

Toolbar

Show product countCheckbox

Turn this off when the collection banner already shows the count.

ID
show_product_count
Default
On
Show product type tabsCheckbox

Shows the Product type filter as tabs above the grid instead of in the filters. Requires a Product type filter in the Shopify Search and Discovery app with at least two types in the collection.

ID
show_category_tabs
Default
On
Product type tabs alignmentDropdown

When tabs overflow, they begin on the left for horizontal scrolling.

ID
tab_alignment
Default
Center
Shown when
show_category_tabs
  • Leftleft
  • Centercenter
  • Rightright

Filtering and sorting

Enable sortingCheckbox
ID
enable_sorting
Default
On
Enable filteringCheckbox

Filter groups come from the filters you set up in the Search and Discovery settings.

ID
enable_filtering
Default
On
Filter layout (desktop)Dropdown

Sidebar shows filters beside products. Drawer opens filters off-canvas (like the cart) on all screens.

ID
filter_mode
Default
Drawer (off-canvas)
Shown when
enable_filtering
  • Sidebarsidebar
  • Drawer (off-canvas)drawer
Applied filters positionDropdown

Choose where applied filters appear on the collection page when using the drawer layout.

ID
active_filters_position
Default
Above product grid
Shown when
enable_filtering and filter_mode is 'drawer'
  • Above product gridabove_grid
  • Below product gridbelow_grid
  • Do not shownone
Sidebar widthDropdown

Width of the filter sidebar on desktop.

ID
sidebar_width
Default
Medium
Shown when
enable_filtering and filter_mode is 'sidebar'
  • Narrownarrow
  • Mediummedium
  • Widewide
Filter groups on loadDropdown

A group with an applied filter always starts open so shoppers can see what is narrowing their results.

ID
filter_group_state
Default
First group open
Shown when
enable_filtering
  • All collapsedcollapsed
  • First group openfirst
  • All expandedexpanded
Color filter displayDropdown

Applies to color filters. Swatches use the color or image set on each value in Search and Discovery, or the value name when it is a standard color.

ID
filter_color_type
Default
List (checkbox and name)
Shown when
enable_filtering
  • List (checkbox and name)list
  • Inline (checkbox and name, wrapped)inline
  • Swatches (color circles)swatch
Show results countCheckbox
ID
show_results_count
Default
On
Shown when
enable_filtering
Show price range slider trackCheckbox

Displays a visual min–max range bar above the From/To inputs.

ID
show_price_range_track
Default
On
Shown when
enable_filtering

Card actions

Show add to cart buttonCheckbox

Single-variant products go directly to the cart. Use Choose options action to set how customers select variants.

ID
show_quick_add
Default
On
Choose options actionDropdown

Choose whether products with variants open a compact purchase popup or their product page. The separate Quick view button keeps its full preview.

ID
choose_options_action
Default
Variant popup
Shown when
show_quick_add
  • Variant popupmodal
  • Product pageproduct_page
Add to cart button placementDropdown

Controls where the add to cart button appears on product cards.

ID
quick_add_display
Default
Show on media on hover
Shown when
show_quick_add
  • Below info on hoverhover
  • Always show below product infoalways
  • Show on media on hovermedia
Mobile add to cart placementDropdown

Controls the add to cart presentation below 750px.

ID
mobile_quick_add_display
Default
Show button below product information
Shown when
show_quick_add
  • Show icon on mediamedia_icon
  • Show icon below product informationbelow_icon
  • Show button below product informationbutton
Show quick viewCheckbox

Opens a popup for every product where customers can review details, select options, and add the item to cart.

ID
enable_quick_view
Default
On

Pagination

Pagination styleDropdown
ID
pagination_type
Default
"Load more" button
  • Numbered pages (1 2 3 ›)numbered
  • "Load more" buttonload_more
  • Infinite scrollinfinite
"Load more" button textText

Use {count} to show how many products the next click loads. E.g. "Load {count} more products".

ID
load_more_label
Default
Load more products
Shown when
pagination_type is not 'numbered'
End-of-results messageText

Appears after the last products load.

ID
pagination_end_text
Default
You've reached the end — no more products.
Shown when
pagination_type is not 'numbered'

Spacing and color

Top paddingSlider
ID
padding_top
Default
0
Range
0px to 100px, in steps of 4px
Bottom paddingSlider
ID
padding_bottom
Default
64
Range
0px to 100px, in steps of 4px
Color schemeColor scheme
ID
color_scheme
Default
scheme-6

Blocks

Blocks are added, reordered, duplicated, and removed inside the section. Each type has its own settings.

Editorial tile editorial_card

Content

ImageImage

Optional. 2000 x 1500px .jpg recommended. Uses the image focal point. Images appear beside text in wide tiles and above it in narrow tiles and on mobile.

ID
image
HeadingText
ID
heading
Default
Considered care for every day
Body textRich text
ID
text
Default
<p>A thoughtful routine starts with a few well-chosen essentials.</p>
LinkLink
ID
link
Link textText
ID
link_label
Shown when
link is set

Layout and color

Tile widthDropdown

Columns match product tile widths. Limited to the available columns on mobile.

ID
tile_width
Default
Full row
  • 1 column1
  • 2 columns2
  • Full rowfull
Grid positionSlider

Counts products and editorial tiles on the first results page. Tiles follow the preceding items and wrap to the next row when needed. Tiles sharing a position follow block order. Unreachable positions hide the tile.

ID
position
Default
4
Range
1 to 26, in steps of 1
Color schemeColor scheme
ID
color_scheme
Default
scheme-6