Back to Blog

Blog

Running Peak Orders Through Your Stores on Carriyo: Allocation, Picking and Carrier Pickup in One Place

Analyst at Carriyo·November 6, 2026·9 min read
Running Peak Orders Through Your Stores on Carriyo: Allocation, Picking and Carrier Pickup in One Place

Running Peak Orders Through Your Stores on Carriyo: Allocation, Picking and Carrier Pickup in One Place

On Wednesday we wrote about whether stores should fulfil online orders this peak, and the answer was that it depends on things most retailers only find out about in the second week of December: store stock accuracy, store capacity, split shipments, carrier pickups and returns. This post is about how we handle those on Carriyo. We built the order management side and the shipping side as one system, and store fulfilment is where that matters most. We expanded into distributed order management and fulfilment in August and described the store use case in June; this is the full path from an order arriving to a courier leaving the store.

Deciding whether a store should take the order

Our order allocation module runs in three modes. An order can arrive already allocated by your own OMS, in which case we respect the decision. It can arrive unallocated with automatic allocation on, in which case our engine picks a location for each item. Or it can wait for someone in operations to allocate it by hand.

The engine works through the question in stages. It finds the locations with stock for the items, keeps the active ones whose coverage includes the delivery address, as zones or as a radius around the store, then runs your allocation rules in order, where the first rule that matches decides which locations are in or out, on conditions such as sales channel, order value or product category. Only then do the prioritisation rules narrow the field by what you care most about: the fewest splits, the most stock, or the shortest distance to the customer.

Two details matter in peak. The first is distance. In October we changed how the proximity priority ranks locations: locations in the customer's country come first, then we measure the distance from the address to every location with coordinates and keep the nearest, and any location within a kilometre of the nearest counts as equally near, so the next priority decides. Two stores in the same mall are the same distance away for every practical purpose. The second is what happens when not everything can be allocated, which is your choice. With partial allocation allowed, the items we can place go ahead and the rest sit in a separate fulfilment order with the lines cancelled. With it not allowed, the fulfilment order stays open with a reason against each line, and a person decides.

Not allocating to a store

Wednesday's piece argued that when not to use a store is the more important half. On Carriyo there are graded ways to say no. An allocation rule can exclude a store for a sales channel, a product category, or orders above a value. A store's coverage can be tightened to a smaller radius. A store can be set inactive for a day, at which point its stock becomes invisible to the engine. And a store can have its fulfilment role turned off while keeping its inventory and collection roles, so it still serves click and collect but never picks for delivery. For orders that need a human, order holds stop an order before anything is picked; hold rules put orders on hold automatically on conditions like order value, an address mismatch or payment method, and while an order is held, fulfilment operations are rejected until someone releases it. A store is kept in or out of the pool through its status, its coverage and the allocation rules.

Stock the engine can trust

All of this depends on the store stock figure being roughly right, and our inventory module is an operational mirror, not a master record. Your WMS, ERP or commerce platform stays the source of truth and feeds us snapshot events that set a position outright or adjustment events that move it. Stock is held per inventory key at each location, and when an order allocates to a store we reserve the quantity, so the next order sees on-hand minus reserved and two orders cannot be promised the same unit. The reservation clears when the parcel ships or the order is cancelled before booking. That is also why we built allocation to work without inventory at all: a merchant whose store counts are not reliable enough to allocate on can switch inventory management off and let the engine route on coverage and rules alone, then switch stock on when the data is good enough.

Picking in the store, not in a warehouse app

The people doing the work in a store are not warehouse pickers, and our Fulfilment App is built for that. It runs as a web app on a phone or tablet, pinned to one location, and scans barcodes with the device camera, so a store needs no scanner hardware. A store can run in a simple mode that skips picking and goes straight to packing, or run full pick-and-pack where the volume justifies it. Collections and returns sit alongside: a click and collect order routes to the chosen store and the handover is confirmed in the app with a one-time code, and when a store receives a return, staff record each item as ready to sell or unavailable with a reason, and at an inventory location the stock updates as they do it.

Getting the parcel out of the store

The moment a fulfilment order is packed, the shipment inherits the store as its pickup location and our shipping rules choose the carrier account by weight, route, items and attributes, in priority order, cheapest, or round robin. A carrier account can carry a network profile, so a store in a city a carrier does not serve is never offered that carrier, and a capacity profile, so once an account hits its daily booking cap or its in-flight limit the rules move to the next.

A shipment can be marked ready to ship with or without a carrier pickup request, and for carriers that collect on request, scheduling a collection from the dashboard or the API asks the carrier for the pickup at the same time. The shipment carries a pickup request status, not requested, requesting, booked or failed, and when a pickup has been requested, the shipment only moves to ready to ship once the carrier has confirmed, so a refused or unanswered pickup shows as failed instead of being assumed. From there the shipment is tracked like any other, with carrier statuses normalised into one set across the 140+ carriers we connect. The promise is computed when the shipment is created, from the order time and the location's operating schedule, and our late-shipment flags respect delivery windows and promise dates.

Three ways to run the same store

Everything above runs in three modes. From the dashboard, an operations person can open an order, see every candidate store marked available, partially available or unavailable with the quantity per item, and move it, and over the API re-run allocation as a dry run to see what the engine would do before committing. By rules, allocation, holds and carrier selection make the routine decisions without anyone looking, and for Shopify merchants the connector moves or splits the Shopify fulfilment orders to match what we decided. And by AI agents, through our native MCP layer, which exposes more than 90 tools and lets an agent read an order, move a fulfilment order to another store, split or merge it, and hold or release it, always as the user who authorised it and never beyond that user's permissions.

