Free CSV → PDF tool

3PL Client Profitability Analyzer

Upload three CSVs (revenue, activity, shipping), plug in your monthly overhead, and get a branded PDF that ranks every client by profitability — contribution margin, fully-loaded profit, margin %, and red flags. Free, runs entirely in your browser.

3PL client profitability analyzer

1

Upload your three CSVs

Everything stays in your browser — no uploads to any server. Each card has a sample CSV so you can match the column shape exactly.

Revenue

Revenue by client

One row per client. Charge columns: storage, handling, shipping, value_add.

client, storage, handling, shipping, value_add
Activity

Activity by client

One row per client. Orders shipped, units shipped, units received, avg storage footprint.

client, orders_shipped, units_shipped, units_received, storage_footprint
Shipping Optional

Shipping margin (optional)

One row per client. What you billed the client for shipping vs. what the carrier billed you.

client, billed_to_client, carrier_cost
2

Enter your monthly overhead

These three numbers are allocated across your clients. Labor splits by activity, rent by storage footprint, overhead by revenue.

3

Analyze & download the PDF

The ranking and per-client breakdown update live below. Click download for a branded report you can hand to a partner or board.

Want the audit-grade version of this report?

This analyzer relies on what you upload. A Profit Leak Audit reconciles WMS activity, shipping invoices, rate cards, and client invoices ourselves — and ships back a per-client P&L with the line-item dollars and prioritized fixes. Free for early customers.

What this tool does

The 3PL client profitability analyzer turns three CSVs and three overhead numbers into a per-client P&L for your entire book. It allocates labor, rent, and overhead the way a finance team would, computes contribution margin and fully-loaded profit per account, and produces a ranked PDF you can hand to a partner, board, or operations lead the same afternoon.

Everything runs in your browser. CSVs never leave your device. The math is the same allocation logic we apply in our paid Profit Leak Audits — what's different is the source of the data. Here, you're uploading exports from your WMS, billing system, and shipping platform. In an audit, we reconcile those four data sources ourselves and find the gaps before the math runs.

What to upload

Three CSVs, all with a client column as the join key. Headers are case-insensitive and underscore-normalized — units shipped, Units Shipped, and units_shipped all parse the same way. Each upload card has a one-click sample CSV download so you can match the shape exactly.

  1. Revenue by client. Required. Columns: client, plus at least one of storage, handling, shipping, value_add. One row per client per month. Pull this from your billing system — it's the monthly invoice run broken into charge categories.
  2. Activity by client. Required. Columns: client, orders_shipped, units_shipped, units_received, storage_footprint. Storage footprint is unit-agnostic — pallets or cubic feet, whichever you use consistently. This comes from your WMS reporting.
  3. Shipping data per client. Optional but strongly recommended. Columns: client, billed_to_client, carrier_cost. The first column is what you invoiced the client for shipping; the second is what the carrier charged you. Without this file, shipping margin is treated as zero — fully-loaded profit will be conservative.

How the allocation works

The hardest part of building a per-client P&L isn't the revenue side — it's deciding how to split your shared costs across clients. There's no objectively correct answer; every method has trade-offs. The analyzer uses the three conventions most third-party logistics finance teams converge on:

  • Labor by composite activity score. 60% weighted by units shipped, 25% by units received, 15% by storage footprint. The shipping-heavy weighting reflects how most warehouses actually staff: pick-pack-ship is the dominant labor consumer, receiving is second, and ongoing storage maintenance is a thin third. If a denominator is zero — say, a pure-storage account with no inbound or outbound activity this period — the weight is dropped and the remaining weights re-normalize so the math stays sane.
  • Rent by storage footprint share. A client occupying 18% of your stored pallets picks up 18% of monthly rent and facilities. Floor area is the cleanest proxy because rent doesn't scale with activity once the lease is signed — square footage is what you pay for, so square footage is what you allocate.
  • Overhead by revenue share. Admin, IT, account management, sales, WMS license, executive time — split in proportion to client revenue. This is the standard convention because most overhead activities correlate loosely with revenue. It's also the easiest to defend in a conversation with a client who asks why their allocated overhead went up.

The shipping side is direct, not allocated: each client gets their own billed shipping minus their own carrier cost. If you're absorbing carrier accessorials you never recover, this is where it shows up — as a negative line in the per-client breakdown.

Reading the report

Two profit lines matter:

  • Contribution margin = revenue − direct costs (allocated labor + allocated rent + carrier cost). This is what each client contributes toward covering operator-level overhead and operator profit. A negative contribution margin is the single most urgent signal in the report — every additional order from that client makes things worse, not better.
  • Fully-loaded profit = contribution margin − allocated overhead. The dollar bottom line. A client that's positive on contribution margin but slightly negative on fully-loaded profit is what most operators call "marginal" — they're paying their direct costs and helping cover fixed costs, but not building real margin. Those clients are usually a few rate-card adjustments away from healthy.

The four red flags the report surfaces per client are early indicators, not verdicts:

  1. Negative shipping margin. You're billing the client less for shipping than the carrier billed you. The fix is rate-card based — almost always a missing accessorial line.
  2. Contribution margin negative. Direct costs exceed revenue. This is the only flag where the math implies real action — usually a rate-card re-pricing or a structural conversation about volume.
  3. Storage cost above 25% of revenue. The client is paying for storage they're not earning back. Common in long-tail SKU portfolios with slow turnover — the fix is usually a storage-tier adjustment or a slow-mover surcharge.
  4. Margin trails portfolio average by 5+ points. The client isn't necessarily losing money, but they're meaningfully diluting your blended margin. Worth a rate-card review or a renewal conversation.

Why allocate at all?

