Collection page
Everything here is optional. The theme works without any of it.
Where content appears
The collection page is one section, Main collection, made of blocks. Blocks render in two fixed zones:
- Above the products — Collection hero, Shop by category. Marked (above) in the block list.
- Below the products — Benefit cards, SEO content, FAQ items, Related collections.
Dragging a block cannot move it between zones. Order within each zone is respected.
Blocks of the same type placed next to each other are grouped: four Benefit cards form one row, three FAQ items sit under one heading. Put a different block between them and you start a second group with its own heading.
Two sources for content below the grid
Everything under the product grid — benefit cards, SEO text, FAQs, related collections — can come from two places.
Blocks, added in the theme editor, show on every collection. Set them once and every collection page has them.
Metafields, filled in per collection, override the blocks on that collection only.
The rule is one line: a collection with its own entries uses them; every other collection falls back to the blocks.
What that means in practice
| Situation | What renders |
|---|---|
| Blocks set, collection has no metafield | The blocks |
| Blocks set, collection has metafield entries | The metafield entries — blocks ignored on that page |
| No blocks, collection has metafield entries | The metafield entries |
| No blocks, no metafield entries | Nothing at all — no empty heading |
Section listed in custom.hide_sections | Nothing, whatever the blocks or metafields say |
Where to start
Set the blocks up first. Every collection then has reasonable content immediately, and the page never looks unfinished.
Add metafields later, only for the collections that genuinely need different content. A store with forty collections might give five of them bespoke FAQs and let the other thirty-five use the blocks.
Group headings — "Frequently asked questions", "Why shop this collection" — are section settings, so they're the same everywhere. Use the [collection] token to vary them.
Hiding a section on one collection
Blocks show on every collection, and a metafield can only replace their content — never remove the section. If a particular collection shouldn't have benefit cards or an FAQ at all, use the opt-out metafield.
Set it up once
Settings → Custom data → Metafield definitions → Collections → Add definition
- Name:
Hide sections - Namespace and key:
custom.hide_sections - Type: Single line text, tick List of values
- Under Validation, tick Limit to preset choices and add these five, one per line:
categories
benefits
seo
faq
related
Without them the field is free text, and a misspelling does nothing at all — no error, no warning, the section just keeps showing. Preset choices turn it into a pick list.
Then per collection
Products → Collections → open a collection → Metafields → Hide sections → pick what to hide.
| Value | Hides |
|---|---|
categories | Shop by category, above the grid |
benefits | The benefit card row |
seo | SEO content blocks |
faq | The FAQ section |
related | Related collections |
Leave the field empty and everything shows as normal. This is per collection — hiding FAQs on one collection has no effect on any other.
Turning a section off everywhere
You don't need the metafield for that. Delete the blocks in the theme editor and leave the matching metafields unset. With no content from either source the section renders nothing — no heading, no empty space.
The order things are decided
- Section listed in
custom.hide_sections→ nothing renders - Collection has its own metafield entries → those render
- Blocks exist in the theme editor → those render
- Neither → nothing renders
Headings that name the collection
Any heading below the product grid accepts [collection], replaced with the name of the collection being viewed.
Type About [collection] once and you get "About Massage Oils" on one page, "About Bath Salts" on another. [Collection] and [COLLECTION] work too.
SEO content
The SEO content block shows the same copy on every collection by default. To vary it:
- Settings → Custom data → Collections → Add definition
- Name it
About, namespace and keycustom.about, type Rich text, save - Products → Collections, open a collection, scroll to Metafields, write its text
Collections with a value show it. Collections without one fall back to the block's copy. A block with neither renders nothing at all — no stray heading over an empty space.
For a second SEO block, repeat with another key such as custom.how_to_choose, then enter that key in the block's Per-collection metafield field.
Each block also takes an image with a left, right or text-only layout.
FAQs
FAQs are set up once and then reused. The setup has three parts, and they live in three different places in the admin — which is the part that catches people out.
| Where | What it holds | How many |
|---|---|---|
| Settings → Custom data → Metaobjects | The shape: one question, one answer | One definition, ever |
| Content → Metaobjects → FAQ | The questions themselves | One entry per question |
| Products → Collections → Metafields | Which questions this collection shows | A list — pick as many as you like |
1. Define the shape
Settings → Custom data → Metaobjects → Add definition
- Name:
FAQ - Add field
Question— Single line text - Add field
Answer— Rich text - Save
Check the keys read question and answer. Shopify shows them in small text under each field name.
Question goes first for a reason: Shopify labels each entry by its first field, so the picker on each collection shows the question itself rather than an unhelpful identifier.
This describes one question. Adding Question and Answer twice does not give you two FAQs — it gives you one broken FAQ with four boxes to fill in.
2. Write the questions
Content → Metaobjects → FAQ → Add entry
One entry per question. Write as many as you want; they aren't attached to any collection yet.
3. Add the slot on collections
Settings → Custom data → Metafield definitions → Collections → Add definition
- Name:
FAQs - Namespace and key:
custom.faqs - Select type → Metaobject → choose
FAQ - Switch the One / List control to "List of entries" before saving
If you leave it on One, the picker on each collection will only let you select a single entry — the button reads "Change" instead of "Add", and only one FAQ ever shows.
Shopify will not let you switch a saved definition from One to List. You have to delete it and recreate it. Your written questions survive; they live in Content → Metaobjects, not in the definition.
4. Assign them
Products → Collections → open a collection → scroll to Metafields → FAQs
Tick the entries you want. They render as accordions in the order they appear in the list — drag to reorder.
Reusing questions
An entry can be used on as many collections as you like. "How do I store essential oils?" written once can appear on Single Oils, Massage Oils and Diffuser Oils. Edit it in one place and every collection updates.
If something looks wrong
| What you see | Cause |
|---|---|
| Only one FAQ, picker says "Change" | The collection metafield is set to One, not List. Delete and recreate it |
| Entries listed by something unhelpful | The first field in the metaobject definition is used as the label. Drag the Question or Heading field to the top |
Answers show {"type":"root","children":... | The theme is out of date — update to 1.0.0 or later |
| Nothing at all | No entries selected on that collection, and no FAQ item blocks in the editor |
Raw Liquid like {{ collection.metafields... }} | A FAQ item block has a dynamic source connected. Open the block and disconnect it, or delete the block |
Falling back to blocks
Collections with no entries fall back to the FAQ item blocks in the theme editor. That's the simple route if you want the same questions everywhere and no metafield setup — add one block per question.
Don't connect those block fields to a dynamic source. The theme reads metafields itself; the editor's dynamic source picker is a separate mechanism and mixing the two produces raw Liquid on the page.
Structured data
FAQs output FAQPage schema. If you also place a separate FAQ section on the collection page, turn off Include FAQ structured data in the section settings so the page doesn't emit it twice.
Benefit cards
The four cards below the product grid. By default they come from Benefit card blocks in the theme editor, which means the same four cards on every collection.
To vary them per collection, use metaobjects — the same three-part setup as FAQs.
Quick win first
Headings accept [collection]. Setting a card heading to Benefits of [collection] reads correctly on every page with no metafield setup at all. The body text stays the same, so this is cosmetic — but it's five seconds of work.
1. Define the shape
Settings → Custom data → Metaobjects → Add definition
- Name:
Benefit Heading— Single line textIcon— Single line textText— Multi-line textLink label— Single line textLink url— URL
The keys must read heading, icon, text, link_label, link_url. Shopify generates them from the field names, so those exact names work — check the grey text under each field.
Shopify labels each entry by whichever field comes first. Put Icon first and your entries appear in the picker as "leaf", "truck", "heart" — with no way to tell which card is which. Heading first gives you "Made for Daily Rituals".
Already created it the other way round? Drag Heading above Icon in the definition and save. The entries update straight away.
This describes one card, not the row of four. Adding the fields five times does not give you five cards.
2. Write the cards
Content → Metaobjects → Benefit → Add entry
For Icon, type one of these names, or leave it blank for no icon:
leaf · flower · water · heart · shield-check · award · star · gift · truck · return · support · help · smile · zap · yoga · clock
A name that isn't on the list simply renders no icon — there's no error to tell you it was a typo.
What to write in each field
One entry is one card. A row of four cards means four entries.
| Field | What it is | Example |
|---|---|---|
| Icon | An icon name from the list above | leaf |
| Heading | Three or four words | Made for Daily Rituals |
| Text | 15–30 words | Small moments — a diffuser at your desk, a few drops before bed. Built into the day rather than saved for occasions. |
| Link label | Describes where the link goes | Explore daily rituals |
| Link url | Any page in your store | /collections/diffuser-oils |
Link url can be left blank — the link simply won't render.
Cards in a row size to the tallest one. A card with 60 words leaves visible gaps under the other three.
Twelve cards you can copy
Adapt the wording; the shapes are what matter.
| Icon | Heading | Text | Link label |
|---|---|---|---|
leaf | About This Range | What the collection is and who it suits, in one sentence. | Read the guide |
water | How to Use | Diffuse a few drops neat, or dilute with a carrier oil before applying to skin. | View usage guide |
heart | Made for Daily Rituals | Small moments — a diffuser at your desk, a few drops before bed. Built into the day rather than saved for occasions. | Explore daily rituals |
award | Chosen for Quality | Sourced from growers we trust and checked for consistency, so the one you reorder smells like the one you loved. | See our standards |
star | Customer Favourites | The products people come back for, ranked by what actually sells. | Shop bestsellers |
gift | Easy to Gift | Suits almost anyone, which makes it a safe choice when you don't know someone's taste. | Browse gift sets |
truck | Fast, Careful Delivery | Orders leave within one working day, packed to protect glass in transit. | Delivery information |
return | Simple Returns | Not what you expected? Send it back within 30 days, opened or not. | Read the returns policy |
support | Help Choosing | Not sure where to start? Tell us what you're after and we'll suggest two or three worth trying. | Get in touch |
help | Common Questions | Shelf life, storage, care — the questions we're asked most, answered plainly. | View FAQ |
smile | Beginner Friendly | No experience needed. Start with one, and go from there. | Start here |
clock | Long-Lasting | A little at a time means a bottle lasts months of regular use. | Usage and storage |
Several of these promise dispatch times, return windows and sourcing checks. Change or remove anything that doesn't match what you actually do.
If you sell cosmetics or wellness products, wording is regulated in most markets. Describing a scent is fine; implying it treats a condition is not.
Reuse across collections
Entries are not tied to a collection. A generic card like Simple Returns can appear on every collection while existing once — edit it in one place and all of them update.
Write collection-specific cards only where the content genuinely differs.
3. Add the slot on collections
Settings → Custom data → Metafield definitions → Collections → Add definition
- Name:
Benefits, keycustom.benefits - Type: Metaobject → Benefit
- Tick "List of entries" before saving
Leave it on One and each collection can only hold a single card. Shopify cannot convert a saved definition from One to List — it has to be deleted and recreated.
4. Assign
Products → Collections → open a collection → Metafields → Benefits → select the entries, and drag to order them.
Collections with entries show their own cards. Collections without any fall back to the Benefit card blocks. A collection with no entries and no blocks shows nothing — no empty heading.
Appearance
Under Main collection → Below the grid:
- Benefit card icon position — above the text or beside it
- Benefit card icon size — 16 to 48px
- Dividing lines between benefit cards — vertical rules on desktop. Off below 990px, where two columns are too narrow for them
Related collections
Three sources:
| Source | Behaviour | Setup |
|---|---|---|
| Automatic | Uses the other collections this collection's products belong to | None |
| Per-collection metafield | custom.related_collections, type List of collections | Per collection |
| Menu | A fixed link list, identical everywhere | One menu |
Automatic falls back to the menu when it finds nothing, so set a menu even when using Automatic.
Star ratings
Theme settings → Product cards → Review app — choose Judge.me, Loox, Yotpo, Stamped or Okendo.
Your review app's embed must also be enabled under Theme settings → App embeds. The theme places the rating slot; the app fills it.
Products with no reviews show nothing rather than empty stars.
Product badges
Sale and Sold out appear automatically. Sale shows the discount percentage.
- Bestseller, New, Limited — tag the product
bestseller,neworlimited - New also appears automatically for recent products; set the window in Theme settings
- Low stock is off until you set a threshold in Theme settings
Two badges show at most, in this order: Sold out, Sale, Bestseller, New, Low stock, Limited.
Filters
Filters come from Shopify's free Search & Discovery app. The theme renders whatever you configure there — it does not define filters itself. Without the app installed, the collection page shows no sidebar at all and the product grid takes the full width.
Install Search & Discovery, then go to Search & Discovery → Filters → Add filter.
The order you set there is the order the sidebar renders. Drag to rearrange.
Where each filter's data lives
| Filter | Source | What you need to do |
|---|---|---|
| Availability | Inventory | Nothing |
| Price | Product price | Nothing |
| Product type | The Product type field | Fill it in per product |
| Vendor / Brand | The Vendor field | Fill it in per product |
| Anything else | A product metafield or variant option | Define it, then fill it in |
Product type and Vendor
Both live on the product page, in the Product organization card.
- Product type — type a value such as
Massage Oil. Whatever you enter becomes a filter option with a product count beside it. - Vendor — the brand name.
Use consistent spelling. Massage Oil and massage oil become two separate filter options.
Custom filters with metafields
For something Shopify has no field for — benefits, scent, skin type, size — use a product metafield.
Settings → Custom data → Products → Add definition
- Name it, for example
Benefits - Namespace and key:
custom.benefits - Type: Single line text
- Tick List of values if a product can have more than one
Single line text, list of single line text, boolean, and number are filterable. Rich text and multi-line text are not — pick one of those and the metafield never appears in Search & Discovery.
Then fill it in per product, and add it as a filter in Search & Discovery.
Variant options as filters
If a product is sold in several versions of something — Scent, Size, Colour — make it a variant option rather than a metafield. Variant options are filterable automatically, and they let the customer buy the specific one.
Use a metafield instead when the attribute describes the whole product and isn't a choice at checkout. A single-scent oil has a scent; it doesn't come in scents.
Why a filter might not appear
| Symptom | Cause |
|---|---|
| No sidebar at all | Search & Discovery not installed, or no filters added |
| A filter is missing | No products have a value for it — empty filters are hidden |
| A metafield isn't offered | Its type isn't filterable. Rich text and multi-line text can't be used |
| Duplicate options like "Floral" and "floral" | Inconsistent capitalisation in the product data |
| Counts look wrong | Filter counts reflect the current filter combination, not the whole collection |
Sidebar appearance
Under Main collection → Filters in the theme editor:
- Filter groups open by default — groups beyond this number start collapsed. Every group open makes a long list hard to scan.
- Price filter — slider only, or slider plus number fields. Slider only is cleaner; the number fields make it easier to type an exact bound, and they remain available to screen readers either way.
- Keep filters visible while scrolling — sticky sidebar on desktop.
Filter groups showing more than five options get a Show more control automatically. The hidden options stay in the page, so nothing is lost.
On mobile the sidebar becomes a bottom sheet, opened from the Filter button in the toolbar. It has its own result count that updates as filters are applied.