ワンクリックで
merchandising-rules
// Control which products appear first in collections using automated ranking rules, manual overrides, and performance-based sorting algorithms
// Control which products appear first in collections using automated ranking rules, manual overrides, and performance-based sorting algorithms
Manage supplier invoices and vendor payments with automated receipt matching, payment scheduling, early discount optimization, and reconciliation workflows
Enable wholesale and B2B sales with company accounts, custom catalogs, quote workflows, purchase orders, and net payment terms
Predict future inventory needs using historical sales data, seasonal trends, and reorder points to prevent stockouts and overstock
Launch a multi-vendor marketplace with seller onboarding, commission rules, automated payouts via Stripe Connect, and vendor dashboards
Sync your catalog and inventory across your own site, Amazon, eBay, and wholesale channels to sell everywhere from one system
Design an order management system that routes orders to the right warehouse, handles split shipments, and manages backorders gracefully
| name | merchandising-rules |
| description | Control which products appear first in collections using automated ranking rules, manual overrides, and performance-based sorting algorithms |
| category | business-operations |
| risk | safe |
| source | curated |
| date_added | 2026-03-12 |
| tags | ["merchandising","product-ranking","collections","sorting","curation","search-relevance","boosting"] |
| triggers | ["implement merchandising rules","build product ranking","automate collection curation","product sorting algorithm"] |
| tools | ["claude-code","cursor","gemini-cli","copilot","codex-cli","kiro","opencode"] |
| platforms | ["shopify","woocommerce","bigcommerce","custom"] |
| difficulty | intermediate |
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.
| 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 |
Built-in sorting options (no app needed):
Smart (automated) collections:
Shopify Search & Discovery app (free):
Built-in sorting:
Category product display (manual control):
BigCommerce Search:
Performance-based ranking automatically promotes products that are selling well and pushes down slow-movers. This typically requires an app.
Using Shopify Search & Discovery (free) for simpler boosts:
Using YITH WooCommerce Ajax Product Filter + WooCommerce Visual Products Configurator:
total_sales meta field that increments with each saleShopify Search & Discovery — search boosts:
in_stock: true)clearance: truedesc(sales_30d) — sort by recent sales descendingdesc(conversion_rate) — secondary sort by conversion rate// 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);
}
| 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 |