# MDPositions > Shopify app that automatically reorders products in collections using 13 weighted sorting criteria, plus pinned products and vendor boost. MDPositions is a Shopify embedded application that helps merchants optimize their collection product ordering. Instead of manually sorting products, merchants define sort rules combining multiple criteria with configurable weights, and the app computes a composite score per product to determine the optimal display order. ## Features - **13 Sorting Criteria**: product price, inventory quantity, stock availability, recent sales (configurable time window), creation date, product name, discount status, discount amount, discount percentage, profit margin, image count, vendor / brand, random (daily seed). - **Weighted Scoring Engine**: assign weights from 1 to 10 per criterion. Raw values are min-max normalized to [0, 1], multiplied by the weight, summed into a composite score per product, then sorted descending. - **Pinned Products**: pin specific products at the absolute top of every collection covered by a sort rule. Order between pinned products is preserved. - **Vendor Boost (Pro)**: select one or several vendors whose products are pushed to the top of every collection, sorted by your criteria. Multi-vendor with drag-and-drop ordering and per-vendor enable / disable toggle. - **Locked Positions**: pin a number of leading positions (top N) so the sorting engine never touches them. - **Automatic Scheduling**: active sort rules execute automatically on a recurring interval (every 24h on Starter, every 6h on Pro). No cron setup required. - **Multi-Collection Support**: apply a single sort rule to all collections or to a specific selection. - **Bilingual Interface**: full English and French support, auto-detected from browser language. - **Transparent Engine**: every reorder is explainable from the criteria the merchant configured, no black box, no AI hand-waving. ## Pricing - **Free**: $0/month — 1 sort rule, 3 criteria per sort, 3 collections per sort, manual execution only. - **Starter**: $9.99/month or $99.90/year — 5 sort rules, 8 criteria per sort, 20 collections per sort, automatic execution every 24h, locked positions, pinned products. - **Pro**: $24.99/month or $249.90/year — Unlimited sort rules, all 13 criteria, unlimited collections per sort, automatic execution every 6h, locked positions, pinned products, vendor boost. ## How It Works 1. Create a sort rule: pick criteria, set weights and direction, choose target collections, optionally add pinned products and (Pro) boosted vendors. 2. Execute manually or enable automatic scheduling for hands-free optimization. 3. Pipeline applied per collection: locked positions stay at top, then pinned products, then boosted vendors (sorted by criteria), then the rest of the catalog (sorted by criteria). 4. Final ordering is pushed to Shopify via the native collectionReorderProducts mutation. ## Sorting Pipeline (per collection) ``` [locked positions] -> [pinned products] -> [boosted vendor 1 sorted] -> [boosted vendor 2 sorted] -> [rest sorted by criteria] ``` ## Technical Details - Built with Remix (React Router v7) on the Shopify App Framework v4. - Uses Shopify GraphQL Admin API (version 2025-10) for product data, vendor list, and collectionReorderProducts mutation. - Min-max normalization ensures all criteria are comparable regardless of scale. - Deterministic random sorting uses daily seeds for consistent yet fresh product discovery. - PostgreSQL database hosted on Render (Frankfurt, EU region). - Three Shopify GDPR webhooks implemented (customers/data_request, customers/redact, shop/redact). - Immediate data cleanup on app/uninstalled webhook (no orphan rows during the 48h GDPR window). ## Required Shopify Scopes - read_products, write_products - read_orders - read_inventory ## Links - [Landing Page](https://mdpositions.onrender.com/) - [Privacy Policy](https://mdpositions.onrender.com/privacy) - [Terms of Service](https://mdpositions.onrender.com/cgv) ## Publisher FORTY & FREE (brand: IDOW), SARL registered in France (SIREN 925 005 753, RCS Lille Métropole), 48 allée de Baceda, 59830 Bachy, France. ## Contact contact@fortyandfree.fr