3PL & Fulfillment

Should I use a 3PL or keep fulfillment in-house, or run a hybrid? How do I decide?

Weighing a 3PL, in-house fulfillment, or a hybrid on total cost and complexity.

Last updated September 16, 2026

The pick-pack fee is not the decision. All-in cost plus routing complexity is. Most brands that "go 3PL" still keep something in-house. Name that a hybrid before you sign.

What all-in cost actually includes

All-in for a 3PL is inbound receiving, storage, pick, pack, carton, postage pass-through, returns QC, peak surcharges, account management, and the work to keep their on-hand file honest. That last item is not on the quote. Their on-hand is a file: a snapshot of their floor at close of their day. It is not a live pick face, not available-to-sell, and not valuation. You will age that file every week, rebuild expected qty from receipts, shipments, in-transit, and QC, and cycle-count the rest. All-in for in-house is rent, labor (including the people you cannot hire in November), a warehouse system, materials, and the nights you own when a carrier no-show hits a ship window. A calculator that only divides rent by daily orders will pick the 3PL at a few hundred parcels and still lose on wholesale case-pack or kits the 3PL will not touch. Storage that looks cheap in May is the line that blows up in October.

Order profile decides the model

Order profile decides the model. Single-line parcel with a stable SKU list is 3PL-friendly. Kitting, personalization, case-pack wholesale, and retailer routing guides are not. A 3PL cannot absorb a messy 850 the way your own floor can. Their warehouse shipping order needs pack size and the real ship-to before they pick. Carton labels have to match the retailer's spec. Their outage becomes your rejected 856. If you already take Target or Costco chargebacks, do not outsource the pick until the routing guide is an SOP they have tested end to end. Confirm the 850 only when you can ship (the 855). Pick against a hold. Fire the 856 when the shipment is marked done, then the 810. A 3PL that cannot return a real SCAC and carton hierarchy is not cheaper than the building you already have.

When a hybrid makes sense

Hybrid is the usual grown-up answer. Keep custom work, kits, and wholesale in a building you control. Send standard DTC parcel to a 3PL, or to East and West nodes. That is two locations, two available-to-sell numbers, and routing rules: a default warehouse per channel, a next-available rule that refuses to split a retail PO, overflow allowed on DTC. Value inventory by location. Move stock on transfer orders. In-transit sits in neither building until received. Do not publish in-transit. Do not treat either portal as a second ledger. If you cannot name which SKUs stay home and which leave, you are not ready for a hybrid. You are ready for a second portal and a month of oversells.

Run this with AI

Connect Claude or ChatGPT to your Fulfil data with the Fulfil MCP, then run this prompt on your own numbers.

You are the ops lead for a Shopify Plus brand choosing 3PL, in-house, or hybrid.
Here is: sku, order_type (parcel / kit / wholesale_case), last_30d_orders, pick_fee_3pl, storage_fee_3pl, inhouse_labor_per_order, chargebacks_90d, can_3pl_kit (yes/no), routing_guide (yes/no), preferred_node.
[paste]

Produce:
1. Per SKU family: 3PL, in-house, or hybrid, with a one-line why (cost vs profile vs EDI).
2. All-in cost the pick-fee calculator is missing.
3. Routing rules required if any SKU stays hybrid (default warehouse, no-split on wholesale).
4. SKUs that should not leave the building until a routing-guide SOP is tested.
This is a fulfillment-model choice, not a software bake-off.

See it run on
your data.

Fulfil runs inventory, fulfillment, purchasing, and accounting for scaling DTC brands in one system.