Fulfillment: wave to ship
Outbound fulfillment is a pipeline of tasks: a wave selects orders to work, picks bring the
goods, packs put them in cartons, ships get them out the door. Each stage is a task queue
with explicit completion — which is what lets many people (or agents) work a floor at once without
stepping on each other.
1 — Build and release a wave
Creating a wave plans it; releasing it generates the pick tasks. The gap between the two is
your review window — check the wave (GET /api/v1/fulfillment/waves/{id}) before release, because
after release the floor is already moving.
Wave by what constrains you: carrier cutoff times, zone, or order priority. One giant daily wave
maximises pick efficiency but means a problem order blocks everything behind it; small frequent
waves cost walking distance but degrade gracefully. Start small and frequent.
2 — Pick
The pick task tracks quantity_requested, quantity_picked, and quantity_short separately.
Complete with a short quantity rather than leaving the task open when the shelf is empty — a
short is information (trigger a backorder, a
cycle count, or both), while a
stuck-open task is just a hole in your metrics.
3 — Pack into cartons
Cartons are first-class because everything downstream is per-carton: labels, tracking numbers,
carrier weight audits, and damage claims. One order in three boxes is three cartons under one pack
task — complete the pack only when every carton is recorded.
4 — Ship
Ship completion is the event that flows outward: order status moves, the customer notification
fires, and the sync server propagates tracking to the channel the
order came from.
Complete the ship task when the carrier takes custody, not when the label prints. The gap
between label-printed and carrier-scanned is where packages get lost with no record — and a
customer told “shipped” for a box still on your dock is the most avoidable support ticket there is.
Watching the floor
The queue depths between stages are the diagnosis: picks piling up is a staffing problem, packs
piling up is a station problem, ships piling up is a carrier problem. The same three calls power a
dashboard or an agent’s decision about where to send help.