Fulfillment

Updated September 10, 20263 min read

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 to ready_to_ship shortly after the pack completes, once it has a carrier. The shipment-status webhook fires for ready_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 to ready_to_ship as 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_ship Shipment.
  • Locations. Packing stations and bin locations are scoped per location.
  • Fulfillment App. The app warehouse operators use to drive the pick → pack flow.