Why we built it this way

Last week we argued that the money in order management is going into the layer under the storefront and showed what that layer looks like on Carriyo. Store fulfilment is that same layer under peak pressure. We do not think it is a software problem so much as a data and edge-case problem, and that is why we built it as one layer rather than an OMS talking to a shipping tool. Every step touches the same order record, so when something is wrong there is one activity timeline to read, and the platform has been shaped by the orders and shipments of 100+ brands. It is also adoptable a piece at a time: a retailer can send us orders for visibility only and keep allocation in an existing OMS, turn our allocation engine on for a subset of stores, and add inventory and agents when the data is ready.

If you would like to go through how your own stores, rules and carriers would run on Carriyo before Black Friday, get in touch with our team at carriyo.com/contact.

Carriyo is The Intelligent Commerce Platform, from checkout to doorstep.

---

Sources

1. Carriyo. Changelog, release 2026.10-R9 (22 October 2026): order allocation ranks locations by distance. https://carriyo.com/docs/changelog/2026.10-R9 2. Carriyo. Changelog, release 2026.09-R4 (9 September 2026): Schedule Collection and carrier pickup requests; pickup request status. https://carriyo.com/docs/changelog/2026.09-R4 3. Carriyo. Changelog, release 2026.09-R2 (3 September 2026): late shipment flags respect delivery windows and promise dates. https://carriyo.com/docs/changelog/2026.09-R2 4. Carriyo. Changelog, release 2026.08-R7 (26 August 2026): ready to ship without a carrier pickup. https://carriyo.com/docs/changelog/2026.08-R7 5. Carriyo. Changelog, release 2026.08-R5 (13 August 2026): order holds and order hold rules. https://carriyo.com/docs/changelog/2026.08-R5 6. Carriyo. Changelog, release 2026.08-R3 (10 August 2026): order allocation without inventory management. https://carriyo.com/docs/changelog/2026.08-R3 7. Carriyo. Changelog, release 2026.06-R1 (11 June 2026): stock-aware location changes and allocation; allocate endpoint with dry run; Shopify orders follow Carriyo allocation; Fulfillment App returns. https://carriyo.com/docs/changelog/2026.06-R1 8. Carriyo. Changelog, release 2026.05-R1 (18 May 2026): order allocation rules; customer collection; Fulfillment App collections. https://carriyo.com/docs/changelog/2026.05-R1 9. Carriyo. Documentation, "Allocation engine". https://carriyo.com/docs/platform/orders/allocation/ 10. Carriyo. Documentation, "Orders", "Fulfillment orders" and "Order lifecycle". https://carriyo.com/docs/platform/orders/ , https://carriyo.com/docs/platform/orders/fulfillment-orders/ , https://carriyo.com/docs/platform/orders/order-lifecycle/ 11. Carriyo. Documentation, "Inventory". https://carriyo.com/docs/platform/inventory/ 12. Carriyo. Documentation, "Locations". https://carriyo.com/docs/platform/account-model/locations/ 13. Carriyo. Documentation, "Fulfillment" and "Fulfillment App". https://carriyo.com/docs/platform/fulfillment/ , https://carriyo.com/docs/platform/fulfillment-app/ 14. Carriyo. Documentation, "Click and collect". https://carriyo.com/docs/platform/storefront/click-and-collect/ 15. Carriyo. Documentation, "Shipping", "Automation", "Tracking" and "Carrier configuration". https://carriyo.com/docs/platform/shipping/ , https://carriyo.com/docs/platform/shipping/automation/ , https://carriyo.com/docs/platform/shipping/tracking/ , https://carriyo.com/docs/platform/carrier-configuration/ 16. Carriyo. Documentation, "Returns". https://carriyo.com/docs/platform/returns/ 17. Carriyo. MCP documentation (93 tools across 11 families; agent inherits the authorising user's permissions). https://carriyo.com/docs/mcp/ 18. Carriyo. Changelog, release 2026.10-R1 (1 October 2026): MCP order hold tools. https://carriyo.com/docs/changelog/2026.10-R1 19. Carriyo. MCP documentation, Orders tools and Fulfillment orders tools. https://carriyo.com/docs/mcp/tools/orders/ , https://carriyo.com/docs/mcp/tools/fulfillment-orders/ 20. Carriyo. Platform overview (140+ carriers). https://carriyo.com/platform 21. Carriyo. "Decide and Deliver: Carriyo Expands Into Distributed Order Management and Fulfillment" (August 2026). https://carriyo.com/blog/decide-deliver-carriyo-expands-distributed-2026-08-04/ 22. Carriyo. "Transform Every Store Into a Fulfillment Center with Carriyo" (June 2026). https://carriyo.com/blog/transform-every-store-into-fulfillment-2026-06-08/ 23. Carriyo. "Before an Agent Touches a Live Order: Holds, Rules and Permissions on Carriyo" (October 2026). https://carriyo.com/blog/agent-touches-live-order-holds-rules-2026-10-06/ 24. Carriyo. "Where Should This Order Ship From? Carriyo as the Order Management Layer, in Three Modes" (October 2026). https://carriyo.com/blog/order-ship-carriyo-management-layer-three-2026-10-28/ 25. Carriyo. "Where the Money Goes Now" and "Ten Years of Order Management Ideas" (October 2026). https://carriyo.com/blog/money-goes-merchants-buying-order-operations-2026-10-28/ , https://carriyo.com/blog/ten-years-order-management-ideas-became-2026-10-26/

Back to Blog