There's a common objection: "Why bother allocating fixed costs across clients? They're fixed by definition." The answer is that fixed costs only feel fixed at the portfolio level. At the client level, every account is consuming a measurable share of those costs — and pricing decisions, contract renewals, and onboarding decisions all benefit from knowing what that share is.

The riskiest pattern in 3PL profitability is when a few healthy clients quietly subsidize a long tail of marginal accounts. Without per-client allocation, the operator sees a healthy blended margin and assumes the book is healthy. With per-client allocation, the picture looks different: 60% of accounts are pulling the average up, 30% are roughly neutral, and 10% are net-negative on fully-loaded profit. The marginal and net-negative accounts often share a profile — heavy storage, low activity, custom rate cards from years ago.

How often to run this

Monthly is the right cadence for most operators. Three exports from your WMS and billing system, ten minutes in the analyzer, and you have a steady picture of where your margin is going. Quarter-over-quarter trends are what matter most: a client that's drifted from healthy to marginal over four quarters has a contract conversation coming, and you'll want to start the conversation before the drift becomes a loss.

Two patterns to watch for specifically:

  • Margin compression on a previously healthy client. Usually means activity grew faster than revenue, or your costs rose without a rate-card update. The fix is either a renegotiation or a service-tier adjustment.
  • Shipping margin flipping negative. Often a residential surcharge or fuel pass-through that didn't make it onto the rate card. Easiest leak to fix because it's a single line item, but it can quietly compound across thousands of shipments per month.

Limitations to be aware of

The analyzer is directional, not audit-grade. Three categories of bias to keep in mind when you read the output:

  • Garbage in, garbage out. If your WMS underreports activity for some clients (a common pattern around new SKUs and VAS work), labor will be under-allocated to those clients and they'll look more profitable than they are.
  • Single-period snapshot. A heavy receiving month can make a client look worse on a monthly run if their inventory turns over slowly. Cross-check with a trailing three-month run before having a renewal conversation.
  • Overhead allocation is convention, not truth. If your overhead is dominated by support for low-revenue accounts (heavy account management, EDI integrations, custom workflows), revenue-share allocation understates cost on those clients. The analyzer's number is defensible, but it's not the only defensible answer.

For the audit-grade version — where we reconcile your raw data and produce a per-client report with line-item evidence — see our broader take on 3PL billing software, or request a free audit on the right.

Frequently asked questions

What files do I need to upload?
Three CSVs. (1) Monthly revenue by client broken into charge categories — storage, handling, shipping, value-add. (2) Monthly activity by client — orders shipped, units shipped, units received, average storage footprint (pallets or cubic feet). (3) Shipping data per client — billed-to-client amount vs. actual carrier cost. The shipping file is optional but strongly recommended; without it, shipping margin defaults to zero. Every analyzer page has a one-click sample CSV download so you can see the exact format before exporting from your WMS.
How is warehouse labor allocated to clients?
Composite activity score: 60% weighted by units shipped, 25% by units received, 15% by storage footprint. We compute each client's share of each activity, weight them by those percentages, then split your total monthly labor cost in proportion. Heavy outbound accounts pick up most of the labor; storage-only accounts pick up very little. This matches how most operators actually staff a warehouse — pick-pack-ship is the dominant labor consumer, receiving is second, and storage maintenance is a thin third.
How is rent allocated?
Strictly by storage footprint share. If a client occupies 18% of your total stored pallets (or cubic feet — whatever unit you're consistent in), they get 18% of the monthly rent/facilities number you entered. Floor area is the cleanest proxy because rent doesn't scale with activity once the lease is signed.
How is overhead allocated?
By revenue share. A client representing 22% of monthly revenue picks up 22% of admin, IT, account management, and other operator-level overhead. This is the standard 3PL convention because most overhead activities (account management, EDI integration support, executive time) correlate loosely with revenue. If your overhead is dominated by ops support for low-revenue accounts, the allocation will understate cost on those clients — note it in your read of the report.
What's the difference between contribution margin and fully-loaded profit?
Contribution margin is revenue minus direct costs (allocated labor + allocated rent + carrier shipping cost). It's what each client contributes toward covering operator-level overhead and operator profit. Fully-loaded profit subtracts the overhead allocation as well — it's the bottom-line dollar contribution to your operating profit. A healthy client has positive both; a marginal client has positive contribution margin but slightly negative fully-loaded profit (still helping cover fixed costs, but not building margin); a problem client is negative on contribution margin (every additional order makes the picture worse).
What are the 'red flags' in the per-client pages?
Four are computed automatically. (1) Negative shipping margin — you're billing the client less than the carrier charged you for their shipments. (2) Below-portfolio-average margin — fully-loaded margin trails your portfolio average by 5+ points. (3) High storage cost relative to revenue — allocated rent exceeds 25% of the client's revenue, meaning they're paying for storage they're not earning back. (4) Contribution-margin negative — direct costs exceed revenue, which is the single most urgent signal in the report.
Does my data leave my browser?
No. Every CSV stays local. Parsing, allocation, and PDF generation all run in your browser using jsPDF — nothing transits a server, nothing is logged, nothing is stored. Close the tab and the data is gone. If you want server-side analysis with persisted history, that's what our paid Profit Leak Audit does — but the analyzer above is fully client-side.
How accurate is this versus a real audit?
Directionally accurate. The allocation logic matches what we apply in our paid audits, but it relies on the data you upload — if your WMS underreports activity, or your shipping invoice exports are incomplete, the analyzer reflects those gaps. The strongest move is to run this monthly with your three CSV exports as a steady operating-cadence diagnostic, then commission a deeper audit once you spot a pattern (a chronic loser, a margin-compressing trend, a client whose shipping margin flipped negative).