Pick the worst week, not the best demo
Every 3PL looks great in a sales meeting. The provider that wins your business is the one that handles your worst week competently: the day your inventory feed breaks, the carrier misses pickup, your peak-season volume doubles, and a marketplace decides your packing slip is non-compliant. Your evaluation should be biased toward how a 3PL behaves under stress, not toward how the slide deck looks.
The framework that follows scores six categories: WMS capability, integrations, fee structure, contract terms, service-level commitments, and references. We weight each category against your stage and channel mix, then compare providers on the same numbers. The point is not to engineer a spreadsheet. It is to make sure the conversation is about the things that matter once the contract is signed.
- Score every provider on the same six categories: WMS, integrations, fees, contract, SLA, references.
- Weighting depends on your stage. Early DTC weights integrations and SLA highest. B2B weights WMS depth and EDI highest.
- Total landed cost matters more than the headline pick rate. Demand a sample invoice.
- Read every clause about minimums, auto-renewal, and termination. These are where contracts trap you.
- Talk to two references in your category. Skip the references the 3PL provides; ask peers in a Slack channel.
The WMS is the product
A 3PL is a labor pool wrapped around a warehouse management system. The WMS decides how fast inventory shows up online, how accurate cycle counts are, how exception handling works, and how much you can self-serve before someone needs to call operations.
A WMS worth running on should let staff manage receiving, locations, picking, packing, shipping, and inventory in real time, with audit trails on every movement.[5] What separates a good WMS from a bad one is not the feature list, it is the latency between an event happening on the floor and the event being visible to you.
What to ask for in the demo
- Live inventory by SKU, lot, and location, refreshed in seconds, not in a nightly batch.
- Order status with the actual carrier scan timestamp, not the 3PL’s last-touch timestamp.
- An exception queue with a clear owner, an SLA timer, and a resolution log. If exceptions live in someone’s inbox, the system will fail at scale.
- Cycle count history with variance trends per SKU. A WMS that cannot show you yesterday’s shrink is hiding it.
- A reporting layer you can query yourself. CSV exports are fine. Read-only API access is better.
- Role-based access for ops, customer support, and finance, so your CX team is not waiting on a screenshot from the warehouse to answer a ticket.
Integrations: native, supported, custom
Every 3PL claims to integrate with everything. The honest version of that statement has three buckets. Native means the 3PL owns and maintains the integration; you turn it on and forget. Supported means a third party (often a middleware like an iPaaS) sits between you and the 3PL; the 3PL helps with config but does not own the bug fix. Custom means somebody is writing code to a generic API.
For ecommerce, expect native connections to Shopify, Amazon Seller Central, eBay, and Walmart Marketplace. For B2B, expect EDI 850 (purchase order), 856 (advance ship notice), and 810 (invoice) at minimum, plus support for retailer-specific packaging and labeling rules.[5] If you sell on TikTok Shop or a regional marketplace, ask for the integration roadmap.
| Question | What good looks like |
|---|---|
| Who owns the integration code? | The 3PL or its core platform vendor, with a public changelog |
| How do you handle Shopify multi-location inventory? | Single source of truth at the 3PL, syncing to assigned locations |
| What happens when an EDI 850 has a SKU mismatch? | Held in queue, alert to a human owner, replay supported |
| Do you publish webhooks for order status? | Yes, with idempotency keys and retries |
| Average time to add a new sales channel? | Under 2 weeks for native, 4 to 6 weeks for custom |
Compare landed cost, not headline rates
Pick rates are easy to advertise and easy to misread. The headline number a 3PL puts in front of you is almost always the per-pick fee, which is one of the smallest line items in your monthly bill. The rate that matters is the all-in landed cost per order: storage, pick, pack, materials, freight, and accessorials.
Industry guides repeatedly note that the headline pick rate is only one of several charges, and that pick fees fall in the $0.30 to $1.50 range depending on order complexity.[1][2] Asking the right comparison question changes the conversation: “For my exact order profile, what does a single average order cost me, all in, including accessorials?”
Hidden fee patterns to watch for
- Long-term storage surcharge. Common at 6+ months on the shelf, typically $10 to $25 per pallet per month on top of the base rate.[2]
- Peak season surcharges. Carriers add 15 to 30 percent during Q4, and some 3PLs pass through additional handling charges during the same window.
- Address correction fees. Charged per package when the shipping address is invalid, typically $18 to $22 per incident.[6]
- Account management fees. A flat $250 to $500/month for having a named contact. Reasonable for some, indefensible for others.
- Monthly minimums. If your bill does not hit the floor, you pay the floor. Common at $500 to $2,500/month.
- Non-compliance penalties on B2B work. Wrong label, missing ASN, late ship, $25 to $75 per incident.[6]
- Returns processing. Often quoted as a separate per-return fee, plus a per-item inspection fee. Easy to miss in the initial quote.
The $0.50 pick rate is a number for the brochure. The number that runs your business is landed cost per order, including the line items the brochure does not mention.
The contract clauses that actually bite
Most 3PL contracts are fairly boilerplate. The few clauses that quietly cost brands real money tend to be the ones around renewal, minimums, termination, and rate escalation. Read each one slowly with your finance lead before you sign.
Auto-renewal and notice windows
Most agreements include an evergreen clause that automatically renews the contract unless you give written notice within a window before the end date. The notice window is most commonly 60 to 90 days before renewal.[3] Miss it and you are locked in for another full term, often at the original rate that may now be above market.
Termination for convenience
A termination-for-convenience clause lets you exit the contract with 60 or 90 days’ notice for any reason.[3] If the 3PL refuses to grant one, ask for termination for cause with clearly defined service-level triggers (for example, fill rate below 95 percent or ship accuracy below 99 percent for two consecutive months).
Rate escalation
Look for the annual rate adjustment clause. Some contracts cap escalations at CPI; others allow uncapped increases on 30 days’ notice. The middle ground is a CPI-tied cap with a ceiling (for example, lesser of CPI or 5 percent), and a requirement that the 3PL provide cost transparency on any requested increase.[4]
Minimums
Volume minimums are often set close enough to your projected run rate that any soft month dings you. If the 3PL insists on a minimum, negotiate a quarterly average instead of a monthly floor, and a one-time waiver during the implementation window.
SLAs that actually pay out
A service level agreement without a credit mechanism is a press release. The thing that gives an SLA teeth is the credit clause: when the 3PL misses the standard, what does it cost them? Industry guidance recommends negotiating SLA credits in the 5 to 10 percent of monthly fees range for material misses.[6]
| Metric | Reasonable target | Credit if missed |
|---|---|---|
| Same-day ship cutoff (orders by 2pm) | 99% | 5% of pick-pack fees that month |
| Order accuracy | 99.7% | Cost of the misship + 5% credit |
| Inventory accuracy (cycle count) | 99.5% | 5% of storage fees that month |
| Receiving turnaround | Within 48 hours | Documented escalation |
| Inbound dock-to-stock | Within 72 hours | Documented escalation |
| Customer support response | Within 4 business hours | Documented escalation |
Credits are a backstop, not the goal. The point of writing them down is that the conversation about a miss happens automatically, with money attached, instead of becoming a negotiation every month. Most 3PLs that take the SLA seriously proactively report misses and apply credits without you asking.
Watch for self-serving definitions. “Order accuracy” that excludes anything caused by an EDI feed error is not order accuracy. “Same-day ship” that only counts orders received before 11am is not what your store promises customers. Pin the definitions before you sign.
References: skip the curated list
Every 3PL will hand you three reference customers. Talk to them. Then go talk to two more brands the 3PL did not introduce you to. Operator slack channels, founder communities, and your peer network are where the unfiltered version lives.
When you do talk to a reference, do not ask whether they like their 3PL. Ask specific questions about specific failure modes:
- Walk me through the last time something went wrong. How fast did you find out? Who reached out to you?
- How long did your last peak season take to staff up for, and who paid for the surge labor?
- How often do you reconcile cycle counts to your books? Are you confident in the inventory number on a given day?
- What is on your invoice that surprised you in the first 90 days?
- If you had to migrate off, how painful would it be?
A reference who praises customer support without naming a person is not really a reference. They are a customer who has not had a problem yet.
Onboarding is where the deal gets won or lost
Two providers can quote the same per-order rate and have wildly different implementation experiences. The 3PL that wins on a spreadsheet and loses in onboarding still costs you customer goodwill, expedited shipping fees, and weeks of leadership time. Bake the implementation plan into the comparison.
Ask each finalist for an implementation timeline with named milestones. A reasonable plan covers system integration, inbound transfer, parallel-running, and a go-live cutover. If the 3PL hands you a one-page “30 days to live” document with no named owner, treat it as a yellow flag.
| Week | Milestone | Owner |
|---|---|---|
| 1 | Kickoff, account setup, integration plan signed | 3PL PM |
| 2 to 3 | Store and ERP integration, sandbox testing | 3PL + your eng |
| 3 to 4 | Inventory transfer scheduled, ASNs sent, packaging finalized | Your ops + 3PL receiving |
| 4 to 5 | Inbound received, first cycle count, test orders pushed | 3PL receiving + WMS |
| 5 to 6 | Parallel-run with current provider, daily cutover review | 3PL ops + your CX |
| 6 to 8 | Go-live, daily check-in cadence for first 2 weeks | 3PL account team |
Your data is yours. Get that in writing.
Operational data (inventory levels, cycle count history, pick paths, exception logs, carrier scans) is some of the most valuable institutional knowledge your business generates. The contract should make clear that this data is yours, that you can export it on demand, and that on exit the 3PL provides a clean export plus a reasonable transition period.
Ask the legal team to confirm three things in the Master Services Agreement: data ownership clause names you as the controller of operational data; export clause gives you machine-readable exports on demand and on exit; transition support clause obligates the 3PL to support a reasonable handover (typically 30 to 90 days) at agreed rates if you switch providers.
The 3PLs that resist these clauses tend to be the same ones whose retention is built on switching cost rather than service quality. The ones who agree readily are signaling that they expect to keep your business by being good at it.
A weighted scorecard you can copy
Score each provider 1 to 5 in each category, multiply by the weight, and sum. The point is not to mechanize a decision; it is to make different team members visible to each other on where they disagree.
| Category | Weight | What you score |
|---|---|---|
| WMS capability | 20% | Real-time inventory, exception queues, reporting |
| Integrations | 20% | Native to your store, EDI if B2B |
| Fee structure | 20% | Landed cost per order on your profile |
| Contract terms | 15% | Notice window, termination, escalation, minimums |
| SLA + credits | 15% | Defined targets, real credit mechanism |
| References | 10% | Two unprompted references with specific stories |
Brands with heavy B2B exposure should rebalance toward WMS depth and EDI integrations (push them to 25 percent each). DTC brands with high SKU velocity should rebalance toward fee structure and SLA. The right weighting is the one that maps to your real failure modes.
Red flags worth walking away from
Some signals are worth treating as deal-breakers. Each one on its own is not necessarily fatal, but a cluster of two or three should send you back to the shortlist.
- No sample invoice. If the 3PL will not show you a redacted invoice from a similarly sized customer, you are guessing about the shape of the bill. Walk.
- Vague SLA language. “Best efforts,” “commercially reasonable,” or anything that does not include a number and a credit mechanism is not an SLA. It is a marketing line.
- Inability to demo a real account. If the WMS demo only shows the marketing module, ask for read-only access to a sandbox or an actual customer account. Either you get it, or you have your answer.
- No exception queue. Exceptions handled in email or chat scale linearly with headcount and break under peak. A queue with owners and timers is the difference between a 3PL and a glorified warehouse.
- Auto-renewal with no notice window. If the contract auto-renews without giving you a reasonable opt-out window, it is structured to trap you, not to serve you.
- No named operational contact. “Talk to support” is fine for tier 1 questions. For your 3PL, you need a name, an email, and a phone number tied to a person who knows your account.
The 3PL you regret choosing was not the one with the worst pitch. It was the one whose contract you skimmed because you liked the salesperson.
What to track in the first 90 days
The first 90 days of a new 3PL relationship is when you find out whether the deck matches the dock. A short weekly cadence with the 3PL account team during this window is worth more than a quarterly business review six months later.
- Same-day ship rate. Daily, by cutoff time. If the curve is not stable inside two weeks, ask for a root cause.
- Order accuracy. Misshipped orders, missing items, wrong items. Pull the data from your support tickets, not from the 3PL dashboard.
- Inventory accuracy. Reconcile cycle counts to your ERP. Variance above 0.5 percent at the SKU level needs an explanation.
- Invoice surprises. Compare the first 60 days of invoices to the quote. Every line that was not in the quote needs a reason and a paper trail.
- Response time. Time-to-first-response on operational questions. Establish the baseline early; it tends to drift up over time.
Document everything you flag and how it was resolved. You will need that record for the first quarterly review, and (if the relationship goes south) for any negotiation about credits or contract terms.
Get a quote
Run Warpspeed through your scorecard
Send us your order profile and we will return a sample invoice with the assumptions visible, an integration plan, and the contract terms in plain language. Use it to score us against whoever else is in the running.
Also useful: the fulfillment cost calculator walks through the same line items in dollar terms.