The Challenge
If you have a Shopify store with products organized into collections and subcollections, you might face a common problem: customers visiting your main collection page see all products mixed together with no way to filter by specific attributes that matter to your business.
For example, if you sell sarees with a main “Sarees” collection and subcollections like Ajrakh, Kalamkari, and Embroidery, customers landing on the main Sarees page see everything mixed up. They can’t easily filter by:
- Occasion (Marriage, Office, Casual, Party, Festival, etc.)
- Craft type (Ajrakh, Kalamkari, Embroidery, Handloom, etc.)
Understanding Shopify’s Filter Options
Shopify’s Search & Discovery app provides filtering capabilities, but the available filter sources are limited to:
Standard filters:
- Availability
- Price
- Product type
- Product vendor
- Product options (Size, Color, etc.)
Custom filters:
- Category metafields
- Product metafields
- Variant metafields
Important limitations:
- Product tags are NOT directly available as filters in Search & Discovery
- Collections cannot be used as filters within collection pages
- You cannot filter products by which collections they belong to
The Solution: Metaobjects + Metafields
The proper, non-hacky way to create custom filters with predefined dropdown values is using metaobjects combined with product metafields.
How It Works
- Metaobjects = Your predefined list of values (like a database)
- Product metafields = Fields that reference the metaobject
- Filters = Created in Search & Discovery using the metafield
Why This Approach?
- ✅ Predefined dropdown values (no typing, no typos)
- ✅ Clean and maintainable
- ✅ Official Shopify method
- ✅ Scalable for future needs
- ✅ Works with bulk editing
Step-by-Step Implementation
Step 1: Create the Metaobject
- Go to Settings → Custom data → Metaobjects
- Click “Add definition”
- Name it (e.g., “Occasions”)
- Add a field:
- Field name: “Name”
- Type: Single line text
- Turn ON “Storefront access”
- Click Save
Step 2: Add Metaobject Entries
After saving the definition:
- Click “Add entry”
- Add each value one by one:
- Marriage
- Office
- Casual
- Party
- Festival
- Engagement
- Reception
- Daily Wear
- Save each entry
Step 3: Create the Product Metafield
- Go to Settings → Custom data → Products
- Click “Add definition”
- Name: “Occasion”
- Type: Select “Metaobject reference” → choose “Occasions”
- Turn ON:
- “Filter on the product list and in the Admin API”
- “Storefront API access”
- Click Save
Step 4: Enable the Filter in Search & Discovery
- Go to Apps → Search & Discovery
- Click “Filters”
- Click “Add filter”
- Source: Select your “Occasion” metafield
- Label field for filter values: Select “Name”
- Click Save
Step 5: Add Values to Your Products
Individual editing:
- Go to Products
- Select a product
- Scroll to the “Occasion” metafield
- Select from the dropdown
- Save
Bulk editing (recommended):
- Go to Products
- Select multiple products using checkboxes
- Click “Bulk edit”
- Add the “Occasion” column
- Select values from dropdown for all products
- Click Save
Step 6: Repeat for Additional Filters
Follow the same process to create a “Crafts” filter:
- Create “Crafts” metaobject with entries: Ajrakh, Kalamkari, Embroidery, Handloom
- Create “Craft” product metafield referencing the Crafts metaobject
- Add it as a filter in Search & Discovery
- Assign craft values to your products
Important Notes
- Filters only appear when products have values assigned
- The filter won’t show on your storefront until at least one product in the collection has that metafield value set
- Metafields are filterable, not metaobjects
- The metaobject provides the predefined values, but the metafield is what becomes the filter
- Storefront access is required
- Both the metaobject and metafield need storefront access enabled for filters to work
- Bulk editing saves time
- Use bulk edit to assign the same value to multiple products at once
What Doesn’t Work (Common Misconceptions)
❌ Product tags as direct filters – While tags exist, they’re not available as a filter source in Search & Discovery
❌ Collections as filters – You cannot filter products by which collections they belong to within a collection page
❌ Simple metafield with predefined values – Standard metafield types like “Single line text” don’t offer predefined dropdown options
❌ Using Product Type or Vendor as workarounds – While these are filterable, repurposing them creates confusion and isn’t scalable
The Result
Once implemented, customers visiting your collection pages will see clean, professional filters that let them refine products by:
- Occasion (Marriage, Office, Casual, etc.)
- Craft (Ajrakh, Kalamkari, Embroidery, etc.)
- Any other custom attributes you’ve defined
This improves the shopping experience, helps customers find exactly what they’re looking for, and reduces the friction in the buying process.
Key Takeaway
While Shopify’s filtering system might seem limited at first, the metaobject + metafield approach provides a robust, scalable solution for custom product filtering. It requires more initial setup than simple tags, but delivers a professional, maintainable filtering system that grows with your business.
