merchandising-rules
Control which products appear first in collections using automated ranking rules, manual overrides, and performance-based sorting algorithms
Best use case
merchandising-rules is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Control which products appear first in collections using automated ranking rules, manual overrides, and performance-based sorting algorithms
Teams using merchandising-rules should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/merchandising-rules/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How merchandising-rules Compares
| Feature / Agent | merchandising-rules | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Control which products appear first in collections using automated ranking rules, manual overrides, and performance-based sorting algorithms
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Merchandising Rules
## Overview
Merchandising rules control which products appear first in your collections and search results. The goal is to surface products that are likely to convert — in-stock, popular, high-margin — while giving merchandisers manual control to pin hero products, hide out-of-stock items, and boost seasonal collections. Every major platform has some built-in sorting options; apps like Searchpie, Intelligems, or SearchPie add automated performance-based ranking.
## When to Use This Skill
- When building product ranking logic for collection and category pages
- When creating automated (smart) collections based on product attributes, tags, or performance
- When implementing search result boosting and burying for merchandising control
- When adding pinning (manual placement) and slot-based merchandising to collection pages
- When measuring the revenue impact of different product ranking strategies
## Core Instructions
### Step 1: Determine your platform and choose the right merchandising tool
| Platform | Recommended Tool | Why |
|----------|-----------------|-----|
| **Shopify** | Shopify's built-in collection sorting + Kimonix or SearchPie | Shopify has built-in sort options; Kimonix and SearchPie add performance-based automated sorting with manual override capability |
| **WooCommerce** | WooCommerce's default sort + YITH WooCommerce Catalog Mode or WooCommerce Product Table | WooCommerce supports basic sorting; YITH and similar plugins add advanced catalog control |
| **BigCommerce** | Built-in Collection Sorting + SearchPie or Boost Commerce | BigCommerce has strong built-in category sorting; Boost Commerce adds advanced search merchandising |
| **Custom / Headless** | Algolia or Elasticsearch with a merchandising rules layer | Algolia has a built-in "Rules" and "Pinning" feature in its dashboard; Elasticsearch needs custom scoring rules |
### Step 2: Configure basic collection sorting
#### Shopify
**Built-in sorting options (no app needed):**
1. Go to **Products → Collections → [Collection] → Products**
2. From the "Sort" dropdown, choose:
- **Best Selling** — sorts by total units sold historically (most popular first)
- **Newest** — most recently added products first
- **Price (Low to High / High to Low)** — price-based sorting
- **Manually** — lets you drag products to specific positions
3. The "Manual" sort lets you pin specific products by dragging them to the top — useful for hero products and new launches
**Smart (automated) collections:**
1. Go to **Products → Collections → Create collection**
2. Set type to **Automated**
3. Add conditions: e.g., "Tag is equal to 'summer'" or "Product price is greater than $50"
4. Shopify automatically adds/removes products that meet the conditions
5. Set the sort order for the smart collection (Best Selling, Newest, etc.)
**Shopify Search & Discovery app (free):**
1. Install the **Shopify Search & Discovery** app from the App Store (free, by Shopify)
2. This app lets you boost specific products in search results and collection pages
3. Go to the app → Collections → [Collection] → Boost products to pin products to the top
4. Go to Bury products to push low-priority items (clearance, out-of-season) to the bottom
#### WooCommerce
**Built-in sorting:**
1. Go to **WooCommerce → Settings → Products → Default product sorting**
2. Options: Default (custom ordering), Popularity, Average Rating, Latest, Price (Low to High)
3. "Custom ordering" lets you drag products to specific positions in WooCommerce → Products
4. Enable multiple sort options for customers in WooCommerce → Settings → Products → Enable sorting
**Category product display (manual control):**
1. Go to **Products → Categories → [Category] → Products tab**
2. Drag products to reorder them within the category page
3. For programmatic control: install **WooCommerce Custom Order / Alphabetical Order** plugin
#### BigCommerce
1. Go to **Products → Product Categories → [Category]**
2. Click the **Sort** tab to set the default sort order for the category
3. Options: Name, Price, Date, Sales (best selling), Featured, Manual
4. "Manual" sort allows dragging products into specific positions
5. "Featured" sort shows products marked as "Featured" first, then falls back to the default
**BigCommerce Search:**
- BigCommerce's search returns results based on relevance by default
- To boost specific products in search: mark them as "Featured" or add keywords in the product SEO fields
- For advanced search merchandising: install **Boost Commerce** from the BigCommerce App Marketplace
### Step 3: Set up performance-based automated ranking
Performance-based ranking automatically promotes products that are selling well and pushes down slow-movers. This typically requires an app.
#### Shopify — Kimonix
1. Install **Kimonix** from the Shopify App Store (paid, starts ~$30/month)
2. Kimonix connects to your Shopify analytics and builds a score for each product based on:
- Sales velocity (recent units sold)
- Conversion rate (add-to-cart rate from collection)
- Inventory level (deprioritize products about to go out of stock)
- Margin (optional, if you've entered cost data)
3. Configure the weighting in Kimonix → Strategies: e.g., 50% sales velocity, 30% conversion rate, 20% inventory
4. Kimonix re-sorts the collection automatically on a schedule (hourly, daily, or triggered by events)
5. Override: manually pin products to specific positions — Kimonix respects manual pins and sorts the rest by algorithm
**Using Shopify Search & Discovery (free) for simpler boosts:**
1. Open the Search & Discovery app
2. Under Collections, select a collection and click "Add boost"
3. You can boost by product tag (e.g., boost all products tagged "new-arrival"), specific products, or product type
4. "Bury" works the same way for clearance items or out-of-season products
#### WooCommerce
**Using YITH WooCommerce Ajax Product Filter + WooCommerce Visual Products Configurator:**
- For basic automated sorting based on sales: WooCommerce's built-in "Sort by Popularity" uses a `total_sales` meta field that increments with each sale
- For advanced scoring: install **Booster for WooCommerce** which adds weighted product sorting based on custom criteria
#### BigCommerce — Boost Commerce
1. Install **Boost Commerce** from the BigCommerce App Marketplace
2. Boost Commerce adds smart sorting (by revenue, conversion rate, or custom score) to your category pages
3. Create "Merchandising Rules" in Boost Commerce to pin, boost, or bury specific products
4. Set up time-limited rules for seasonal campaigns (e.g., boost "winter" tagged products Dec–Feb)
### Step 4: Set up search result merchandising
#### Shopify
**Shopify Search & Discovery — search boosts:**
1. Open the Search & Discovery app → Search
2. Under "Boosts", click "Add boost" for specific search queries
3. Example: for the query "jacket", boost products tagged "featured-jacket" to the top
4. Under "Synonyms": add common spelling variations (e.g., "t-shirt" = "tshirt" = "tee")
5. Under "Product filters": configure which filters appear on search results (price, color, size, etc.)
#### WooCommerce
- **WooCommerce Product Search** plugin (WooCommerce.com) adds relevance-based search
- Configure search weights: title weight = 5, tag weight = 3, category weight = 2, description weight = 1
- For advanced merchandising: use **SearchWP** with its WooCommerce integration to create custom search rules
#### Custom / Headless — Algolia
1. Sign up at algolia.com and install the Algolia client in your store
2. Push your product catalog to Algolia with a background job
3. In Algolia's dashboard → Rules, create merchandising rules:
- Pin a product to position 1 for a specific query
- Boost products with a specific attribute (e.g., `in_stock: true`)
- Bury products with `clearance: true`
4. Custom ranking: in Algolia → Indices → Ranking → Custom Ranking, add:
- `desc(sales_30d)` — sort by recent sales descending
- `desc(conversion_rate)` — secondary sort by conversion rate
5. Algolia updates rankings in real time as you push new product metrics to the index
### Step 5: Custom / Headless — scoring engine
```typescript
// Compute a merchandising score for a set of products
interface ProductMetrics {
productId: string;
unitsSold30d: number;
revenue30d: number;
conversionRatePct: number; // (add-to-carts / page views) × 100
grossMarginPct: number;
daysInStock: number; // 0 = out of stock
daysSinceAdded: number;
}
interface ScoreWeights {
salesVelocity: number; // e.g., 0.35
revenue: number; // e.g., 0.20
conversion: number; // e.g., 0.20
margin: number; // e.g., 0.15
recency: number; // e.g., 0.10 (newer products get a boost)
}
function scoreProducts(metrics: ProductMetrics[], weights: ScoreWeights): { productId: string; score: number }[] {
// Normalize each metric to 0–1 range across the set
const normalize = (values: number[]) => {
const min = Math.min(...values);
const max = Math.max(...values);
return values.map(v => max === min ? 0.5 : (v - min) / (max - min));
};
const salesScores = normalize(metrics.map(m => m.unitsSold30d));
const revenueScores = normalize(metrics.map(m => m.revenue30d));
const conversionScores = normalize(metrics.map(m => m.conversionRatePct));
const marginScores = normalize(metrics.map(m => m.grossMarginPct));
// Recency: newer = higher score (invert daysAdded)
const recencyScores = normalize(metrics.map(m => -m.daysSinceAdded));
return metrics.map((m, i) => {
const score =
salesScores[i] * weights.salesVelocity +
revenueScores[i] * weights.revenue +
conversionScores[i] * weights.conversion +
marginScores[i] * weights.margin +
recencyScores[i] * weights.recency;
// Out-of-stock products get pushed to the bottom
const adjustedScore = m.daysInStock === 0 ? score - 2 : score;
return { productId: m.productId, score: Math.round(adjustedScore * 1000) / 1000 };
}).sort((a, b) => b.score - a.score);
}
```
## Best Practices
- **Bury out-of-stock products, don't exclude them** — out-of-stock products should still appear in search (for SEO and wishlists) but rank lower; only completely remove discontinued products
- **Refresh scores daily, not on every page load** — pre-compute and store product scores; computing scores in real time on every collection request is too slow
- **Pin hero products and new arrivals manually** — automated scoring is good for the long tail; manually pin the 3–5 key products you're actively promoting each season
- **Provide a preview mode before applying new rules** — the Shopify Search & Discovery app and Kimonix both offer preview functionality; use it to verify the collection order before pushing live
- **Cap the number of pinned products** — if you pin too many products, the algorithm never gets to show other products; keep manual pins to ≤ 5 per collection
## Common Pitfalls
| Problem | Solution |
|---------|----------|
| Best-selling products dominate every collection indefinitely | Add a recency weight and a "new product boost" for items added in the last 14 days; this gives new products a chance to get exposure |
| Merchandising rule conflicts with another rule | In Shopify Search & Discovery and Kimonix, rules have priority order — define which rules override others and document the priority scheme |
| Smart collection adds products that shouldn't be there | Review your collection conditions carefully; using "any condition" instead of "all conditions" is the most common cause of unintended inclusions |
| Performance scores skewed by a single viral day | Use a rolling 30-day window for sales metrics, not all-time totals; cap extreme outliers at the 95th percentile |
## Related Skills
- @multi-channel-selling
- @demand-forecastingRelated Skills
price-rules-engine
Define stackable pricing rules with priority ordering, customer-segment targeting, product exclusions, and automatic discount combination logic
wishlist-save-for-later
Let shoppers save products to a wishlist, share it with friends, and get notified when saved items come back in stock or drop in price
storefront-theming
Build a themeable storefront with design tokens and CSS custom properties that supports white-labeling, multi-brand variants, and dark mode
search-autocomplete
Speed up product discovery with instant search suggestions, fuzzy typo matching, and category-aware results powered by Algolia or Elasticsearch
responsive-storefront
Build a mobile-first storefront with thumb-friendly navigation, sticky add-to-cart buttons, and touch-optimized components for high mobile conversion
recently-viewed-products
Show shoppers the products they recently browsed using browser storage so they can easily pick up where they left off on your store
quick-view-modal
Let shoppers preview product details and add items to cart from the listing page without navigating away, reducing friction in the shopping flow
product-page-design
Design high-converting product detail pages with image galleries, variant selectors, social proof, and clear calls-to-action that drive add-to-cart
product-comparison
Let shoppers select multiple products and compare them side-by-side in a table with highlighted differences to help them make the right buying decision
mega-menu-builder
Build a rich navigation mega menu with product images, category highlights, featured banners, and keyboard-accessible dropdowns for large catalogs
image-zoom-360
Boost product confidence with high-res image zoom, 360-degree spin views, and inline video so shoppers can examine products closely before buying
faceted-navigation
Let shoppers filter products by multiple attributes simultaneously with URL-shareable filter state, instant results, and mobile-friendly controls