Skip to content

How a run works

Each run compares two numbers for every reviewed order, oldest order first.

  • Demand is what the order still needs.
  • Stock is what each location can supply: what Shopify reports as available, which is on hand minus everything already committed or otherwise unavailable.

Incoming stock never counts. The question is what can ship now, not what could ship in a week.

Orders are judged in the order they were placed, until the stock runs out. What happens to the orders behind a shortfall depends on one choice:

  • Keep its stock reserved — nothing behind a short order ships, even when the remaining stock would cover it. Queue order over throughput.
  • Give its stock back — the orders behind it are judged against the stock the failed order released, so a later order can ship while the oldest keeps waiting. Throughput over queue order.

If an order is outside the run — because of its status or an exclusion tag — its stock stays committed. It is not available to the orders being reviewed. This is what stops the same stock being promised twice.

A merchant who wants more units in play has to widen which orders the run reviews; there is no setting that treats an excluded order’s stock as free.

Stock at one location cannot answer for an order assigned to another. Each location gets its own verdict, and an order can ship only when every location it needs can cover its own share. A short location blocks the order even when another location has plenty.

“All locations” means every active location, including ones that do not fulfill online orders and ones added later. There is no pooled, shop-wide answer, and the app does not move stock between locations.

An order with some items already on their way can either be reviewed on what is left, or skipped until the rest of it changes state.

The choice is about whether a partly-shipped order is worth judging, not about which part of it counts.

Fraud review, an address problem, an unpaid order — the hold does not change the arithmetic. The order still needs its stock.

Shippable adds its own hold alongside an existing one rather than replacing it, because the two are different reasons. Releasing works the same way:

  • Release the holds this app placed leaves everyone else’s alone.
  • Release every hold is the deliberate, broader choice.

A hold is shared coordination, not an app-owned lock. Another app or a person in the admin can release one Shippable placed.

Once an order can ship, it can stay that way

Section titled “Once an order can ship, it can stay that way”

Three ways to get that guarantee, depending on how much you want written to your orders:

Approach What you configure
Tag as the lock Add a tag when the order can ship, remove nothing on the other verdict, and have the app stop reviewing orders it tagged
Hold as the lock Place a hold when an order cannot ship, and release nothing when it can
Re-decide every run No lock: configure an action on both verdicts, and expect verdicts to change with the stock
  • Items that do not require shipping — downloads, digital gift cards — never consume inventory.
  • Untracked items are neutral: they neither need stock nor block an order.
  • Custom line items with no product are skipped the same way.

If a merchant oversells, Shopify reports a negative available quantity. The shortfall is real and the app does not hide it: orders are blocked at the point the pool runs dry, and the log shows usable going negative. That is the store’s own arithmetic, not an app error.