Multi-warehouse with MSI — how does prioritization actually work?
Categories:
Magento for Electronics
Magento MSI (Multi-Source Inventory, native since 2.3) handles N warehouses with a priority-and-rule-based algorithm:
- Sources: define each warehouse + drop-ship vendor as a "source" with location coordinates, contact, enabled/disabled flag.
- Stocks: define which sources serve which sales channels. E.g. EU stock = "Berlin warehouse + Rotterdam warehouse + drop-ship vendor X". US stock = "Dallas warehouse + drop-ship vendor Y".
- Reservations: when an order is placed, MSI reserves inventory logically (without decrementing source qty) until the order ships. This prevents oversells across concurrent orders.
- Source selection algorithm (SSA): at fulfillment time, MSI picks the source(s) by priority (lowest priority number wins), distance from shipping address, and stock-availability rules. Native algorithms: "priority" (use the highest-priority source first), "distance" (use closest source). Custom algorithm via plugin: weighted score — e.g. Dallas first if >30 SKUs in stock, drop-ship vendor only if Dallas + Reno are out.
Common gotchas: (1) SSA is slow on category pages with 50k+ products — use cataloginventory_stock_status indexer with "Update on Schedule"; (2) drop-ship vendors should be flagged as "use stock from external source" so qty doesn’t drift; (3) partial-shipment splits work but require checkout customization to show "ships from 2 warehouses" to the customer.
Was this helpful?