Skip to main content
Measure channel profitability for print shops: include hidden labor, returns and packaging costs

Measure channel profitability for print shops: include hidden labor, returns and packaging costs

Your P&L says direct and ecommerce make the same margin. They don't.

Most print shops track profitability at the shop level, maybe at the job level if they're disciplined. Almost nobody tracks it at the channel level. That's exactly where the money leaks.

What trips people up: your quoting math might be identical whether an order comes through a walk-in, your online storefront, or a reseller partner. Same paper, same press time, same finishing. Gross margin looks the same on paper. But the actual cost to serve each channel is wildly different once you count the invisible stuff — the CSR who spends 20 minutes re-explaining bleed, the ecommerce return that arrives back scuffed, the reseller demanding custom packaging and net-45 terms.

If you're pricing all three channels off one margin number, one of them is subsidizing the others. Usually your best customers are quietly funding your worst ones.

This post walks through building a stepwise margin model per channel — direct, ecommerce, reseller — with the hidden costs baked in, and gives you a few decision rules for pricing and fulfillment SLAs once you can actually see the numbers.

Why channel margins drift apart even when the job is identical

The gross margin on a run of 500 business cards is the paper, ink, plate/setup, press time, and finishing. That number is real. If you've already built a profitability architecture that maps capacity and true job cost into price bands, you probably trust it.

