Order orchestration: the queue decides, and writes down why
Order orchestration software that takes a channel order from ingest to the floor with every decision logged: allocation, destination, retry, cancellation. Management by exception, not by refresh.
Verified in code 2026-09-06 · v2.0.0 to v2.19.0
From the channel to the floor without a spreadsheet in between
An order arrives from a connected store. Somebody has to decide whether it can be filled today, from which stock, on which part of the floor, and when to tell the store it shipped. In most warehouses that somebody is a person with two screens open. Here it is the fulfillment queue.
The queue takes each channel order through ingest, allocation, destination, pick, pack, ship and confirmation, and it stops only where it should: when stock is short, when a listing maps to nothing, when a carrier does not answer, when an allocation has been held past its limit. Those orders are the exceptions. They are the queue’s whole screen. Everything else moved on its own.
Every decision is a row
Orchestration that cannot explain itself is a black box with a status column. DockingWare writes a decision log for every allocation and a transition log for every status change. Which lots were considered, which bucket was drawn, why this order went to the station and that one to the walk floor, what triggered the move from allocated to picking. When an order looks wrong, the reason is already written, with a time on it.
Allocation itself is piece exact. Demand in pieces reserves pieces; a case is broken only when no conversion exists, and that fallback is logged as a decision, not buried in a quantity. The last units of a product can be held back from the channels for wholesale (a channel reserve per product), and publish and allocate read the same availability so the store is never promised what the floor cannot pick.
Three destinations, one law
An order can be dispatched to the walk floor, to a packing station, or to a pick-to-tote split where one operator picks into totes that a bench then packs. The tote is a real object with a lifecycle: bound to an order, carried, released, rebound, with named refusals when a tote is already in use or missing. The three destinations share the same inventory primitives and the same ledger, so a shipment closes the same way whichever path it took.
The channel is watched, not trusted
Connected stores go quiet, rotate secrets, and send cancellations for orders already on a truck. Orchestration treats the channel as a source to verify. Webhook signatures are checked and repaired automatically. A silence detector names a store that stopped talking and clears the alert when it speaks again. A periodic reconciliation pulls what the webhooks missed. An inbound cancellation writes a ledger witness and is refused, by name, if the order already shipped.
What it will not do for you
It will not release a stuck allocation. It records how long each order has held its stock, applies a limit per customer, lists breaches oldest first and notifies. Releasing stock someone else may be about to pick is a human call, and when a human makes it the reason is written on the ledger row with their name.
The assemble cascade (fill a listing from the direct SKU, else from the kit that builds it) exists and is off for every tenant until a pre-flight passes. A feature that can change what gets shipped is enabled on purpose, per tenant, or not at all.
Who this is for
Brands and 3PLs running several stores into one floor who are tired of the order queue being a person. Teams that have been burned by an allocation nobody can explain and want the next one to come with its reasons attached.
What you can verify
Every behaviour on this page is enforced in code with a test that failed first. The changelog names the release each one shipped in.
Questions
- What does management by exception mean in practice?
- The queue advances every order it can on its own: ingest, allocate, route to a floor destination, pick, pack, ship, confirm back to the channel. A human is asked only when the system refused to guess: stock short, mapping unknown, carrier down, allocation held too long. The queue shows those, and only those.
- How do I know why an order went to one station and not another?
- Every routing and allocation decision writes a row: what was considered, what was chosen, why. The transition log records each status change with its trigger. When an order looks wrong you read the decision, you do not reconstruct it.
- What happens if the channel goes quiet?
- A silence detector raises a named alert when a connected store stops sending, and resolves it on proof of life. Webhook verification repairs itself. A periodic reconciliation pulls orders the webhooks missed, and cancellations from the channel land with a ledger witness and never touch an order that already shipped.
- Does orchestration ever release an allocation on its own?
- No. It records how long every order has held its stock, applies a hold limit per customer, and notifies on breach. Releasing is a human decision with a written reason that rides on the ledger row with the user's name.
Related
Related terms
See how DockingWare handles this →
Ready to see it on your floor?
Early access. We onboard a small number of operations at a time.
Start Early Access