Fulfillment
Your warehouse team picks items off shelves, packs them into parcels, and hands them off to a carrier. This page covers how Carriyo models that work.
Carriyo represents this stage with three entities, Pick, Pack and Customer collection, that operate on a fulfillment order already created by the Orders stage.
If a WMS outside Carriyo does the picking and packing, Pick and Pack don't enter the picture. See the External WMS shape on the Orders page.
The model
The fulfillment order is the unit of fulfillment work. Each fulfillment order has line items that move through this status ladder during the warehouse stage:
allocated → pick_in_progress → picked → pack_in_progress → fulfilled
│ │ │ │ │
└ ready for pick └ pick created └ pick completed └ pack created └ pack completed
allocated ─── pack created without a pick ────▶ pack_in_progress
Picking is optional. A pack accepts allocated line items
directly, so a line item can go straight from allocated to
pack_in_progress.
A Pick is a unit of picking work: one or more line items that an operator collects together. A Pack is a unit of packing work: items being consolidated into parcels at a packing station. Both have their own lifecycles (see Pick and Pack).
The line-item statuses above are how the fulfillment order
learns that pick / pack work is in progress. The fulfillment
order's own status (open, allocated, processing,
fulfilled, cancelled, closed) stays coarser-grained; it
doesn't track pick / pack progress directly.
The handoff out of fulfillment
The Fulfillment stage ends when a Pack completes. Carriyo moves
the packed line items to fulfilled. What happens next depends
on the fulfillment order's delivery_method:
- Delivery (
DELIVERY). Each Shipment created from the pack moves toready_to_shipshortly after the pack completes, once it has a carrier. The shipment-status webhook fires forready_to_ship. Shipping takes over. - Local collection (
COLLECTION). The customer collects at the fulfilling location, so no shipment is created. Carriyo creates a customer collection to track the handover, including OTP verification. - Remote collection (
COLLECTION). The parcel is shipped to another location and collected there. The shipment moves toready_to_shipas for delivery, and Carriyo also creates a customer collection for the handover at that location.
See Customer collection for the collection lifecycle.
Pick, Pack and Collection have no webhooks of their own, and most of their operations send no order webhook either. Two pack operations do. Creating a shipment from a pack sends an order webhook for the shipped line items. Completing a pack sends one order webhook per fulfillment order it fulfills. No pick or collection operation sends one, collecting included. To follow that work, poll the order or read the pick, pack or collection.
Configuration
In the Fulfillment App: You configure pick and pack settings in the Fulfillment App's Settings, not in the Carriyo Dashboard. That covers automatic pick creation, cluster and split picking, picker assignment, packing stations and bin locations.
In the Dashboard: You assign Fulfillment App permissions
(pick, pack, and ship per location) in Dashboard user
management.
See Fulfillment App for the operator-side detail.
How it fits with other modules
- Orders. The fulfillment order enters the Fulfillment stage after allocation.
- Shipping. Pack completion is what
produces a
ready_to_shipShipment. - Locations. Packing stations and bin locations are scoped per location.
- Fulfillment App. The app warehouse operators use to drive the pick → pack flow.