By Luciano Vannelli

Backorder & Preorder on Shopify Plus: How I approach it

When a client comes to me with this requirement, the first thing I do is understand the context before thinking about any solution.

A few questions I always go through:

What the answers tell me

Small catalog, no ERP, tight deadline, early-stage store

An app like Globo Pre-Order or Timesact will get them live in a day. Built-in emails, waitlists, partial payments. No reason to build anything custom.

Large catalog, data coming from external systems, high revenue, team that will keep building

This is where the native Shopify architecture makes sense. Here's how I structured it for a client in that situation:

  1. A dedicated Shopify location for backorder inventory: The ERP integration writes stock there via the Admin API using inventoryAdjustQuantities. Nothing special about this location from Shopify's perspective, it's just another warehouse. But it gives you a clean separation: if a product has inventory here, it's a backorder item. That flag drives everything downstream.
  2. inventoryPolicy continuation: Optionally, set inventoryPolicy: CONTINUE on the relevant variants so they stay purchasable when stock hits zero. Whether you do this depends on the business rules. Some merchants want a hard cap, others want open-ended backorders.
  3. Metafields per variant for the real delivery time: The WMS writes the actual ETA here on each sync. Not a static "ships in 21-30 days" string, the real date. This is what makes the whole thing honest to the customer.
  4. Theme customization: Check at render time whether the product has stock in the backorder location, and if it does, show the right UI: a different button label, the delivery time from the metafield, whatever the merchant needs. This logic lives in the theme and is entirely in your control.
  5. Checkout Extension: Surface backorder information before the customer pays. If their cart has a mix of regular and backorder items, they see it clearly at checkout. No surprises after the order is placed.
  6. Cart line item properties: Mark which specific items in an order are backorder. This makes life easier for whoever processes fulfillment downstream, whether that's a warehouse team or another integration consuming the order data.
  7. Shopify Flow: A flow triggered on order creation. It checks which items came from the backorder location and tags the order accordingly, something like backorder, so it gets routed differently. What happens after the tag depends entirely on the client's fulfillment process. Could be a manual review queue, could be an integration that pauses those items, could be a notification to the warehouse. The tag is the handoff point.
  8. Location priority: In Settings → Shipping and delivery, Shopify lets you define the order in which locations are used to fulfill orders. Your backorder location must be last. If it has higher priority than your real warehouses, Shopify will pull stock from it even when inventory is available elsewhere, which defeats the entire purpose of the separation. Set it once and leave it there.

I recently went through this with a client at the larger end of that spectrum. Over a thousand variants per product family, delivery times owned by their WMS, serious monthly revenue. The app conversation lasted about five minutes before we moved on to scoping the real solution.

The thing about apps

They're not a lesser solution. For most stores they're the right call. The mistake I see is when someone skips the diagnosis and jumps straight to custom development because it feels more serious. It's not more serious, it's just more expensive and slower.

The diagnosis is the work. The solution usually follows naturally.