Fulfillment

Updated May 29, 20262 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 two first-class entities (Pick and Pack) that operate on a Fulfillment order already created by the Orders stage.

If you're fulfilling outside Carriyo, using your own WMS for pick / pack, you move the fulfillment order from allocated to fulfilled directly via the API. Pick and Pack don't enter the picture, and Carriyo learns the work is done from the fulfilled event.

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 started        └ pick completed   └ pack started     └ pack completed

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: picked items being consolidated into parcels at a packing station. Both have their own status machines (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. What happens next depends on the fulfillment order's delivery_method:

  • Standard delivery. Carriyo moves the line items to fulfilled and marks each Shipment as ready_to_ship. The shipment-status webhook fires for ready_to_ship. Shipping takes over.
  • Customer collection. Same line-item and shipment transitions, plus Carriyo creates a customer collection record to track the pickup, including the OTP verification flow. See Customer collection for the Collection entity and lifecycle.

Pick, Pack, and Collection lifecycle events themselves do not fire webhooks. Your systems learn that fulfillment work progressed by reading the affected line item statuses or by watching for the ready_to_ship shipment transition.

Configuration

In the Fulfillment App: Pick and pack settings (auto-create behavior, scan requirements, mispick handling, clustering rules, ship zones, packing stations, bin locations, printers) are all configured in the Fulfillment App's Settings, not in the Carriyo Dashboard.

In the Dashboard: User permissions for the Fulfillment App (order, pick, pack, ship, admin scopes per location) are assigned 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.