But that number stops being useful the moment the order enters a channel, because each channel adds its own tax:

  1. Direct eats sales labor. Quotes, phone calls, "can you just tweak this real quick," in-person proof approvals.
  2. Ecommerce eats returns, reprints from bad customer files, and payment processing fees — plus the packaging to ship a single small order safely.
  3. Reseller eats terms (you're financing their cash flow), volume discounts, custom labeling, and the occasional "our client rejected it, redo the whole batch."

These costs never make it into the quote engine because they don't live in the job. They live in overhead, and overhead gets spread evenly across every order regardless of where it came from. That averaging is the whole problem. It makes a clean, low-touch reseller reprint look as expensive to serve as a needy one-off direct customer, when the reality is basically the opposite.

The stepwise margin model

Step 1 — Gross margin (the number you already have). Revenue minus direct materials and direct machine/labor for the job itself. This is your job-cost output.

Step 2 — Subtract channel-specific selling labor. For direct, this is CSR and estimator time. Track it even roughly — if a direct order averages 22 minutes of human touch before it hits production, and your loaded CSR cost is around $28/hr, that's roughly $10 of labor per order that ecommerce orders mostly don't carry.

Step 3 — Subtract returns, reprints, and rework by channel. This is the big one and almost nobody splits it. Ecommerce orders reprint at a higher rate because the customer uploaded the file with no human check. Reseller orders reprint in batches when they go wrong.

Step 4 — Subtract packaging and fulfillment. Direct pickups: near zero. Ecommerce singles: box, void fill, label, the labor to pack it. Reseller: often bulk-boxed but sometimes with custom inserts or split shipments.

Step 5 — Subtract channel financial costs. Payment processing (ecommerce), terms/financing cost (reseller net-30/45), and volume discounts. Money you don't have for 45 days has a real carrying cost.

Step 6 — Subtract channel marketing/acquisition. Ad spend and platform fees for ecommerce, rep commissions or partner rebates for reseller, referral or local ad cost for direct.

If you can't tag every job, sample a rolling 90-day period to estimate channel reprint and labor rates.

What's left is your contribution margin per channel — and it's the only margin number worth pricing against.

Here's a simple workflow diagram of the stepwise margin model:

Process diagram

Use this workflow to walk your numbers down from job-level gross margin to channel contribution so you can price and set SLAs against the result.

What it looks like with numbers

Take that 500-count business card job. Say it sells for $95 and your true job cost is $52, so gross margin is $43 (about 45%). Looks great across the board. Now run each channel down the ladder:

Cost layerDirectEcommerceReseller
Sale price$95$89$76 (vol. discount)
True job cost–$52–$52–$52
Gross margin$43$37$24
Selling labor–$10–$1–$2
Returns/reprint allocation–$3–$7–$5
Packaging & fulfillment–$0.50–$5–$3
Payment/terms cost–$1–$3–$2 (net-45 carry)
Marketing/acquisition–$2–$6–$3
Contribution margin$26.50$15$9
Contribution %~28%~17%~12%

Same product. The reseller order that looked like a solid 45% job is actually keeping about 12 cents on the dollar once you count the discount, the terms, and its share of batch reprints. The direct order — the one with all the annoying phone time — is still your best channel by a decent margin.

The numbers above are illustrative, and your shop's will look different. The reseller channel might actually be your most profitable if your reprint rate is low and volumes are large enough that per-order labor rounds to nothing. That's exactly why you have to build this with your own reprint and labor data instead of assuming.

The two costs everyone gets wrong

Returns and reprints are not evenly distributed.

Ecommerce reprint rates run higher because there's no human between the customer's file and your RIP. A misplaced bleed, a low-res logo, an RGB file that shifts on press — direct customers get caught at proofing, ecommerce customers find out when the box arrives. If your storefront doesn't preflight hard, you're not running ecommerce, you're running a reprint subscription. This is also why tight ecommerce-to-production integration matters — it's the gate that keeps bad files from becoming shipped reprints.

Terms are a real cost, not a courtesy.

When a reseller pays net-45 and you're carrying that on a line of credit or your own cash, that money has a price. A rough way to expense it: annual cost of capital ÷ 12 × (days outstanding ÷ 30) × order value. On a $76 order at net-45 with a 12% cost of capital, it's small per order — but across a reseller doing $8k–$10k a month, it adds up to real money that never shows on the job ticket.

Operational decision rules once you can see the numbers

A model you don't act on is just a spreadsheet. Here are the rules worth wiring into how you price and fulfill each channel:

  1. Set a contribution-margin floor per channel, not per job. If ecommerce contribution drops below your floor (say 15%), you either raise storefront prices, add a small-order fee, or cut the reprint rate — you don't just eat it.
  2. Price the terms into the reseller number. Resellers on net-45 pay a slightly higher unit price than net-15 resellers. Make the discount for fast payment explicit. Most will take the faster-pay discount, which fixes your cash and your margin at once.
  3. Match SLA to margin. Your highest-contribution channel gets your best turnaround and priority in the queue. It's backwards to give a 12%-contribution reseller batch a rush lane ahead of a 28%-contribution direct client — but it happens constantly because the reseller "orders more."
  4. Add a small-order minimum on ecommerce. Packaging and payment fees crush tiny online orders. A $35 minimum or a flat handling fee under a threshold turns money-losing singles into break-even at worst.
  5. Charge for custom reseller packaging. If a partner wants branded inserts or split shipments, that's a line item, not a favor.

A fulfillment SLA table worth stealing

ChannelContribution tierStandard turnaroundRush available?Packaging spec
Direct (high)Top2–3 daysYes, priority laneStandard
Reseller (batch)Depends on volume3–5 daysOnly if repricedBulk unless paid custom
Ecommerce (variable)Middle3–4 daysPaid upgrade onlySmall-order min applies

Tie the turnaround promise to what the channel actually earns you. If a channel wants a better SLA, that's a pricing conversation, not an operations one.

When this level of analysis is worth it — and when it isn't

Worth it when: you run two or more channels with meaningfully different terms, your reseller or ecommerce volume is growing faster than your margins, or you keep feeling "busy but broke." That last feeling is almost always a channel-mix problem hiding in averaged overhead.

Not worth it when: you're 95% direct walk-in with a trickle of online orders. Build the model, but don't obsess — the mix isn't big enough to move your P&L yet. Spend that energy on job costing first.

Who should skip this entirely: a brand-new shop with no clean reprint or labor data. You'll just be modeling with made-up inputs, and a confident wrong number is worse than an honest guess. Get 90 days of tagged data first.

A quick real scenario

A mid-size commercial shop — mostly direct, with a growing online storefront and three reseller accounts — couldn't figure out why revenue was up around 20% year over year but the bank balance wasn't moving. Everything at the job level looked healthy.

When they split contribution margin by channel, the picture snapped into focus. The ecommerce channel had a reprint rate roughly double their direct rate, almost entirely from bad customer files, and small-order shipping was quietly eating another few points. Two of the three reseller accounts were on net-45 with deep volume discounts, so the growth was real but the margin was close to break-even after terms.

They didn't fire anyone or drop a channel. They added a modest ecommerce order minimum, tightened storefront preflight so fewer bad files got through, and gave the two slow-paying resellers a choice between a small price bump or moving to net-15. Within a couple of months the "busy but broke" feeling eased — same top line, noticeably more of it actually landing.

The takeaway

Channel-level profitability isn't a new report you bolt on top of your accounting. It's a different way of asking the same question you already ask about jobs: what does this actually cost me to serve? The answer changes the moment you stop spreading hidden labor, returns, packaging, terms, and marketing evenly across orders that don't deserve equal blame. Build the ladder once with your own reprint and labor data. Price each channel against its real contribution margin. Match your turnaround promises to what each channel earns. You'll probably find your most annoying customers are your most profitable — and the volume you were bragging about is the volume you should be repricing.

Built for Print Shops Tailored for print production workflows and order management
Save Time Streamline order processing, production scheduling & inventory control
Delight Clients Faster turnaround and real-time order updates
Grow Revenue Increase repeat business and optimize resource use