<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Iron Margin Field Notes</title>
  <subtitle>Notes from the field on shipping, carrier programs, and the operational side of last mile parcel.</subtitle>
  <link href="https://www.ironmargin.com/feed.xml" rel="self"/>
  <link href="https://www.ironmargin.com/field-notes/"/>
  <id>https://www.ironmargin.com/field-notes/</id>
  <updated>2026-07-23T00:00:00.000Z</updated>
  <author>
    <name>Keyan Bazargan</name>
  </author>
  <entry>
    <title>What a benchmark actually looks like</title>
    <link href="https://www.ironmargin.com/field-notes/what-a-benchmark-actually-looks-like/"/>
    <id>https://www.ironmargin.com/field-notes/what-a-benchmark-actually-looks-like/</id>
    <updated>2026-07-23T00:00:00.000Z</updated>
    <summary>We start every brand with a benchmark. Here is exactly what you share, what we check it against, and why it surfaces money for more than nine in ten brands.</summary>
    <content type="html"><![CDATA[<p>Every shipping conversation starts with the same offer: send your data over securely and we will benchmark it. &quot;Benchmark&quot; gets used loosely, so it is worth being precise about what one actually is, what it asks of you, and what it tends to find.</p>
<h2>What we ask you to share</h2>
<p>A benchmark is only as good as <a href="/field-notes/a-quote-is-only-as-good-as-the-inputs/">its inputs</a>, so we work from your real numbers, not a summary:</p>
<ul>
<li>Your contract terms, carrier or 3PL</li>
<li>Your pick, pack, and storage fees</li>
<li>Your actual shipping spend</li>
</ul>
<p>That is the whole ask. Three things, straight from the source.</p>
<h2>What we do with it</h2>
<p>We evaluate those numbers against the data we already hold: carrier rates lane by lane, fee structures from comparable brands, and the terms we see move across the market every week. For more than nine in ten brands we run this for, we surface at least one place they are losing money they did not know about.</p>
<h2>What that looks like</h2>
<p>A gym equipment brand self-fulfills. On carrier contracts alone we took their average shipping cost per order from $61 to $42 within a year, multiple six figures annually.</p>
<p>A sporting goods brand switched 3PLs and cut their fulfillment cost nearly in half.</p>
<h2>Whichever side you are on</h2>
<p>If you self-fulfill and want better carrier contracts, the benchmark shows you where your rates sit against the market. If you use a 3PL and want to renegotiate or move to a better-fitting one, it shows you what the switch is actually worth. Either way, it starts in the same place.</p>
<p>When we <a href="/evaluation-report">evaluate a shipping profile</a>, this is where we begin.</p>
]]></content>
  </entry>
  <entry>
    <title>A carrier that can&#39;t print never wins the rate shop</title>
    <link href="https://www.ironmargin.com/field-notes/a-carrier-that-cant-print-never-wins-the-rate-shop/"/>
    <id>https://www.ironmargin.com/field-notes/a-carrier-that-cant-print-never-wins-the-rate-shop/</id>
    <updated>2026-07-13T00:00:00.000Z</updated>
    <summary>We added a lower-cost carrier to a brand&#39;s rate shop and it won almost no shipments. The rate was competitive, but the carrier required package dimensions to quote, and the brand&#39;s Shopify dimensions were not syncing into ShipStation, so it dropped out of every comparison without producing an error. Rate shop setup has failure modes that never surface as errors.</summary>
    <content type="html"><![CDATA[<figure class="note-rateshop" role="img" aria-label="A rate shop comparison for a single order with three configured carriers. The incumbent carrier is selected at 12.40 dollars, and a second carrier is compared at 13.10 dollars. The alternative carrier that was added, the cheaper option, returned no rate because package dimensions were missing, so it was dropped from the comparison and a more expensive carrier won by default.">
  <div class="rs-head">
    <span class="rs-title">Rate shop</span>
    <span class="rs-sub">One order, three carriers configured</span>
  </div>
  <ul class="rs-rows">
    <li class="rs-row rs-row--win">
      <span class="rs-dot" aria-hidden="true"></span>
      <span class="rs-name">Incumbent carrier</span>
      <span class="rs-rate">$12.40</span>
      <span class="rs-tag rs-tag--win">Selected</span>
    </li>
    <li class="rs-row">
      <span class="rs-dot" aria-hidden="true"></span>
      <span class="rs-name">Second carrier</span>
      <span class="rs-rate">$13.10</span>
      <span class="rs-tag">Compared</span>
    </li>
    <li class="rs-row rs-row--out">
      <span class="rs-dot" aria-hidden="true"></span>
      <span class="rs-name">Alternative carrier<em>the cheaper option you added</em></span>
      <span class="rs-rate rs-rate--none">No rate</span>
      <span class="rs-tag rs-tag--out">Dropped, no dimensions</span>
    </li>
  </ul>
  <p class="note-caption">The alternative carrier never returned a rate, so it never entered the comparison. A more expensive carrier won by default, and nothing in the system flagged the miss.</p>
</figure>
<p>We recently added a lower-cost carrier to a brand's rate shop in ShipStation and expected it to begin winning a meaningful share of their shipments. The rate was competitive and the configuration looked correct, so we anticipated it taking real volume away from the incumbent. Instead, it won almost nothing.</p>
<p>When we investigated, the issue turned out to have nothing to do with the rate. The carrier we had onboarded required package dimensions in order to return a quote, and this brand's product dimensions were not syncing from Shopify into ShipStation. On every order, the carrier received a shipment with no dimensions, declined to quote, and dropped out of the comparison. The rate shop was not selecting the incumbent because the incumbent was cheaper. It was selecting the incumbent because the alternative never appeared in the comparison at all.</p>
<p>This is what makes the problem both expensive and easy to miss. Nothing in the system failed in a way anyone could see. No order was blocked, no label was rejected, and no error was logged anywhere. The carrier was simply ineligible on most shipments, so it lost comparisons it should have won, and the only visible symptom was a win rate that came in far below what we had modeled.</p>
<h2>Why a well-configured rate shop still leaks</h2>
<p>A rate shop is only as reliable as the data it runs on. It compares the carriers that actually returned a rate, not the carriers you configured. A carrier can be present in the account, fully credentialed, and priced better on paper, and still remain invisible on most orders because a single input it depends on is not reaching the label.</p>
<p>Package dimensions are the most common cause, because they are the input most likely to live in the store and never make it into the label tool. Many carriers will not quote without them, and dimensions <a href="/field-notes/the-dim-factor-moves-more-than-the-discount/">move more of the final bill than most shippers expect</a> to begin with. Once the Shopify dimensions were flowing into ShipStation, the carrier began quoting, began winning shipments, and the savings we had modeled during the negotiation finally appeared on the invoice. That savings was real, and it had been available the entire time.</p>
<p>This is the same principle behind the idea that <a href="/field-notes/a-rate-is-a-number-until-the-label-prints/">a rate is only a number until the label prints</a>. The discount you negotiate is a figure on a contract. It becomes money you keep only when the label tool is configured to route to that carrier, and only when that carrier is actually eligible to be routed to.</p>
<h2>The details differ on every platform</h2>
<p>The underlying failure mode is the same everywhere. A carrier drops out of the comparison because an input it needs is not reaching it. What differs from one platform to the next is where that input originates, how it maps, and what each carrier requires before it will quote. Data that syncs cleanly from Shopify into ShipStation is configured differently in eHub or Extensiv, and each carrier maintains its own requirements for what must be present on the label before it will return a rate.</p>
<p>We specialize in Shopify brands, and we understand how these systems are wired together, including ShipStation, eHub, and Extensiv, and how a store's data has to flow into them for a rate shop to function as intended. Adding a carrier is the straightforward part. Ensuring that carrier is eligible to win on every order is the part that quietly determines whether the rate you negotiated ever pays off.</p>
<p>When we <a href="/evaluation-report">evaluate a shipping operation</a>, confirming that the rate shop is configured correctly, and that every carrier you are paying to have available is genuinely eligible to win, is one of the first things we check. In this case it was a brief verification that had been costing the brand real money for months.</p>
]]></content>
  </entry>
  <entry>
    <title>What the transfer plan leaves out</title>
    <link href="https://www.ironmargin.com/field-notes/what-the-transfer-plan-leaves-out/"/>
    <id>https://www.ironmargin.com/field-notes/what-the-transfer-plan-leaves-out/</id>
    <updated>2026-07-07T00:00:00.000Z</updated>
    <summary>The plan for moving to a new 3PL always reads clean: sign, transfer inventory, connect the software, go live. This is the layer below Phase six, the details that only surface once the trucks are booked and the inventory is actually moving. Pulled from a recent move I ran between two providers.</summary>
    <content type="html"><![CDATA[<figure class="note-check" role="img" aria-label="Four details that surface during a real 3PL inventory transfer: pallets have to fit the truck rather than the warehouse racking, a kit is not a unit so the count can be a fiction, every order source has to be mapped because retail orders may not run through the hub you are integrating, and one cutover line has to be drawn so nothing ships twice and nothing falls through.">
  <ul>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Pallets fit the truck, not the racking</b><span>The pallet dimensions decide the truck, and no dock decides it again. Both can shrink the load you thought you booked.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>A kit is not a unit</b><span>Sets get opened for parts, so the count you are planning the move against can be a fiction.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Every order source, mapped</b><span>A retail or wholesale order can ship out of the same building in the middle of the move, on a deadline that does not care about your transfer.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>One cutover line</b><span>Move in waves and keep the old 3PL fulfilling, so nothing ships twice and nothing falls through the gap.</span></div>
    </li>
  </ul>
  <p class="note-caption">The plan is clean on paper. The move happens one level down from it.</p>
</figure>
<p>The plan for moving to a new 3PL always reads clean. Sign, transfer inventory, connect the software, go live in a week or two. I wrote the full arc of that process in <a href="/field-notes/choosing-and-working-with-a-3pl/#phases">choosing and working with a 3PL</a>, and Phase six is the inventory transfer and software setup. This note lives one level below that phase. It is the set of details that do not make the plan, the ones that surface only once the trucks are booked and the inventory is in motion, pulled from a recent move I ran between two providers.</p>
<p>None of these are exotic. They are the difference between a transfer that goes the way you drew it up and one that costs an extra week and a few thousand dollars you did not budget. The pattern is always the same: the assumption that felt safe on paper turns out to have a physical or a data reality behind it that nobody checked.</p>
<h2>Pallets fit the truck, not the racking</h2>
<p>The <a href="/field-notes/a-quote-is-only-as-good-as-the-inputs/">freight side of Phase six</a> is where you confirm pallet count, weight, and dimensions before anyone books a truck. Two things underneath that confirmation quietly decide what you can actually book. The first is the dock. On the recent move, neither of the outgoing buildings had a loading dock, and a 53-foot trailer with a lift gate is close to impossible to source, so the 53-footer was off the table before we discussed a single date. The second is pallet size. Once we were down to smaller box trucks, 13 pallets at their built dimensions would not fit on a 26-foot truck, so we cut the pallet count to make the load fit and ended up running two small trucks of about a dozen pallets each instead of the one big truck the plan imagined.</p>
<p>The lesson is that the pallet dimensions decide the truck, and the dock decides it again, and neither shows up on the tidy version of the plan. A pallet built to fit the outgoing warehouse's racking is not automatically a pallet that fits the truck you assumed. Confirm dock, lift gate, and real pallet dimensions on both ends before you promise anyone a pickup date, because a wrong assumption here does not cost a phone call, it costs a truck.</p>
<h2>A kit is not a unit</h2>
<p>This is the one that quietly breaks the count. If you sell sets, the number in your system is often a fiction, because a kit gets opened for its parts. On the move, the outgoing inventory was a mix of cartonized units, palletized units, and loose boxes of broken-open parts, and the count the outgoing 3PL gave us was not one we could trust to plan against. So we did not try to reconcile it in their building. We moved everything and did a single clean count on arrival at the new warehouse, which is both more accurate and cheaper than paying two teams to count the same messy shelves twice.</p>
<p>The takeaway is to find out how kits and bundles are actually stored and counted before you build a plan on a unit number. A transfer planned against a count that does not survive contact with the shelf is a transfer that arrives wrong, and you find out at the worst possible time, after the truck has already left.</p>
<h2>Every order source, mapped</h2>
<p>The software setup in Phase six is easy to picture as one integration: connect the store, orders flow, done. The reality is that a brand at any scale has more than one place orders come from, and they do not all run through the hub you are wiring up. In the middle of this transfer, a big-box retail order of 111 cartons had to ship out of the same building on a hard void date, on a Monday pickup, while the DTC inventory was being staged to leave. That order had its own truck, its own deadline, and its own claim on the same pallets and the same floor space, and none of it was in the go-live plan.</p>
<p>So map every order source before you cut over, name where each one lands, and check the ones that do not flow through the main integration. The retail and wholesale orders with <a href="/field-notes/choosing-and-working-with-a-3pl/#phases">hard pickup windows and void dates</a> are exactly the ones you cannot afford to discover late, because missing one is a chargeback or a lost account, not a delayed DTC package.</p>
<h2>One cutover line</h2>
<p>Every detail above rolls up to the last one. There has to be a line, agreed by both sides, that separates what the old 3PL still ships from what the new one owns. The way you draw it in practice is to move in waves rather than all at once, and to keep the outgoing warehouse fulfilling until the new one is genuinely live, the same discipline as running a <a href="/field-notes/onboarding-a-new-carrier/">test phase on a small slice of live orders</a> before you scale. Without that line you get the two failure modes that define a bad transfer: an order ships twice because both buildings thought it was theirs, or it ships from neither because both thought it was the other's.</p>
<p>The party most likely to blur the line is the one you are leaving. On this move the outgoing 3PL was two people with limited staging space and slow replies, which is common, because the outgoing provider is the least motivated party in the whole transfer and often not even on the same tools you are. Get a direct line into that building early, decide who owns communication to each party, and confirm the cutover line is one they are holding too, not just one you wrote down. This is the same reason to <a href="/field-notes/before-your-first-pickup/">lock in the operational basics</a> the week before you go live.</p>
<p>That last point is the whole note in one sentence. A transfer is not one company handing off to another, it is two operations running at once for a stretch of days, and the gap between them is where orders go missing. The plan says go live. The move is everything you did to make sure that day had a clean edge.</p>
]]></content>
  </entry>
  <entry>
    <title>If you ship from California, Zone 8 is your business</title>
    <link href="https://www.ironmargin.com/field-notes/if-you-ship-from-california-zone-8-is-your-business/"/>
    <id>https://www.ironmargin.com/field-notes/if-you-ship-from-california-zone-8-is-your-business/</id>
    <updated>2026-07-03T00:00:00.000Z</updated>
    <summary>A coastal warehouse and a national customer base put most of your volume in the farthest, slowest, most expensive shipping zones. That is not a carrier problem you can negotiate away. It is a geography problem, and it changes which levers actually move your cost and transit time.</summary>
    <content type="html"><![CDATA[<figure class="note-bars" role="img" aria-label="Shipping to a near zone is cheaper and faster; shipping to Zone 8 is the most expensive and slowest. For a brand shipping from the coast, most volume lands in Zone 8, the tall bar.">
  <div class="nb-chart">
    <div class="nb-group"><span class="nb-col nb-col--win" style="height:42%"></span></div>
    <div class="nb-group"><span class="nb-col nb-col--lose" style="height:100%"></span></div>
  </div>
  <div class="nb-labels">
    <div class="nb-lab"><b>Near zone (2 to 4)</b><span>Lower cost, faster transit, less of your volume</span></div>
    <div class="nb-lab"><b>Zone 8</b><span>Highest cost, slowest transit, most of your volume</span></div>
  </div>
</figure>
<p>Zones are just distance. A parcel carrier prices and times a shipment by how far it travels from where it ships, banded into zones that run from 1 (local) to 8 (the other side of the country). For a brand shipping out of California to customers everywhere, the map is lopsided: the population, and therefore the orders, sits in the East and the middle of the country, which means a large share of your volume lands in zones 7 and 8. When we look at coastal-origin brands, Zone 8 is not an edge case. It is frequently the single biggest slice of shipments.</p>
<p>That one fact quietly shapes your whole shipping picture, because Zone 8 is the worst zone on both axes at once.</p>
<h2>The far zone is slower and more expensive at the same time</h2>
<p>Cost per parcel rises with zone, more or less monotonically, and the far zones also carry the surcharges that hit distance and rural delivery. So the average parcel is not shipping to a friendly nearby ZIP. It is shipping to the expensive end of the rate card. When you look at <a href="/field-notes/a-quote-is-only-as-good-as-the-inputs/">what actually lands on the invoice</a>, the delivery area surcharge and the higher base rate both concentrate in exactly the zones where most of your orders go.</p>
<p>Transit time moves the same direction. Ground service to Zone 8 is several days, and it is where your slow tail lives: if some share of your deliveries are taking five, six, seven days, they are almost all far-zone shipments. Your average transit time is not a description of a typical order. It is a blend of fast local deliveries and a heavy, slow Zone 8 block, and the customers waiting the longest are the majority, not the exception.</p>
<h2>This is geography, not a bad carrier</h2>
<p>The instinct is to treat slow, expensive Zone 8 numbers as a carrier failure and go renegotiate. That is the wrong lever, because no rate card changes the distance from your dock to Ohio. A carrier can be executing perfectly and your Zone 8 cost and transit will still look rough, because the cost and the time are functions of the miles. Blaming the carrier sends you into a rate negotiation that cannot fix a map.</p>
<p>The levers that do move a geography problem are structural:</p>
<ul>
<li><strong>A second shipping node.</strong> The highest-leverage move is putting inventory closer to the demand. A second warehouse or a fulfillment partner in the central or eastern US turns a large block of your Zone 8 volume into Zone 2 to 4 shipments, which is a cost and speed win at the same time. This is the lever worth modeling first, because it attacks the distance directly.</li>
<li><strong>Carrier and service mix by zone.</strong> Speed matters less to a customer who already expects a cross-country wait, so the far zones are where economy ground services earn their place. Reserve the faster, pricier services for the zones and orders where the speed actually converts or retains. The cheapest option is a per-zone question, not a single contract-wide answer.</li>
<li><strong>Honest delivery expectations.</strong> A Zone 8 customer waiting five to seven days is not a problem as long as they were told five to seven days. The churn comes from a silent estimate that the far zone was never going to meet. Set the expectation to the geography.</li>
<li><strong>Consolidation and injection.</strong> Where a second node is not yet worth it, zone-skipping and carrier injection can move parcels closer to their destination in bulk before they enter the last-mile network, shortening the effective zone without opening a warehouse.</li>
</ul>
<h2>Read the zone distribution before you read anything else</h2>
<p>Before you judge a carrier, a cost, or a transit number, look at where your volume actually goes. A brand with most of its orders in zones 2 to 4 and a brand with most of its orders in Zone 8 are running different businesses, and a blended average hides which one you are. If you ship from a coast, assume the far zone is your center of gravity until the data says otherwise, and make your cost and speed decisions from there.</p>
]]></content>
  </entry>
  <entry>
    <title>Faster shipping is a retention hypothesis</title>
    <link href="https://www.ironmargin.com/field-notes/faster-shipping-is-a-retention-hypothesis/"/>
    <id>https://www.ironmargin.com/field-notes/faster-shipping-is-a-retention-hypothesis/</id>
    <updated>2026-07-03T00:00:00.000Z</updated>
    <summary>Every founder believes the 2-day buyer is worth more than the ground buyer. It might be true for your brand, but it is a claim you can measure, not a fact you should assume. Group repeat rate by the service that shipped the first order and the answer stops being a hunch.</summary>
    <content type="html"><![CDATA[<figure class="note-check" role="img" aria-label="How to test whether faster shipping drives repeat purchase: measure repeat rate within a fixed window and median days to reorder, grouped by the service that shipped each customer's first order, counting only customers whose first order is old enough to have matured.">
  <ul>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Repeat rate within the window</b><span>Share of first-time customers who ordered again within, say, 180 days.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Median days to reorder</b><span>How quickly the second order comes, not just whether it does.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Grouped by acquisition service</b><span>The service on the customer's first order, not the carrier and not a blended average.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Matured customers only</b><span>First order at least a full window old, so everyone in the cohort had the chance to return.</span></div>
    </li>
  </ul>
</figure>
<p>There is a belief a lot of DTC founders carry without ever testing it: the customer you won on fast shipping is worth more than the one you won on the cheap, slow option. The story is intuitive, a faster, cleaner first delivery makes a better impression, so that buyer comes back and the ground buyer drifts. It might be true for your brand. It might not, or the effect might be too small to pay for. The trouble is that the assumption usually gets treated as settled when it was never measured, and an untested belief like this quietly sets your shipping budget. If it is wrong, you are either overpaying for speed or starving the lever that actually drives repeat orders.</p>
<p>It is a hypothesis. And it is a measurable one.</p>
<h2>Group retention by the service that shipped the first order</h2>
<p>The mistake is looking at repeat rate across all customers, or splitting it by carrier. Neither answers the question. The question is about the experience a customer had when they were <em>acquired</em>, so the unit of analysis is the service on their first order: FedEx 2Day versus FedEx SmartPost, Priority versus Ground Advantage, whatever tiers you actually ship.</p>
<p>For each first-time customer, tag the service of that first shipment. Then, within each service, measure two things:</p>
<ul>
<li>The share of those customers who placed a second order within a fixed window, say 180 days.</li>
<li>The median time to that reorder.</li>
</ul>
<p>One number tells you whether the tier retains, the other tells you how quickly. A tier that produces a higher repeat rate and a faster second order is doing real work. A tier that costs three times as much and produces the same repeat rate is a cost you are absorbing for no return.</p>
<h2>Only measure customers who have had the chance to come back</h2>
<p>A cohort is only fair if every customer in it has had the full window to reorder. A buyer acquired three weeks ago cannot have a 180-day repeat rate yet, and if you leave them in the pool they drag the number down and make your newest, fastest tier look worse than it is. Measure only &quot;matured&quot; customers whose first order is at least a window old. Recent tiers you rolled out last quarter will not have enough matured customers to judge yet, and that is fine. Show the tiers that can be judged and be honest that the rest need more time.</p>
<h2>The gap is a signal, not a verdict</h2>
<p>If the fast-acquired cohort does repeat more, resist reading it as pure cause. The customer who paid for or chose faster shipping is often a different customer to begin with: higher intent, higher average order value, a product they wanted sooner. Some of the retention gap is the delivery experience, and some of it is who selected that experience. You are looking at correlation with a plausible mechanism, not a clean experiment.</p>
<p>That is still useful. It tells you which direction to lean and roughly how much is at stake. If the gap is large and consistent across months, faster shipping is behaving like a retention investment, and you can weigh its cost against the repeat revenue it appears to protect. If the gap is small, the speed you are paying for is not buying loyalty, and the money is better spent elsewhere. Either way you are now deciding with a number instead of a belief.</p>
<p>This is the same idea as treating <a href="/field-notes/lifetime-value-is-a-carrier-metric/">lifetime value as a carrier metric</a>: the delivery experience does not stop at the front door, it shows up later in whether the customer comes back. Acquisition service is just the sharpest place to look for it, because it is the first experience the customer ever had with you.</p>
<h2>What to do with the answer</h2>
<p>Measure it, then act on it in one of three ways. If a faster tier clearly retains better and the math holds, protect it, and consider pushing more first orders onto it even at higher cost. If a slower tier retains just as well, stop paying for speed you cannot see in the reorder data. And if you cannot tell yet because the fast tier is too new, keep the cohort running and check again next quarter. The worst option is the one most brands default to, which is to keep believing the hypothesis and never look.</p>
]]></content>
  </entry>
  <entry>
    <title>Pickup consistency is a carrier feature</title>
    <link href="https://www.ironmargin.com/field-notes/pickup-consistency-is-a-carrier-feature/"/>
    <id>https://www.ironmargin.com/field-notes/pickup-consistency-is-a-carrier-feature/</id>
    <updated>2026-06-26T00:00:00.000Z</updated>
    <summary>Brands grade carriers on rate and delivery speed and stop there. The thing that quietly costs a warehouse money is the one nobody puts on the scorecard: whether the truck shows up at the same time every day.</summary>
    <content type="html"><![CDATA[<p>We were on a call recently with a fulfillment operation and one of their carriers. The headline numbers were good. Rates were competitive, delivery speed was strong, and on the metrics most people use to grade a carrier there was nothing to fix.</p>
<p>The one complaint was small enough that it almost didn't come up: the pickup times were all over the place. Some days the truck came early, some days late, and there was no window you could plan the floor around. It sounds minor next to rate and transit time. On the warehouse floor, it isn't.</p>
<h2>An unpredictable pickup is a planning problem</h2>
<p>A pickup time you can't predict turns into uncertainty everywhere downstream. The floor doesn't know when the day's orders truly have to be done, so the cutoff that should be a hard line becomes a guess. Staff it too light and a late truck still has to be loaded, which is how a late pickup turns into an overtime hour someone has to pay for. Staff it heavy to be safe and you're paying for the slack instead. Either way the variance in the carrier's schedule shows up as cost on your payroll, not theirs.</p>
<p>That's the part that doesn't make it onto the carrier scorecard. Rate and speed are easy to put in a spreadsheet. The hour of overtime you paid because the truck came late, or the labor you held idle waiting on a pickup that drifts, never gets attributed back to the carrier that caused it.</p>
<h2>A heads-up helps, consistent is the gold standard</h2>
<p>To their credit, the carrier was willing to call ahead when the timing was going to slip, and that genuinely helps. A warehouse that knows the truck is running late can plan around it instead of being surprised by it. It's the right instinct.</p>
<p>But a phone call is a patch on the problem, not a fix. The gold standard is a pickup that lands in the same window every day, so the floor can build its cutoffs and its staffing around a time it trusts and stop absorbing the carrier's variance as its own cost. One fewer overtime hour because the truck was predictable isn't going to make or break the operation. It's not nothing either, and it adds up across a year.</p>
<h2>Why it belongs in the comparison</h2>
<p>Most brands never weigh this when they pick between two carriers, because it doesn't surface until you're living with the schedule. But when the rates are close and the transit times are close, pickup consistency is exactly the kind of operational detail that should break the tie. It's the difference between a carrier the warehouse can plan around and one it has to brace for.</p>
<p>When we <a href="/evaluation-report">evaluate a shipping program</a>, we read the operation, not just the rate card, because the costs that decide whether a carrier is actually a good fit often live on the floor rather than in the contract. Pickup consistency is one we'd want on the table <a href="/field-notes/before-your-first-pickup/">before the first pickup</a>, not discovered in the payroll three months later.</p>
]]></content>
  </entry>
  <entry>
    <title>A rate is a number until the label prints</title>
    <link href="https://www.ironmargin.com/field-notes/a-rate-is-a-number-until-the-label-prints/"/>
    <id>https://www.ironmargin.com/field-notes/a-rate-is-a-number-until-the-label-prints/</id>
    <updated>2026-06-25T00:00:00.000Z</updated>
    <summary>Brands treat carrier rates, label software, and the warehouse floor as three separate problems. They&#39;re one system. The cheapest rate you negotiated only becomes real money saved when ShipStation is set up to print it and the floor can run it.</summary>
    <content type="html"><![CDATA[<figure class="note-check" role="img" aria-label="The three layers that have to line up for a negotiated rate to become real savings: the carrier rate you signed, the ShipStation setup that routes and prints it, and the warehouse floor that executes it. One system, not three.">
  <ul>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>The rate you signed</b><span>The discounts, divisor, and service levels in the carrier agreement.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>The ShipStation setup</b><span>Carrier routing, automation rules, and saved views that pick what actually prints.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>The warehouse floor</b><span>Remote printing, sequencing, and packaging that get the box out the door.</span></div>
    </li>
  </ul>
  <p class="note-caption">One system, not three. The rate only pays off if all three line up.</p>
</figure>
<p>Most brands split shipping into three problems owned by three different people. Someone negotiates the carrier rates. Someone else configures the label software. Someone on the floor packs the boxes. Each one optimizes their own slice and assumes the others are handled.</p>
<p>They aren't three problems. They're one system, and the rate you fought for at the negotiating table is just a number on a contract until a label prints and someone gets the box out the door. Where that number turns into actual savings, or quietly leaks back out, is the layer almost no one treats as strategic: the setup inside ShipStation and the way the warehouse runs against it.</p>
<h2>The label layer is where rate strategy becomes real</h2>
<p>A rate card is a menu. ShipStation is where you decide what actually gets ordered, on every shipment, all day. Two settings in particular move more than people expect:</p>
<ul>
<li><strong>Carrier selection tied to the pickup schedule, not just the rate.</strong> A carrier can be cheaper on paper and still cost you if they only pick up from your warehouse three days a week. A label you can't hand off today isn't a savings, it's a delayed order. Most label tools won't schedule routing by day of the week, so the real move isn't a clever automation, it's a saved view plus a one-click bulk reassignment that swaps to the cheaper carrier on the days it actually picks up and falls back on the days it doesn't. The strategy only holds if someone runs it that way, every day.</li>
<li><strong>Automation rules that split domestic from international.</strong> Domestic and international orders want different carriers, different service levels, and different paperwork. When the rules sort that automatically at order import, you stop paying for a packer's judgment call on every box and you stop leaking margin to the wrong service on the wrong lane.</li>
</ul>
<p>This is where a negotiated rate either compounds across thousands of labels or gets undone one default at a time.</p>
<h2>The warehouse floor is the other half of the equation</h2>
<p>The best routing logic in the world still has to be executed by a person standing at a packing bench. A setup that ignores how the floor actually moves will lose whatever the rate won.</p>
<ul>
<li><strong>Remote, batched label printing.</strong> ShipStation Connect lets labels print to the warehouse printers from anywhere, so staff aren't tethered to one machine or one screen. It also decouples who buys the labels from who packs the boxes: an owner can purchase the day's labels from home and an untrained floor hand just presses print. The fewer steps between &quot;order is ready&quot; and &quot;label is on the box,&quot; the more volume the same headcount clears.</li>
<li><strong>Saved views that order the work.</strong> Prioritizing and sequencing label printing through saved views, by carrier cutoff, by service level, by order type, turns a pile of orders into a queue that runs in the right order. That's the difference between hitting the day's last pickup and missing it.</li>
<li><strong>Packaging that matches the order, not the average.</strong> Higher-end and influencer shipments don't pack like a standard order, and the instruction to treat them differently usually rides in as a note on the order. If that note lives in the storefront but never surfaces in the label tool, the packer never sees it and a premium order ships in a plain box before anyone notices. The fix isn't a sticky note on the bench, it's a filter that catches the flag, a rule that swaps in the right packing slip, and a tag that lights the order up on screen before it's packed.</li>
</ul>
<p>None of this shows up on a rate card. All of it decides whether the rate card ever pays off.</p>
<h2>Where the formula breaks</h2>
<p>The break is almost always organizational. The person who negotiated the rate never sees the ShipStation rules. The person who built the rules doesn't watch the floor. So a good rate gets routed past, a saved view sequences against the carrier cutoff instead of toward it, and the international orders quietly ride a domestic default. Each gap is small. Across a year of labels, they're the whole margin.</p>
<p>Rates, labels, and warehouse optimization are one formula. Pull on one without the other two and the math doesn't hold.</p>
<p>This is the seam we sit on. When we <a href="/evaluation-report">evaluate a shipping operation</a>, we read it as one system: the rates you're on, the way ShipStation routes and prints them, and how the floor executes against that, because that's where a rate stops being a number and starts being money you keep. It's the same instinct behind reading your costs at the <a href="/field-notes/operational-data-is-not-billing-data/">source rather than off a summary</a>, the savings live in the setup, not the headline.</p>
]]></content>
  </entry>
  <entry>
    <title>A quote is only as good as the inputs</title>
    <link href="https://www.ironmargin.com/field-notes/a-quote-is-only-as-good-as-the-inputs/"/>
    <id>https://www.ironmargin.com/field-notes/a-quote-is-only-as-good-as-the-inputs/</id>
    <updated>2026-06-24T12:00:00.000Z</updated>
    <summary>Whether you are booking a freight truck to move inventory or comparing parcel rates between carriers, the price is the last thing that happens, not the first. The real work is assembling a complete, apples-to-apples spec and chasing the people who hold the missing pieces.</summary>
    <content type="html"><![CDATA[<p>In shipping, the number is the easy part. Before anyone can give you a real one, a freight company or a carrier, they need the full picture of the job, and the number they hand back is only as good as the inputs you gave them. An incomplete spec does not get you a rough answer, it gets you a confident wrong one. I watched this play out on both ends of the same move recently, booking a truck to transfer inventory and comparing parcel rates between carriers, and the lesson was identical in both places: gather the inputs first, and gather all of them.</p>
<h2>Booking the truck</h2>
<p>A freight company cannot quote a pickup until it knows the shape of the load: pallet count, the weight and dimensions of each pallet, whether it adds up to a full truck, and how the freight gets on and off at each stop. Estimates are fine. If you know the carton weight and how the pallets are stacked, you can do the math up to dimensions and weight rather than waiting on a perfect number. The requirement that quietly drives the whole booking is the loading dock. No dock means the truck has to be scheduled with a lift gate, and that changes the equipment and the time before anyone talks price.</p>
<p>The detail that surfaces late, almost every time, is that the inventory is not all in one place. A second warehouse across the street, an overflow location a town over, and suddenly the quote you asked for was for the wrong job. So I ask for every pickup address up front, and I ask for more than one scenario: one site versus both sites, priced separately, so the brand can see what the second stop actually costs before committing to it. And it is usually worth pushing the pickup a day if that day lets the outgoing warehouse prep and wrap the pallets properly. A clean, wrapped, accurately measured load is what makes the truck you booked the right truck.</p>
<h2>The coordination is the actual work</h2>
<p>A transfer is never one conversation. It is several running at once, between you, the brand, the new partner, the freight company, and the outgoing 3PL whose building your inventory is still sitting in. The freight company is usually ready to move the moment it has details. The bottleneck is almost always the party you are leaving, who is the least motivated to be responsive and often not even on the same tools you are, no shared Slack, a key contact traveling, response times slipping at exactly the moment you need them.</p>
<p>So get a direct phone number early, for this pickup and for the rest of the transfer, and when you need to call someone cold, ask permission first and then call. Keep one thread. It is easy to end up with an email reply landing outside your existing chain and two people chasing the same answer in two places, so decide who owns communication to each party and stick to it. And remember the move has downstream consequences: what the truck pulls this week determines what is left for every other commitment you have, including any retail or wholesale orders with hard pickup windows and void dates. Do that math before you lock the date, not after, which is the same <a href="/field-notes/the-switching-cost-the-spreadsheet-misses/">switching cost the spreadsheet misses</a> showing up in real time.</p>
<h2>Comparing parcel rates is the same problem</h2>
<p>Move from freight to parcel and the principle does not change, only the line items do. The base rate is not the price. A real comparison between two carriers has to include every layer that lands on the invoice, and the ones that move the number are:</p>
<figure class="note-check" role="img" aria-label="A checklist of the cost components a complete parcel rate comparison must include: base rate, residential surcharge, delivery area surcharge, fuel surcharge, dimensional factor, additional handling, and large-package fees.">
  <ul>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Base rate</b><span>The published rate for the zone and weight, before anything is added.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Residential surcharge</b><span>Added on most direct-to-consumer deliveries, so it applies to nearly every order.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Delivery area surcharge (DAS)</b><span>A per-package fee on hard-to-reach ZIPs. Know which of your ZIPs trigger it.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Fuel surcharge</b><span>A percentage applied on top of the rest, so it scales with everything else.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Dimensional (dim) factor</b><span>The divisor that turns box size into billable weight. A smaller divisor bills you for air.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Additional handling</b><span>Triggered by weight, length, or packaging. Easy to forget, painful to discover later.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Large-package fees</b><span>A steep step up once a package crosses the size threshold.</span></div>
    </li>
  </ul>
</figure>
<p>There are more, but those are the main ones to look for. The cautionary tale is short. A savings comparison I reviewed looked excellent until I asked one question: does it include fuel and DAS? It did not. It was base rate against base rate, while the cost on our side was already all-in, with the fuel surcharge and a per-package DAS baked in. Once we re-ran it apples to apples, the savings looked very different. This is the same trap as treating <a href="/field-notes/operational-data-is-not-billing-data/">operational data as billing data</a>: the headline number reads clean, but it is answering a different question than the one you asked.</p>
<p>The dim factor earns its own warning. Two carriers can show the same per-pound rate and bill you completely differently, because one uses a smaller divisor and charges you for the air in the box. If your products are light and bulky, the dim factor can outweigh the base rate entirely, and a comparison that ignores it is not a comparison at all.</p>
<h2>The same lesson in both places</h2>
<p>Freight or parcel, the number is the easy part. The work is assembling a complete, apples-to-apples spec and chasing down the people who hold the missing pieces, the pallet dimensions, the second pickup address, the surcharge schedule, the ZIPs that trigger DAS. Do that, and the quote you get back is one you can actually act on. Skip it, and you have made a real decision on a number that was never real. If you are about to run one of these, the <a href="/field-notes/choosing-and-working-with-a-3pl/">inventory transfer phase of the 3PL guide</a> walks the freight side end to end.
</content>
</invoke></p>
]]></content>
  </entry>
  <entry>
    <title>Lifetime value is a carrier metric</title>
    <link href="https://www.ironmargin.com/field-notes/lifetime-value-is-a-carrier-metric/"/>
    <id>https://www.ironmargin.com/field-notes/lifetime-value-is-a-carrier-metric/</id>
    <updated>2026-06-24T00:00:00.000Z</updated>
    <summary>Carriers get judged on rate and transit time. Neither captures the thing that compounds: whether the delivery experience makes a customer buy again. Tie lifetime value to carrier and you can see which carriers earn their cost and which quietly bleed it.</summary>
    <content type="html"><![CDATA[<figure class="note-bars" role="img" aria-label="Two carriers priced about the same. The one with the rougher delivery experience produces lower customer lifetime value, while the one with the better experience produces higher lifetime value.">
  <div class="nb-chart">
    <div class="nb-group"><span class="nb-col nb-col--lose" style="height:60%"></span></div>
    <div class="nb-group"><span class="nb-col nb-col--win" style="height:100%"></span></div>
  </div>
  <div class="nb-labels">
    <div class="nb-lab"><b>Cheaper label</b><span>Rougher delivery, lower repeat value</span></div>
    <div class="nb-lab"><b>Better experience</b><span>Higher lifetime value per customer</span></div>
  </div>
</figure>
<p>A carrier gets judged on two numbers: the rate and the transit time. Both stop at the front door. Neither tells you what the delivery did to the customer standing behind it, and that is the part that compounds.</p>
<p>The rate is what you pay on this shipment. Transit time is how fast it moved. But the question that actually drives the business is whether the person who received that package orders again, and how the delivery experience moved that probability up or down. That effect never shows up on a rate card or a speed dashboard. It shows up in lifetime value, which is exactly why lifetime value belongs in the conversation about carriers.</p>
<h2>The number that compounds</h2>
<p>A failed first attempt, a damaged box, or a return does not just cost you that one order. It changes how the customer feels about ordering again. Most of them never complain, so the damage never lands as a ticket or a refund. It lands as a slightly lower repeat rate, which is a far more expensive number over time.</p>
<p>This is how a carrier can look fine on every operational metric and still be costing you. Transit times are green, the scan data looks clean, and meanwhile a slice of customers who had a quietly bad experience are buying less often. The <a href="/field-notes/the-quiet-detractor-problem/">quiet detractor</a> never writes in, and <a href="/field-notes/the-problem-with-estimated-delivery-data/">estimated delivery data</a> will not catch the gap either. You only see it if you connect the delivery to the customer and watch what happens next.</p>
<h2>It cuts both ways</h2>
<p>The same lens works in the other direction, and that is the more useful half. The point is not only to catch the carrier that is hurting you. It is to find the setup that is helping.</p>
<p>If a particular carrier, service level, or delivery speed leads customers to come back sooner and more often, that lift has a dollar value, and it can justify paying more. The cheapest label is sometimes the expensive choice, and a premium one sometimes pays for itself in repeat revenue. You cannot know which is true until you measure the effect on customer value, not just on cost.</p>
<p>Speed deserves the same scrutiny. Faster is not linearly better. There is usually a point where more speed stops moving repeat behavior, and paying to beat it is waste. The goal is to find where the curve flattens, then buy up to that point and not past it.</p>
<h2>How to measure it without fooling yourself</h2>
<p>This is where the analysis is easy to get wrong. A raw average of lifetime value by carrier will mislead you, because carriers are not assigned at random:</p>
<ul>
<li><strong>Geography.</strong> A regional carrier's customers are really just the customers in that carrier's zones, who may differ in value for reasons that have nothing to do with delivery.</li>
<li><strong>Tenure.</strong> A carrier you added recently serves newer customers who have had less time to spend, so they look worse on lifetime value even if the experience was perfect.</li>
<li><strong>Order value.</strong> Higher-value orders often ship a different way, which can make a service level look better or worse than it really is.</li>
</ul>
<p>Control for those, compare within customers where you can, and assign each customer to the carrier behind their actual experience, for example the one that delivered their first order, since the first impression carries the most weight. Done that way, you isolate the carrier effect instead of a zip code or a calendar artifact.</p>
<h2>From a metric to a model</h2>
<p>Once the effect is real, it stops being a scorecard and becomes a decision. Put the lifetime value impact of each carrier and speed next to its cost, and you can build a model for the shipping setup that maximizes customer value net of shipping spend, region by region. Spend on the service levels that earn their cost back in repeat revenue, and trim the ones that do not.</p>
<p>That reframes the whole question. A rate saving that quietly costs you lifetime value was never a saving. The carrier decision is a revenue decision, and lifetime value is how you actually price it.</p>
<p>When we <a href="/evaluation-report">evaluate a program</a>, this is the layer underneath the rate analysis: not just what a carrier costs to use, but what it is worth to keep.</p>
]]></content>
  </entry>
  <entry>
    <title>The volume tiers that unlock rates</title>
    <link href="https://www.ironmargin.com/field-notes/the-volume-tiers-that-unlock-rates/"/>
    <id>https://www.ironmargin.com/field-notes/the-volume-tiers-that-unlock-rates/</id>
    <updated>2026-06-23T00:00:00.000Z</updated>
    <summary>Better shipping rates aren&#39;t only a matter of negotiating harder. Past certain volume thresholds, entirely new pricing doors open. Knowing where those doors are tells you what to reach for, and when pooling volume beats going it alone.</summary>
    <content type="html"><![CDATA[<figure class="note-bars" role="img" aria-label="Three rising volume tiers. At low volume a brand is stuck on published or reseller rates; crossing roughly a thousand parcels a month unlocks aggregator accounts; crossing several thousand unlocks direct carrier contracts, each tier cheaper than the last.">
  <div class="nb-chart">
    <div class="nb-group"><span class="nb-col nb-col--lose" style="height:34%"></span></div>
    <div class="nb-group"><span class="nb-col" style="height:64%"></span></div>
    <div class="nb-group"><span class="nb-col nb-col--win" style="height:100%"></span></div>
  </div>
  <div class="nb-labels">
    <div class="nb-lab"><b>Published / reseller</b><span>Low volume, retail-ish rates</span></div>
    <div class="nb-lab"><b>Aggregator account</b><span>~1k+ parcels a month</span></div>
    <div class="nb-lab"><b>Direct contract</b><span>~5k+ parcels a month</span></div>
  </div>
</figure>
<p>When a brand wants better shipping rates, the instinct is to negotiate harder. That's part of it. But a lot of pricing isn't won at the table at all. It's gated by volume. Past certain thresholds, whole new categories of pricing become available to you that simply weren't on offer below them. Knowing where those doors sit changes what you should be reaching for.</p>
<h2>The tiers, roughly</h2>
<p>Parcel pricing comes in tiers, and the line between them is volume:</p>
<ol>
<li><strong>Published or reseller rates.</strong> If you're shipping a low volume, you're on retail-ish pricing or whatever a reseller passes through. Fine to start, rarely where you want to stay.</li>
<li><strong>Aggregator accounts.</strong> Cross roughly a thousand parcels a month and you can get onto an aggregator account, where pooled buying power gets you rates a small shipper can't access alone.</li>
<li><strong>Direct carrier contracts.</strong> Cross into the several-thousand-a-month range and direct contracts with carriers open up, along with the negotiating leverage that comes with being worth a carrier's time.</li>
</ol>
<p>The exact numbers move by carrier and lane, but the shape holds: more volume doesn't just earn a steeper discount on the same rate card, it unlocks a different rate card entirely.</p>
<h2>Why this matters for what you chase</h2>
<p>If you don't know which tier you're near, you can spend energy in the wrong place. Grinding for a slightly better published rate when you're one decision away from qualifying for an aggregator account is effort aimed at the wrong door. The higher-leverage question is usually &quot;what's the next tier, and how close am I?&quot; rather than &quot;can I shave another point off this one?&quot;</p>
<p>It also reframes growth. Volume you might think of purely as more orders to fulfill is also the thing that moves you toward cheaper pricing. The threshold is a milestone worth tracking, not just a fulfillment load.</p>
<h2>Pooling volume beats going it alone</h2>
<p>Here's the move most brands miss. You don't always have to generate the volume yourself to reach a tier.</p>
<p>This is the constructive flip side of <a href="/field-notes/the-carrier-dilution-problem/">the carrier dilution problem</a>. Splitting your own volume across too many carriers drops you below every threshold and weakens you everywhere. Going the other direction does the opposite: <strong>pool volume and you climb tiers you couldn't reach alone.</strong></p>
<p>A 3PL is the clearest example. A fulfillment operation that combines the volume of all its clients can clear thresholds that none of those brands would hit individually, and pass the better tier down to all of them. A small brand inside that pooled volume can be buying at a rate its own shipment count would never earn on its own. When you're <a href="/field-notes/choosing-and-working-with-a-3pl/">choosing a 3PL</a>, this is worth asking about directly: are you getting their pooled rate, or just your own?</p>
<p>So before you assume your rates are as good as your size allows, find your tier and find the next one. Sometimes the answer is more volume, and sometimes it's borrowing someone else's. When we <a href="/evaluation-report">evaluate a shipping profile</a>, one of the first things we map is which tier your volume actually qualifies for, because brands are often paying for a tier below the one they could already be in.</p>
]]></content>
  </entry>
  <entry>
    <title>The quiet detractor problem</title>
    <link href="https://www.ironmargin.com/field-notes/the-quiet-detractor-problem/"/>
    <id>https://www.ironmargin.com/field-notes/the-quiet-detractor-problem/</id>
    <updated>2026-06-23T00:00:00.000Z</updated>
    <summary>When you move volume to a cheaper carrier, the risk that shows up in your complaint queue is the small part. The bigger cost is the customers who have a worse experience, say nothing, and quietly think less of your brand.</summary>
    <content type="html"><![CDATA[<p>When a brand looks at moving parcel volume to a cheaper carrier, the savings are easy to see and the risk is easy to underestimate. The risk people picture is the visible one: a botched delivery, an angry email, a support ticket. Those happen, and you can measure them. But the failure that actually erodes a brand is the one you never hear about.</p>
<h2>The detractor who never complains</h2>
<p>Most customers who have a mediocre delivery experience don't file a complaint. They just notice. The box arrived looking rough, or got left somewhere careless, or showed up later than the brand led them to expect. They don't write in. They don't ask for a refund. They simply form a slightly lower opinion of your brand and carry it quietly into the next purchase decision.</p>
<p>That's the quiet detractor, and it's dangerous precisely because it's invisible. Your complaint queue stays calm, your refund rate looks fine, and the dashboards say the carrier switch went great. Meanwhile a slice of your customers is converting a little less, repeating a little less, recommending a little less, for reasons that never surface as a number you'd think to look at.</p>
<h2>Why a downgrade hits brand, not just delivery</h2>
<p>The exposure is highest exactly where the savings are most tempting: large, bulky, or premium items. A few things stack up:</p>
<ul>
<li><strong>The last mile is the brand.</strong> For a lot of customers, the delivery <em>is</em> the most physical, memorable moment they have with you. Hand it to a carrier that treats the package carelessly and you've outsourced a brand impression to your cheapest vendor.</li>
<li><strong>Cheaping out reads as a signal.</strong> Customers who notice a downgrade in carrier or handling can read it as the brand cutting corners, which is corrosive for anything positioned as premium.</li>
<li><strong>Big items fail louder.</strong> A small parcel left in the wrong spot is a minor annoyance. A heavy, expensive item that arrives damaged or dumped is a story the customer tells other people.</li>
</ul>
<h2>How to make the call with eyes open</h2>
<p>None of this means alternative carriers are off the table. It means the customer-experience cost belongs in the decision next to the savings, instead of being discovered after the fact:</p>
<ol>
<li><strong>Name the tradeoff before you switch.</strong> Be honest about where the cheaper carrier falls short of the incumbent on handling and reliability, the same way you'd <a href="/field-notes/the-carrier-dilution-problem/">weigh the tradeoffs of any new carrier</a> before turning it on.</li>
<li><strong>Test on real volume first.</strong> A controlled pilot tells you how the carrier actually performs on your packages before you bet the whole experience on it. The point of a test isn't only price, it's whether the delivery holds up.</li>
<li><strong>Watch the quiet signals, not just the loud ones.</strong> Complaints are the tip. Look at repeat rate, reviews, and delivery performance by carrier, because the detractor effect hides in those long before it shows up as a ticket.</li>
</ol>
<p>The cheapest label is not free if it costs you a sliver of brand on every shipment. When we <a href="/evaluation-report">evaluate a program</a>, the question is never only what a switch saves, it's whether the experience survives it, because the damage that doesn't show up in the complaint queue is the kind that's hardest to win back.</p>
]]></content>
  </entry>
  <entry>
    <title>The DIM factor moves more money than the discount</title>
    <link href="https://www.ironmargin.com/field-notes/the-dim-factor-moves-more-than-the-discount/"/>
    <id>https://www.ironmargin.com/field-notes/the-dim-factor-moves-more-than-the-discount/</id>
    <updated>2026-06-23T00:00:00.000Z</updated>
    <summary>Everyone negotiates the discount percentage. For big, heavy, or oddly shaped parcels, the dimensional divisor quietly decides more of the bill. Here&#39;s why it&#39;s the lever to pull, and how to get a better one even if you can&#39;t negotiate.</summary>
    <content type="html"><![CDATA[<figure class="note-bars" role="img" aria-label="The same bulky package billed under two dimensional divisors. At a DIM divisor of 194 the billed dimensional weight is high; at a divisor of 250 it drops sharply, even though the box never changed size.">
  <div class="nb-chart">
    <div class="nb-group"><span class="nb-col nb-col--lose" style="height:100%"></span></div>
    <div class="nb-group"><span class="nb-col nb-col--win" style="height:62%"></span></div>
  </div>
  <div class="nb-labels">
    <div class="nb-lab"><b>DIM divisor 194</b><span>Higher billed weight on the same box</span></div>
    <div class="nb-lab"><b>DIM divisor 250</b><span>Lower billed weight, same box</span></div>
  </div>
</figure>
<p>When a brand sits down to negotiate carrier rates, almost everyone fixates on the same number: the discount percentage off the published rate. It's the number on the cover slide, it's easy to compare, and it feels like the whole game. For brands shipping light, compact parcels, it mostly is.</p>
<p>For anyone shipping big or heavy, it isn't. The number that decides more of the bill is one most people never bring up: the dimensional factor.</p>
<h2>What the DIM factor actually does</h2>
<p>Carriers don't bill heavy, bulky packages on actual weight. They bill on whichever is greater: actual weight or <em>dimensional</em> weight. Dimensional weight is a volume calculation: length by width by height, divided by a number the carrier sets. That divisor is the DIM factor.</p>
<p>The mechanics are worth sitting with, because they run opposite to intuition:</p>
<ul>
<li><strong>A lower divisor means a higher billed weight.</strong> Divide by 139 and a box prices like a heavier package than the same box divided by 194.</li>
<li><strong>A higher divisor means a lower billed weight.</strong> Push the divisor from 194 toward 250 and the same physical box bills as meaningfully lighter.</li>
</ul>
<p>Nothing about the package changes. Same dimensions, same contents. The only thing that moved was a number in your contract, and the cost moved with it.</p>
<h2>Why it dwarfs the discount on bulky freight</h2>
<p>Here's the part that catches people. On a concentrated profile of large packages, think 60 to 80 pound items, or anything where the box is big relative to its weight, dimensional weight is what's driving the invoice, not actual weight. So the divisor is multiplying nearly every shipment you send.</p>
<p>And it isn't only heavy freight. A long, skinny box is the sneakiest version of this. Ship a one-pound item in a 4-by-38-by-4 box and the volume calculation can bill it like a three to six pound package, depending on the divisor. The contents are light; the shape is what's expensive. Any brand shipping long or awkward dimensions is paying a dimensional penalty whether they realize it or not.</p>
<p>A few points of extra discount come off the rate once. A better DIM factor changes the <em>billed weight</em> that the rate is applied to, on every bulky package, every day. Compounded across a shipping profile that skews large, the divisor quietly outweighs the headline discount you spent all your energy fighting for.</p>
<p>That's the trap: the discount is visible and the divisor is buried, so attention flows to the wrong one.</p>
<h2>What to do about it</h2>
<p>If your packages skew big, heavy, or awkwardly shaped, treat the DIM factor as a first-class term, not a footnote:</p>
<ol>
<li><strong>Find your current divisor.</strong> It's in your carrier agreement. If you don't know it, that's the first problem to fix.</li>
<li><strong>Model the divisor, not just the discount.</strong> Run your real package dimensions through different DIM factors and watch the billed weight move. The dollar impact is usually larger than a few points of rate.</li>
<li><strong>Negotiate it explicitly.</strong> A move from a low divisor toward a higher one can be worth more than anything you'll win on the discount line, especially on a dimensional profile.</li>
</ol>
<h2>What if you're too small to negotiate</h2>
<p>Plenty of brands aren't shipping enough volume to negotiate their own divisor, so they live on published or reseller rates and assume the DIM factor is fixed. It isn't. You can often <em>access</em> a better divisor without negotiating one yourself, through an aggregator account that already carries favorable dimensional terms and plugs into the workflow you're already using.</p>
<p>That reframes the move for a smaller shipper: you're not trying to win a concession at the table, you're trying to get onto an account whose divisor is already better than the one quietly inflating your labels. Same outcome, different door.</p>
<p>This is the same instinct behind reading your costs at the <a href="/field-notes/the-source-truth-data-problem/">source rather than off a summary</a>: the number that decides your bill isn't always the one printed on the cover. When we <a href="/evaluation-report">evaluate a shipping profile</a>, the dimensional factor is one of the first things we check on any heavy or oddly shaped profile, because it's where the money usually is, and where almost no one looks.</p>
]]></content>
  </entry>
  <entry>
    <title>Don&#39;t decide a migration on a rate snapshot</title>
    <link href="https://www.ironmargin.com/field-notes/dont-decide-a-migration-on-a-rate-snapshot/"/>
    <id>https://www.ironmargin.com/field-notes/dont-decide-a-migration-on-a-rate-snapshot/</id>
    <updated>2026-06-23T00:00:00.000Z</updated>
    <summary>A planned carrier migration can be the right call one week and the wrong one the next, because rates move, sometimes as a direct response to you shopping. Here&#39;s why a snapshot is a shaky thing to commit to.</summary>
    <content type="html"><![CDATA[<figure class="note-bars" role="img" aria-label="The same lane priced at two points in time. The earlier snapshot shows a high rate that justified a migration; weeks later the incumbent's rate has dropped close to the alternative, erasing most of the gap.">
  <div class="nb-chart">
    <div class="nb-group"><span class="nb-col nb-col--lose" style="height:100%"></span></div>
    <div class="nb-group"><span class="nb-col nb-col--win" style="height:58%"></span></div>
  </div>
  <div class="nb-labels">
    <div class="nb-lab"><b>The snapshot you planned on</b><span>Incumbent looked expensive</span></div>
    <div class="nb-lab"><b>The rate a few weeks later</b><span>Same lane, quietly cheaper</span></div>
  </div>
</figure>
<p>Picture a brand that has done the work. They pulled their data, ran the comparison, and concluded their current platform was overcharging on a key service. The plan was set: migrate to a different carrier and capture the savings. Sensible, evidence-based, ready to execute.</p>
<p>Then, before the migration ran, the incumbent's rates on that service suddenly dropped, far enough that the gap that justified the whole move nearly closed. The migration got paused. Not because the analysis was wrong, but because the thing it was built on had moved.</p>
<h2>Rates are a moving target, not a fixed fact</h2>
<p>It's easy to treat a rate card like a measurement: you take it once, and now you know the number. You don't. A rate is a snapshot of a negotiation and a market on one particular day. Platforms run promotions. Carriers roll out new service tiers. Pricing gets revised quietly, with no announcement, and the number you built a decision on is simply different next month.</p>
<p>A migration is a heavy, slow thing: integrations, onboarding, operational change. Pinning that kind of commitment to a single-day reading is shakier than it feels, because the reading can move before you've finished acting on it.</p>
<h2>Sometimes the rate moves <em>because</em> you shopped</h2>
<p>There's a second-order effect worth naming. The act of shopping can change the price you were shopping.</p>
<p>When a brand starts integrating an alternative carrier, or volume visibly shifts toward a new option, the incumbent often notices, and a sudden, convenient rate drop on exactly the service you were about to leave is not always a coincidence. It can be a competitive response. That's not a reason to feel cheated; it's a reason to expect the board to change as you move pieces on it, and to not assume your snapshot will hold still.</p>
<h2>How to commit without getting whipsawed</h2>
<p>You can't make rates stop moving. You can stop letting a single reading drive an irreversible decision:</p>
<ol>
<li><strong>Re-check rates right before you pull the trigger.</strong> The number that justified the plan three weeks ago is not necessarily the number today. Confirm the gap still exists before you commit the migration.</li>
<li><strong>Decide on a durable margin, not a thin one.</strong> If the whole case rests on a small gap, it's fragile. One promotion erases it. A migration worth doing usually clears a margin big enough to survive normal rate movement.</li>
<li><strong>Treat a sudden drop as information.</strong> If shopping made your incumbent cheaper, you may have already captured much of the value without migrating at all. That can be the win, just not the one you planned.</li>
</ol>
<p>This is the same caution behind not trusting <a href="/field-notes/the-problem-with-rate-resellers/">a rate reseller's headline number</a>: the figure that looks decisive in isolation often doesn't survive contact with what happens next. When we <a href="/evaluation-report">evaluate a program</a>, the goal is a decision that holds up after the market moves, not one that was only true the morning we ran the numbers.</p>
]]></content>
  </entry>
  <entry>
    <title>Where you start the clock changes the SLA</title>
    <link href="https://www.ironmargin.com/field-notes/where-you-start-the-clock-changes-the-sla/"/>
    <id>https://www.ironmargin.com/field-notes/where-you-start-the-clock-changes-the-sla/</id>
    <updated>2026-06-22T00:00:00.000Z</updated>
    <summary>A carrier&#39;s dashboard can make on-time delivery look like a meltdown when the real problem is just where the clock starts. How you measure on-time decides whether you keep a carrier or cut one that&#39;s actually fine.</summary>
    <content type="html"><![CDATA[<figure class="note-bars" role="img" aria-label="The same shipments measured two ways: starting the clock at label creation counts your in-house dwell time against the carrier and makes performance look poor, while starting it at induction measures only the carrier's actual transit and looks healthy.">
  <div class="nb-chart">
    <div class="nb-group"><span class="nb-col nb-col--lose" style="height:34%"></span></div>
    <div class="nb-group"><span class="nb-col" style="height:96%"></span></div>
  </div>
  <div class="nb-labels">
    <div class="nb-lab"><b>Clock starts at label creation</b><span>Counts your dwell as the carrier's delay</span></div>
    <div class="nb-lab"><b>Clock starts at induction</b><span>Measures only the carrier's transit</span></div>
  </div>
</figure>
<p>A carrier's on-time dashboard can make a perfectly good carrier look like a disaster. The number says a big share of packages are running late, which is the kind of number that gets a carrier shut off the same afternoon.</p>
<p>Often it is a measurement gap, not a delivery problem.</p>
<h2>Two clocks, two very different stories</h2>
<p>Every &quot;on-time&quot; number is really a stopwatch, and the result depends entirely on when you press start.</p>
<ul>
<li><strong>Label creation.</strong> The moment you print the label. This is the earliest possible timestamp, and it is the one a lot of systems default to because it is the first thing they see.</li>
<li><strong>Induction.</strong> The moment the carrier actually takes physical possession of the package, scans it, and the transit clock genuinely begins.</li>
</ul>
<p>The gap between those two events is dwell time sitting in your own building: orders printed in a batch, staged, and picked up hours or sometimes a day later. None of that is the carrier's transit. But if your clock starts at label creation, all of that dwell gets charged to the carrier's SLA.</p>
<p>Start the clock at induction instead and the same carrier can look completely healthy. A meaningful share of the &quot;late&quot; cohort has often already delivered by the time anyone flags it. The packages were never the problem; the start line was.</p>
<h2>Why this matters before you cut a carrier</h2>
<p>The cost of the wrong clock is not just a bad chart. It is a decision. It is easy to be one report away from cutting a carrier whose pricing is strong and whose delivery is, on the honest measurement, excellent.</p>
<p>A few things worth doing before you act on an on-time number:</p>
<ol>
<li><strong>Ask what timestamp the SLA starts on.</strong> If the answer is &quot;label creation&quot; or nobody knows, the number is suspect until you confirm it.</li>
<li><strong>Separate your dwell from their transit.</strong> Label-to-induction time is yours to fix. Induction-to-delivery is the carrier's. Don't blame one party for the other's clock.</li>
<li><strong>Check what's already delivered.</strong> A late-looking cohort that has mostly arrived is a reporting artifact, not a service failure.</li>
</ol>
<p>This is the same trap as building rate-shopping rules on estimated delivery dates that drift: the data looks authoritative, and the gap only shows up when it changes a decision. Before you fire a carrier, make sure you're timing the right race.</p>
]]></content>
  </entry>
  <entry>
    <title>Operational data isn&#39;t billing data</title>
    <link href="https://www.ironmargin.com/field-notes/operational-data-is-not-billing-data/"/>
    <id>https://www.ironmargin.com/field-notes/operational-data-is-not-billing-data/</id>
    <updated>2026-06-22T00:00:00.000Z</updated>
    <summary>You can pull a carrier&#39;s tracking and delivery feed and still be unable to evaluate a cent of what they charge you. Why operational data and invoice data are two different pipes, and why an evaluation needs both.</summary>
    <content type="html"><![CDATA[<figure class="note-check" role="img" aria-label="A checklist of what carrier invoice data unlocks that operational tracking data cannot: contracted rate vs charged, surcharges and accessorials, variance and overcharges, and disputable amounts.">
  <ul>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Contracted rate vs. charged</b><span>What you should have paid against what you were billed.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Surcharges and accessorials</b><span>Re-weighs, dim adjustments, residential, fuel, line by line.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Variance and overcharges</b><span>The gap between quoted and billed, shipment by shipment.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>What's disputable</b><span>The slice you can actually file and recover.</span></div>
    </li>
  </ul>
</figure>
<p>A brand we work with had a carrier fully connected. Tracking numbers, delivery scans, service levels, the whole operational feed was flowing in. Everything looked covered. Then we went to evaluate the charges and hit a wall: there was nothing there to check.</p>
<p>The data we were pulling was operational. It was the same shape as what you already see in ShipStation. None of it was billing data.</p>
<h2>Two different pipes</h2>
<p>It is easy to assume that if you can see a carrier's shipments, you can see their charges. You usually can't. They travel through separate systems:</p>
<ul>
<li><strong>Operational data</strong> tells you what happened to the package. Where it is, when it shipped, when it delivered, which service tier it moved on. This is what powers tracking and delivery reporting.</li>
<li><strong>Billing data</strong> tells you what you were charged for it. Base rate, surcharges, accessorials, adjustments, and the variance against your contracted rate. This is what powers an evaluation.</li>
</ul>
<p>An operational feed can be 100% complete and still contain zero dollars. You can know exactly when every package arrived and have no idea whether you were overbilled on a single one of them.</p>
<h2>What the invoice unlocks</h2>
<p>Auditing for overcharges requires the invoice itself, and frequently it arrives on a different rail than the shipment data: emailed statements, a billing portal, an EDI feed, or a separate account entirely. With some carriers, the operational integration is the easy part and the invoices are the thing you have to go chase.</p>
<p>So the practical step, the same one we ran here, is to ask the carrier directly: how do the invoices arrive? Email, portal, or another system? Until that pipe is connected, the carrier is invisible to your evaluation even when the shipments are not, and it can quietly sit outside your weekly <a href="/field-notes/not-every-carrier-variance-is-a-refund/">overcharge and variance review</a> while every other carrier gets checked.</p>
<p>If you only wire up the operational side, you get a great tracking dashboard and a blind spot on the bill. An evaluation needs both pipes connected. Confirm you have the invoice data before you assume a carrier is covered.</p>
]]></content>
  </entry>
  <entry>
    <title>Not every carrier variance is a refund</title>
    <link href="https://www.ironmargin.com/field-notes/not-every-carrier-variance-is-a-refund/"/>
    <id>https://www.ironmargin.com/field-notes/not-every-carrier-variance-is-a-refund/</id>
    <updated>2026-06-22T00:00:00.000Z</updated>
    <summary>An invoice evaluation surfaces a big variance number. It&#39;s tempting to read it as money owed back. Most of it isn&#39;t. Here&#39;s what&#39;s actually disputable, and why the 30-day window matters more than the total.</summary>
    <content type="html"><![CDATA[<figure class="note-bars" role="img" aria-label="A total invoice variance bar next to a much smaller disputable portion. Most of the variance is legitimate adjustments like re-weighs, customs, and address corrections, which carriers will not refund.">
  <div class="nb-chart">
    <div class="nb-group"><span class="nb-col" style="height:100%"></span></div>
    <div class="nb-group"><span class="nb-col nb-col--lose" style="height:34%"></span></div>
  </div>
  <div class="nb-labels">
    <div class="nb-lab"><b>Total variance</b><span>Every dollar between quoted and charged</span></div>
    <div class="nb-lab"><b>Actually disputable</b><span>The slice you can realistically claim back</span></div>
  </div>
</figure>
<p>When you start auditing carrier invoices, the first number that jumps out is variance: the total dollar difference between what a shipment was quoted and what you were actually billed. It is a useful number. It is also the easiest one to misread.</p>
<p>A founder we work with saw the variance figures from a fresh evaluation and asked the natural question: does this mean we can go get all of it back?</p>
<p>Mostly, no. And being clear about that early is what keeps the evaluation credible.</p>
<h2>Variance is not the same as an overcharge</h2>
<p>The total variance lumps together two very different things:</p>
<ul>
<li><strong>Legitimate adjustments.</strong> Re-weighs, dimensional corrections, customs charges, address corrections, surcharges that genuinely apply. The carrier billed these correctly. They are not coming back, no matter how cleanly you file.</li>
<li><strong>Actual overcharges.</strong> Errors, misapplied surcharges, charges that violate your contracted rates. This is the disputable slice, and it is usually a fraction of the headline number.</li>
</ul>
<p>Quoting the full variance as &quot;recoverable&quot; sets up a disappointment. The honest move is to separate the two before anyone builds a recovery expectation around the big number.</p>
<h2>The window matters more than the total</h2>
<p>There is a second constraint that the variance total hides: timing. Carriers generally require overcharges to be disputed within about <strong>30 days of the invoice date</strong>. Miss the window and even a clean, valid dispute is dead.</p>
<p>That reframes where the value actually is:</p>
<ol>
<li><strong>Backward-looking recovery is capped.</strong> Some past variances are already outside the window and gone, and much of what remains was never disputable to begin with.</li>
<li><strong>The real value is forward.</strong> Once you are auditing weekly, you catch the disputable overcharges and file them inside the 30-day window, before they expire. Recovery becomes a steady process instead of a one-time treasure hunt.</li>
</ol>
<p>So when an evaluation hands you a variance number, resist reading it as a refund check. The right next step is to break it into disputable versus legitimate, confirm what is still inside the window, and then build the weekly cadence that catches the real overcharges before the clock runs out. That discipline is the same reason a <a href="/field-notes/the-problem-with-rate-resellers/">rate reseller's headline savings</a> rarely survive contact with the invoice: the topline number and the recoverable number are not the same thing.</p>
]]></content>
  </entry>
  <entry>
    <title>How to export your shipping data from Pirate Ship</title>
    <link href="https://www.ironmargin.com/field-notes/exporting-shipping-data-from-pirate-ship/"/>
    <id>https://www.ironmargin.com/field-notes/exporting-shipping-data-from-pirate-ship/</id>
    <updated>2026-06-22T00:00:00.000Z</updated>
    <summary>A 60-second walkthrough of pulling raw shipment history out of Pirate Ship as a CSV, plus the columns to turn on before you export.</summary>
    <content type="html"><![CDATA[<p>If you're sharing shipping data with us, or just want a clean CSV of your recent orders, Pirate Ship's <strong>Shipments</strong> grid exports the whole history in a couple of clicks.<sup class="note-cite"><a href="#ref-1">1</a></sup> Here's the 60-second version:</p>
<h2>The steps</h2>
<ol>
<li>Open the <strong>Ship</strong> page and click the magnifying glass to run a blank search. (Or go to <strong>Reports</strong> and click <strong>View All Shipments</strong> under Total Shipments.)<sup class="note-cite"><a href="#ref-1">1</a></sup></li>
<li>Optional: filter the grid by tracking status, shipping service, and more to narrow what you pull.</li>
<li>Click any column header, choose <strong>Columns</strong>, and turn on the fields you need (see below).</li>
<li>Click <strong>Export</strong>. It downloads every shipment matching your current search or filter as a CSV.</li>
</ol>
<h2>Turn these columns on first</h2>
<p>The default grid hides a few fields we need to benchmark your rates. Before you export, add <strong>Order ID</strong>, <strong>Carrier</strong>, <strong>Service</strong>, and the destination <strong>State</strong> and <strong>Country</strong>, alongside the weight, dimensions, and cost columns. The export only includes the columns you have showing, so it's worth a 10-second check.</p>
<h2>If the grid is huge</h2>
<p>Pirate Ship exports everything matching your search, so a wide-open blank search can be a lot of rows. If you only need recent data, filter the grid down to the last 30 or 90 days first, then export.</p>
<p>That clean CSV is exactly the raw material behind the rate-shopping rules we get into in <a href="/field-notes/the-problem-with-estimated-delivery-data/">the problem with estimated delivery data</a>.</p>
<section class="note-refs" aria-label="References">
<h2 class="note-refs-title">References</h2>
<ol>
<li id="ref-1"><a href="https://support.pirateship.com/en/articles/4143612-can-i-export-a-report-of-my-shipment-history" target="_blank" rel="noopener">Can I export a report of my shipment history?</a><span class="ref-src">Pirate Ship Support</span></li>
</ol>
</section>
]]></content>
  </entry>
  <entry>
    <title>The problem with rate resellers</title>
    <link href="https://www.ironmargin.com/field-notes/the-problem-with-rate-resellers/"/>
    <id>https://www.ironmargin.com/field-notes/the-problem-with-rate-resellers/</id>
    <updated>2026-06-17T00:00:00.000Z</updated>
    <summary>A rate reseller hands you a card that looks great on a spreadsheet. What it leaves out is everything that decides whether the deal actually works: your warehouse floor, your delivery speed, and whether the savings are real.</summary>
    <content type="html"><![CDATA[<figure class="note-bars" role="img" aria-label="An illustrative waterfall chart. A reseller's promised 15 percent savings erodes as three real costs are subtracted: baked-in surcharges, mid-term rate increases, and added warehouse and performance costs. What is left, the real savings, is a fraction of the promise.">
  <svg viewBox="0 0 620 256" width="100%" preserveAspectRatio="xMidYMid meet" focusable="false" aria-hidden="true">
    <line x1="20" y1="200" x2="600" y2="200" style="stroke:var(--text-3);stroke-opacity:0.35"></line>
    <g style="stroke:var(--text-3);stroke-opacity:0.5;stroke-dasharray:3 3">
      <line x1="114" y1="50" x2="150" y2="50"></line>
      <line x1="234" y1="120" x2="270" y2="120"></line>
      <line x1="354" y1="150" x2="390" y2="150"></line>
      <line x1="474" y1="170" x2="510" y2="170"></line>
    </g>
    <rect x="30"  y="50"  width="84" height="150" rx="2" style="fill:var(--accent)"></rect>
    <rect x="150" y="50"  width="84" height="70"  rx="2" style="fill:#C0392B"></rect>
    <rect x="270" y="120" width="84" height="30"  rx="2" style="fill:#C0392B;fill-opacity:0.85"></rect>
    <rect x="390" y="150" width="84" height="20"  rx="2" style="fill:#C0392B;fill-opacity:0.7"></rect>
    <rect x="510" y="170" width="84" height="30"  rx="2" style="fill:var(--accent)"></rect>
    <text x="72" y="40" text-anchor="middle" style="fill:var(--accent);font-size:15px;font-weight:700">15%</text>
    <g text-anchor="middle" style="font-size:14px">
      <text x="72"  y="222" style="fill:var(--text);font-weight:600">Promised</text>
      <text x="72"  y="240" style="fill:var(--text-3)">savings</text>
      <text x="192" y="222" style="fill:var(--text);font-weight:600">Baked-in</text>
      <text x="192" y="240" style="fill:var(--text-3)">surcharges</text>
      <text x="312" y="222" style="fill:var(--text);font-weight:600">Rate</text>
      <text x="312" y="240" style="fill:var(--text-3)">increases</text>
      <text x="432" y="222" style="fill:var(--text);font-weight:600">Ops +</text>
      <text x="432" y="240" style="fill:var(--text-3)">performance</text>
      <text x="552" y="222" style="fill:var(--text);font-weight:600">Real</text>
      <text x="552" y="240" style="fill:var(--text-3)">savings</text>
    </g>
  </svg>
</figure>
<p>A rate reseller's pitch is simple. They have negotiated rates with a carrier, they share a rate card, and the card shows you paying less than you pay today. On a spreadsheet it looks like free money.</p>
<p>The trouble is that a rate card is a price, not a program. The price is the easy part to show and the easy part to believe. What the reseller almost never accounts for is everything that determines whether that price actually holds up once it touches your business. We see the same three gaps over and over.</p>
<h2>They ignore what it does to your warehouse</h2>
<p>Adding a carrier is not a line-item change. It is an operational change, and it lands on the people working the floor.</p>
<p>When you bring on a new carrier, your team has to separate inventory into different stacks, figure out how to print labels across another system, and run separate workflows for each carrier they touch. A new pickup gets scheduled. A new set of edge cases gets learned. None of that shows up on the rate card, and the reseller selling you the card is rarely the one who has to make it work at 6am in the warehouse.</p>
<p>This is the same hidden cost behind <a href="/field-notes/the-carrier-dilution-problem/">the carrier dilution problem</a>: every carrier you add carries real operational overhead, not zero. A reseller optimizing for the lowest rate per package has no reason to weigh that against the friction it creates, because the friction is not their problem to absorb. It is yours.</p>
<h2>They don't verify delivery speed against your actual shipments</h2>
<p>The second gap is performance. A reseller will tell you the carrier they are sourcing has delivery speeds equivalent to what you have now. On paper, in a coverage map, that can even be true.</p>
<p>But the proof is in your actual ZIP codes and your actual shipments. Equivalent average transit time across the country tells you very little about how a carrier performs on the lanes you ship most. Someone has to verify that the carrier is genuinely picking up and delivering packages at a speed that works for your customers, in the regions where your orders actually go. That means looking at real delivery data, not a marketing claim, which is the whole reason <a href="/field-notes/the-problem-with-estimated-delivery-data/">estimated delivery data is so easy to get wrong</a>.</p>
<p>A slower carrier that saves you money on the rate card can quietly cost you far more in customer experience. A reseller is not measuring that, and usually cannot, because they do not have your performance data.</p>
<h2>They don't confirm the savings actually materialize</h2>
<p>The third gap is the one that does the most damage, because it goes to the heart of the pitch. A reseller promises something like fifteen percent savings, points at the rate card, and moves on. Two things they typically skip:</p>
<ol>
<li><strong>The card is often a base rate.</strong> Real shipping costs are full of surcharges and accessorials: residential fees, delivery area surcharges, dimensional weight, fuel, peak. If the quoted savings are calculated off a clean base rate and your real invoices are loaded with surcharges, the headline number is overstated, sometimes badly.</li>
<li><strong>Pricing moves.</strong> Carriers raise rates and adjust surcharges. A card that beats your current cost today may not beat it in six months, and a projection that assumes today's prices forever is not a projection you can bank on.</li>
</ol>
<p>The only honest way to know whether savings are real is to take the proposed rates and apply them to your actual shipment history, surcharges and all, then compare against what you actually paid on the same shipments. That is a <a href="/field-notes/the-source-truth-data-problem/">like-for-like comparison at decision time</a>, not a rate card held up next to a promise. If nobody is converting the card into your real, fully loaded cost, assume the savings are smaller than advertised.</p>
<h2>What to do instead</h2>
<p>None of this means a reseller's rate is bad. It means the rate card is the start of the analysis, not the end of it. Before you switch anything, get answers to three questions:</p>
<ol>
<li><strong>What does this cost the warehouse?</strong> Name the operational overhead of the new carrier honestly, and decide whether the savings are worth the friction.</li>
<li><strong>How does it actually deliver on my lanes?</strong> Verify performance against your real shipments and ZIP codes, not a coverage claim.</li>
<li><strong>Do the savings survive my real invoices?</strong> Re-rate your own shipment history against the proposed card, surcharges included, and compare like-for-like.</li>
</ol>
<p>This is exactly why we <a href="/evaluation-report">evaluate your data</a> before recommending a change. A cheaper number on a card is not the same as a better program in practice, and the difference only shows up once you look at your own shipments.</p>
]]></content>
  </entry>
  <entry>
    <title>Why &quot;I know a guy&quot; isn&#39;t a 3PL search</title>
    <link href="https://www.ironmargin.com/field-notes/why-i-know-a-guy-isnt-a-3pl-search/"/>
    <id>https://www.ironmargin.com/field-notes/why-i-know-a-guy-isnt-a-3pl-search/</id>
    <updated>2026-06-05T12:00:00.000Z</updated>
    <summary>A 3PL partner and I got onto how brands actually find providers, and we landed on the same frustration: post a need, collect a pile of &quot;I know a guy&quot; replies, pick one. A referral tells you a 3PL exists. It does not tell you it fits you.</summary>
    <content type="html"><![CDATA[<figure class="note-check" role="img" aria-label="Four things a referral cannot tell you about a 3PL: whether it fits your package profile and true cost, whether it covers your channel mix, whether its contract terms fit how you want to operate, and whether it is actually a strong operator.">
  <ul>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Your true cost</b><span>Whether their rate card, once converted to your real landed cost, actually beats the others, or just looks friendlier on the surface.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Your channel mix</b><span>Whether they run the channels you sell through today and the one you have not added yet, not just the one the referrer happens to use.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Your terms</b><span>Whether their contract length, flexibility, and the one specific requirement that decides it for you line up with how you need to operate.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Their quality</b><span>Whether they are a strong operator or just the best-marketed name, which is the part a referral almost never reflects.</span></div>
    </li>
  </ul>
</figure>
<p>I was on a call recently with a 3PL I was getting to know, and we drifted onto how brands actually find providers. We landed on the same frustration from opposite sides of the table. You see it in every founder community: someone posts &quot;who should I use for fulfillment?&quot; and the replies stack up, a pile of &quot;I know a guy.&quot; Everyone names the first provider that comes to mind. It feels like help, and it is the lazy version of a search, a popularity contest dressed up as a recommendation.</p>
<p>I am not against referrals. A name from someone you trust is a fine place to start a list. It is a terrible place to end one, and the gap between those two things is where brands get hurt.</p>
<h2>A referral tells you a 3PL exists, not that it fits</h2>
<p>The person dropping the name in the thread almost never knows the things that decide whether a provider is right for you. They do not know your package profile or what your <a href="/field-notes/the-source-truth-data-problem/">true landed cost</a> would be on their card. They do not know your channel mix, your forecast, or the one specific requirement that quietly makes or breaks the decision. They know that the guy worked for them, on their products, with their constraints, and they are extrapolating from a sample size of one.</p>
<p>That last requirement is the part people underestimate, because almost every brand has one. I have worked with a brand that needed robust API access so it could pull fulfillment and shipping data straight into the rest of its stack, and for them a provider without it was a non-starter no matter how good the rate was. Another could not stomach a long contract and needed month-to-month. Others ship heavy, bulky, or hazardous goods that most of the names in the thread cannot touch. None of that fits in a one-line referral, and a 3PL that was perfect for the person recommending it can be flatly wrong for you over a detail neither of you thought to mention.</p>
<h2>The loudest name is not the best operator</h2>
<p>There is a second problem hiding in the popularity contest: the names that come up most are usually the best-marketed, not the best-run. Some of the strongest operators I have seen are diamonds in the rough, genuinely excellent on the floor and nearly invisible in the communities, because they put their effort into the operation instead of the brand. They almost never win the &quot;I know a guy&quot; thread.</p>
<p>Meanwhile the most-named providers are sometimes the ones growing at all costs, taking volume they are not a fit for to feed the next round. The risk there is subtle. They can be perfectly good when you sign and then, as you become one account among thousands, quietly turn into a number. By the time you feel it, you are paying the <a href="/field-notes/the-switching-cost-the-spreadsheet-misses/">full switching cost</a> to leave. Name recognition is a measure of marketing reach. It is not a measure of whether they will still be the right partner for you a year in, which is <a href="/field-notes/what-a-best-in-class-3pl-looks-like/">what actually matters</a>.</p>
<h2>It hurts the good 3PLs too</h2>
<p>This was the part my counterpart felt from his side. A genuinely strong provider loses deals it should win, all the time, because the person evaluating it on the brand side cannot compare offers apples to apples. One competitor writes a rate card that looks cheaper on the surface, with low headline pick-and-pack fees and the margin tucked into shipping, and it beats a better provider whose card is honest but less flattering. The brand picks the friendlier-looking number and never learns it chose wrong.</p>
<p>So the laziness cuts both ways. Brands end up with a provider that does not fit, and the providers that would have fit never get a fair look. The fix for both is the same: stop treating a name as an answer and run it through a real <a href="/field-notes/the-source-truth-data-problem/">comparison built on your own data</a> instead of the version each provider chooses to show you.</p>
<h2>Treat the referral as one input, then do the work</h2>
<p>A referral earns a 3PL a spot on the list. After that, it gets the same scrutiny as everyone else. That means casting a <a href="/field-notes/choosing-and-working-with-a-3pl/">wide net at providers that already fit your profile</a>, vetting them on the questions that get past the proposal, and normalizing every rate card to your true landed cost before you compare. The whole arc is its own writeup, but the discipline starts here, at the moment you are tempted to shortcut it because a name you trust said a name they trust.</p>
<p>This is also where an impartial party earns its keep. Someone who represents your specific requirements, who is paid by you rather than collecting a kickback from whichever provider gets picked, and who can read the rate cards objectively, is the difference between &quot;I know a guy&quot; and &quot;I know this is the right guy for you.&quot; One is a starting point. The other is a decision you can stand behind. If you want that second read on a list you are already building, that is exactly the kind of call I am happy to take.</p>
]]></content>
  </entry>
  <entry>
    <title>What a best-in-class 3PL looks like, beyond price</title>
    <link href="https://www.ironmargin.com/field-notes/what-a-best-in-class-3pl-looks-like/"/>
    <id>https://www.ironmargin.com/field-notes/what-a-best-in-class-3pl-looks-like/</id>
    <updated>2026-06-04T14:00:00.000Z</updated>
    <summary>I spent an hour walking through a top-tier 3PL&#39;s operation for a brand I&#39;m evaluating partners for, and we barely talked about price. The rate card is the smallest part of what a great 3PL gives you. Here&#39;s the rest.</summary>
    <content type="html"><![CDATA[<figure class="note-check" role="img" aria-label="Five things to evaluate in a 3PL beyond price: communication you can live in, claims recovery, capacity to grow into, omnichannel coverage, and contracts and SLAs that favor you.">
  <ul>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Communication you can live in</b><span>A dedicated channel, the right people in it, and honest response times even when the answer is "we're looking into it."</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Claims recovery</b><span>A partner who makes filing easy, documents well, and treats lost and damaged freight as money to win back, not your paperwork.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Capacity to grow into</b><span>Automation and headroom so doubling your volume is a setup change on their side, not a renegotiation.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Omnichannel coverage</b><span>DTC, marketplaces, and retail EDI running through one hub instead of four disconnected setups.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Contracts and SLAs that favor you</b><span>Month-to-month freedom, written service guarantees, and the data to verify them.</span></div>
    </li>
  </ul>
</figure>
<p>I spent an hour recently walking through a 3PL's operation as part of an evaluation I'm running for a brand. We barely talked about price. The rate came up at the very end, almost as an afterthought, and that is exactly the right order.</p>
<p>Price is the easiest thing to compare, so it gets all the attention. It fits in a spreadsheet cell, and a brand can line up three quotes and point at the smallest number. But the rate card is the smallest part of what a good 3PL actually gives you, and most of the rest never makes it into the comparison. This note is about that rest: the things I look for that separate a best-in-class 3PL from a cheap quote.</p>
<h2>Communication you can live in</h2>
<p>The whole operation ran out of one shared workspace. Each client got a private channel, opened with an onboarding document that doubled as a checklist: the accounts to set up, the automation rules, the inbound plan, the billing details, a go-live meeting, and links to help docs and warehouse points of contact. By the time a brand was live, there was a written record of how everything was supposed to work.</p>
<p>What made the channel strong was who was in it. Not just an account manager, but the founders, operations managers, a client success lead who acts as the escalation point for anything complicated, and receiving staff on the warehouse floor. Response times were honest. A couple of hours was typical, and something that needed real investigation might take a day, but it always got acknowledged first. In my experience the acknowledgment matters more than the speed. &quot;We don't have an answer yet, here's when to expect one&quot; is worth more than silence followed by a fast fix.</p>
<p>The split between remote and on-the-ground staff was deliberate, too. Anything physical, damaged inbound or a unit that needs eyes on it, went to in-person account managers and receiving teams. Remote people handled software configuration, billing, and address holds, the things a computer can solve. A brand never had to wonder whether the person reading the message could actually walk over and look at the pallet. And the strongest signal of all was that they often caught problems first. Damaged inbound got flagged to the brand with photos before the brand knew anything was wrong. Proactive beats responsive every time.</p>
<h2>Claims recovery is money brands leave on the table</h2>
<p>The part that stuck with me was how they treat carrier claims, because it is a profit-recovery function dressed up as customer service. When a carrier loses or damages a package, that is money the brand is owed, and most brands never collect it.</p>
<p>This partner made filing nearly frictionless. A customer service rep could open a claim from the shared channel with a quick command, the system pulled the order by ID through the carrier API, and the claim landed in a queue with its documentation attached. From there the 3PL batched claims with photos and reason codes, submitted them to the carriers in bulk, and reconciled the responses on a dashboard: filed, won, lost, and why. Over a year that added up to tens of thousands of dollars handed back to brands.</p>
<p>Documentation is the whole game. Win rates climb with evidence, so they gather it deliberately: a photo from the end customer for damage, and for a misdelivery, a screenshot comparing the carrier's proof-of-delivery photo against the actual house on a map. The more complete the case, the higher the recovery. And the number that made the point: they had analyzed more than a million shipments to find which brands were under-filing. Channels with an engaged owner filed around four claims per thousand orders. Disengaged ones filed about one. Same shipping, same loss rate, very different recovery. The brands leaving claims unfiled were quietly eating losses the carrier would have paid back.</p>
<p>So when you evaluate a 3PL, ask what their claims process looks like and what they actually recover. A partner who makes filing easy, documents well, and tells you when you are under-filing is handing you money. One who treats claims as your problem is leaving it on the floor.</p>
<h2>Capacity to grow into</h2>
<p>Scalability is the question that does not matter until it suddenly does. A 3PL that fits you at 5,000 orders a month can become the thing forcing a painful switch at 20,000, and by then you are paying the <a href="/field-notes/the-switching-cost-the-spreadsheet-misses/">full switching cost</a> at the worst possible time.</p>
<p>This one had real headroom. They were running hundreds of thousands of orders a month across two facilities with a relatively small headcount, because the volume rode on automation rather than bodies: bagging machines, conveyor lines with inline and overhead labelers, a sortation system scanning packages into carrier bins, and a couple of warehouse robots. Their labor per shipment was low by design.</p>
<p>What that buys a brand is boring, which is the point. Going from 10,000 to 50,000 parcels a month is a setup change on their side, not a crisis on yours. For a single-unit product already boxed, the flow can be nearly untouched by human hands: a pallet beside a conveyor, a labeler applies the label, sortation routes it to the right carrier. When you evaluate a partner, look past whether they can handle you today and ask whether they can handle the version of you that the next two years are supposed to produce.</p>
<h2>One hub, many channels</h2>
<p>A brand can start DTC and swear it will stay that way, then a year later it is selling on Amazon, on TikTok, through a wholesale marketplace, and into a big-box retailer. If the 3PL can only really do DTC, every new channel becomes a project or a second vendor.</p>
<p>The setup I liked kept one system as the hub and let everything route through it. Online channels and marketplaces fed into the store platform, and the 3PL integrated with that platform, so adding a channel was usually a connection rather than a rebuild. Retail, which carries much heavier compliance requirements, was handled with dedicated EDI prep software for the big-box accounts. The practical version of the question is not &quot;do you support Amazon.&quot; It is &quot;when I add a channel I have not thought of yet, is that a connection or a construction project.&quot;</p>
<h2>Contracts and SLAs: how you leave, and what you're owed</h2>
<p>Two things I read every contract for: how I get out, and what I am owed when service slips.</p>
<p>Exit terms first. The default here was month-to-month, framed plainly: if we do a bad job, leave. That is the posture you want from a partner confident in their own service. I have reviewed the opposite, multi-year contracts with harsh penalties for leaving early, and a long lock-in with teeth should make you ask what it is really protecting. A partner <a href="/field-notes/give-your-incumbent-3pl-a-real-chance/">worth staying with</a> does not need to trap you.</p>
<p>SLAs second. There is a difference between how a 3PL operates and what it will put in writing, and both numbers are useful. This one operated same-day on orders placed before a 2pm cutoff and next-day after, seven days a week, but contractually committed to three business days, with pick fees refunded if they missed. That gap is normal and honest: the written SLA is the floor, not the target. The piece brands forget is transparency. An SLA you cannot measure is a promise you cannot enforce, so ask for the <a href="/field-notes/the-source-truth-data-problem/">performance data</a>, not just the guarantee, and confirm they are hitting the standard rather than taking their word for it.</p>
<h2>Carriers: flexibility, and the data to use it</h2>
<p>The last point sits right on the line between price and performance. The best operators are not loyal to one or two carriers. They work with anyone who has good rates and let the data decide. Economy carriers can be excellent in close-in zones and rough on the <a href="/field-notes/the-problem-with-estimated-delivery-data/">distant ones</a>, especially shipping out of a single location, and a partner with more than one facility can keep more of your volume in the cheap zones.</p>
<p>What that means for a brand is that you are not forced to choose price or performance once and live with it. You get to dial the mix, lean cheap where it holds up, and pull back where it does not, with the partner's own shipment data showing you where that line is. Flexibility plus visibility beats a single low headline rate that quietly degrades on your longest shipments.</p>
<h2>The cheapest quote is rarely the cheapest partner</h2>
<p>None of this argues for ignoring the rate. It argues for putting the rate in context. A partner a few cents cheaper per package can cost you more across a year if claims go unfiled, if a missed SLA never gets refunded because you could not measure it, or if you outgrow them and pay to switch.</p>
<p>When I compare 3PLs for a brand, the rate card is one input. The rest, communication, claims recovery, capacity, channel coverage, and contract terms, is what decides whether the relationship is still good a year in. That is the comparison worth making, and it is exactly the one that does not fit in a single cell. It is the vetting half of <a href="/field-notes/choosing-and-working-with-a-3pl/">choosing and working with a 3PL</a>, and the half most brands skip.</p>
]]></content>
  </entry>
  <entry>
    <title>Give your incumbent 3PL a real chance first</title>
    <link href="https://www.ironmargin.com/field-notes/give-your-incumbent-3pl-a-real-chance/"/>
    <id>https://www.ironmargin.com/field-notes/give-your-incumbent-3pl-a-real-chance/</id>
    <updated>2026-06-04T00:00:00.000Z</updated>
    <summary>When a brand starts shopping for a new 3PL, my first instinct is usually to see what&#39;s fixable with the one they already have. A lot of the friction is more fixable than it looks, and switching is rarely as easy as the spreadsheet makes it sound.</summary>
    <content type="html"><![CDATA[<figure class="note-bars" role="img" aria-label="The cost of working through your incumbent's current pain points is small. Switching to a new 3PL means re-paying onboarding, data cleanup, and the unknowns of a new partner, which usually sits well above that fix cost.">
  <div class="nb-chart">
    <div class="nb-min" style="bottom:36%"><span class="nb-min-tag">Cost to fix the incumbent</span></div>
    <div class="nb-group">
      <span class="nb-col" style="height:36%"></span>
    </div>
    <div class="nb-group">
      <span class="nb-col" style="height:90%;background:transparent;display:flex;flex-direction:column;border-radius:0;">
        <span style="height:60%;background:#C0392B;border-radius:5px 5px 0 0;" title="Onboarding, data cleanup, and the unknowns, paid again"></span>
        <span style="flex:1;background:var(--accent);border-radius:0;"></span>
      </span>
    </div>
  </div>
  <div class="nb-labels">
    <div class="nb-lab"><b>Fix the incumbent</b><span>Work through the current pain points</span></div>
    <div class="nb-lab"><b>Switch partners</b><span>Re-pay onboarding, data, and the unknowns</span></div>
  </div>
</figure>
<p>When a brand comes to me frustrated with their 3PL and starts asking about alternatives, my first instinct is usually not to find them a new one. It's to figure out what's actually fixable with the one they already have. That isn't loyalty to the incumbent, and it isn't a reflex to avoid work. It's that I've seen the <a href="/field-notes/the-switching-cost-the-spreadsheet-misses/">real switching cost</a> land enough times to know that a lot of the friction brands want to escape is more fixable than it looks, and that a switch carries its own pain that doesn't show up until you're in it.</p>
<p>So before I'd move anyone, I want to understand the true cost of leaving and what you give up by walking away. Most of the time, the honest first move is to give your incumbent a genuine chance to fix it.</p>
<h2>Some of the friction is usually on your side</h2>
<p>When shipping isn't going smoothly, the instinct is to put it all on the 3PL. And ultimately, yes, it is their job to run your fulfillment well. That's what you're paying for. But in my experience the friction is rarely one-sided. Some of it almost always sits on the brand's side too, and being honest about your half is the fastest way to fix the whole thing.</p>
<p>The brand can't run the warehouse, but it can make the warehouse's job a lot easier. Clean, complete <a href="/field-notes/the-source-truth-data-problem/">order data</a> so orders don't fall out and get chased by hand. One agreed channel for requests instead of questions scattered across five threads. A clear structure for the projects you hand over, so the 3PL isn't guessing at what you need. None of that is the 3PL's responsibility, and all of it changes how well they can serve you. If you haven't tightened up your side, you don't yet know how much of the problem is really theirs.</p>
<h2>Getting serious is what creates the urgency</h2>
<p>Here's the uncomfortable part. When you raise pain points casually, you often don't get the urgency the situation deserves. The 3PL hears feedback like that constantly, it goes in a queue, and it competes with every other account asking for something. Things drift.</p>
<p>What changes the dynamic is being genuinely ready to leave. When an incumbent understands you're seriously evaluating other options, it tends to light a fire. They don't want to lose the account, and problems that sat in a queue for months suddenly get a developer and a timeline. I've watched the same issue go from &quot;we'll look into it&quot; to actively being worked on, just because the brand reached the point where staying was no longer the default.</p>
<p>I want to be careful here, because this is easy to misread. I am not telling you to bluff. Manufacturing a threat you don't mean is a bad way to run a partnership, and good operators can tell the difference. But if you're genuinely at the point where you'd leave, there's nothing wrong with being honest about that. Said plainly, it can be the catalyst that finally gets the real problems addressed, which is the outcome you wanted in the first place.</p>
<h2>Get an objective read before you decide</h2>
<p>Before you act on either path, get a real read on what's actually wrong. That usually means a direct conversation with the 3PL about the root cause, not the symptom. The story a brand has built up about why things are broken is often bigger and scarier than the actual fix. I've gone into these calls expecting a deep structural problem and come out finding the core issue was narrow and specific, with both sides already working toward the same fix from different ends.</p>
<p>Sometimes the conversation goes the other way, and that's a real answer too. Sometimes there is genuinely nothing they can do. The capability isn't there, the fit is wrong, and no amount of good intent changes it. That's a true mismatch, and when it's a mismatch you should switch with confidence. The point of the conversation isn't to talk yourself into staying. It's to find out which situation you're actually in before you spend the money and the disruption to find out the hard way.</p>
<h2>What you keep by staying</h2>
<p>If the incumbent steps up, what you keep is worth more than it looks on a spreadsheet. You keep a known baseline, a partner who already understands your SKUs and your quirks and your peak. And you come out the other side with a stronger relationship than you started with, because nothing builds a working partnership like solving a hard problem together. A 3PL that has been through a rough patch with you and fixed it is often a better partner than a brand-new one that simply hasn't hit its first problem yet.</p>
<p>What you avoid is everything above the line in the chart at the top. Re-paying <a href="/field-notes/onboarding-a-new-carrier/">onboarding</a>, re-cleaning and re-mapping your data, and absorbing the unknowns of a new partner who will have problems of their own, some the same as your current ones and some you haven't met yet. Switching 3PLs is not a light decision and it is not a quick one. Done badly, it can cost you far more than the friction you were trying to leave behind.</p>
<h2>Keep an open mind</h2>
<p>I'm not arguing that you should never switch. Plenty of switches are the right call, and when it's a true mismatch I'll be the first to tell you to move. I'm arguing for the order of operations: tighten your own side, get an honest read on the root cause, and give your incumbent a genuine chance to step up before you decide they can't. Most of the time you get a better operation and a better relationship out of it without paying to switch at all. And on the occasions you don't, you'll know you're leaving for a real reason, not a fixable one, which is the only kind of switch worth making. And when it is, the move itself is <a href="/field-notes/choosing-and-working-with-a-3pl/">its own end-to-end process</a> worth running deliberately.</p>
]]></content>
  </entry>
  <entry>
    <title>Choosing and working with a 3PL, end to end</title>
    <link href="https://www.ironmargin.com/field-notes/choosing-and-working-with-a-3pl/"/>
    <id>https://www.ironmargin.com/field-notes/choosing-and-working-with-a-3pl/</id>
    <updated>2026-06-03T00:00:00.000Z</updated>
    <summary>A colleague asked what to actually look at when picking a 3PL. This is the whole arc in one place: the eight phases from first outreach to tracking the partner you signed, and where each one tends to go wrong.</summary>
    <content type="html"><![CDATA[<figure class="note-bars" role="img" aria-label="The eight phases of a 3PL engagement on a single left-to-right track, split into two halves. Choosing the partner covers phase 1 sourcing, 2 vetting, 3 analysis, 4 negotiation, and 5 contract review. Working with them covers phase 6 inventory transfer and software setup, 7 the first orders, and 8 SLA tracking and data quality.">
  <svg viewBox="0 0 640 196" width="100%" preserveAspectRatio="xMidYMid meet" focusable="false" aria-hidden="true">
    <path d="M40 60 L40 70 L360 70 L360 60" fill="none" stroke="var(--accent)" stroke-width="1.5" stroke-opacity="0.45"></path>
    <path d="M440 60 L440 70 L600 70 L600 60" fill="none" stroke="var(--accent)" stroke-width="1.5" stroke-opacity="0.45"></path>
    <text x="200" y="48" text-anchor="middle" style="fill:var(--accent);font-size:15px;font-weight:600">Choosing the partner</text>
    <text x="520" y="48" text-anchor="middle" style="fill:var(--accent);font-size:15px;font-weight:600">Working with them</text>
    <line x1="40" y1="108" x2="600" y2="108" stroke="var(--text-3)" stroke-width="2" stroke-opacity="0.3"></line>
    <g>
      <circle cx="40" cy="108" r="16" style="fill:var(--accent)"></circle>
      <text x="40" y="113" text-anchor="middle" style="fill:var(--on-brand);font-size:15px;font-weight:600">1</text>
      <text x="40" y="150" text-anchor="middle" style="fill:var(--text-3);font-size:14px">Source</text>
    </g>
    <g>
      <circle cx="120" cy="108" r="16" style="fill:var(--accent)"></circle>
      <text x="120" y="113" text-anchor="middle" style="fill:var(--on-brand);font-size:15px;font-weight:600">2</text>
      <text x="120" y="150" text-anchor="middle" style="fill:var(--text-3);font-size:14px">Vet</text>
    </g>
    <g>
      <circle cx="200" cy="108" r="16" style="fill:var(--accent)"></circle>
      <text x="200" y="113" text-anchor="middle" style="fill:var(--on-brand);font-size:15px;font-weight:600">3</text>
      <text x="200" y="150" text-anchor="middle" style="fill:var(--text-3);font-size:14px">Analyze</text>
    </g>
    <g>
      <circle cx="280" cy="108" r="16" style="fill:var(--accent)"></circle>
      <text x="280" y="113" text-anchor="middle" style="fill:var(--on-brand);font-size:15px;font-weight:600">4</text>
      <text x="280" y="150" text-anchor="middle" style="fill:var(--text-3);font-size:14px">Negotiate</text>
    </g>
    <g>
      <circle cx="360" cy="108" r="16" style="fill:var(--accent)"></circle>
      <text x="360" y="113" text-anchor="middle" style="fill:var(--on-brand);font-size:15px;font-weight:600">5</text>
      <text x="360" y="150" text-anchor="middle" style="fill:var(--text-3);font-size:14px">Contract</text>
    </g>
    <g>
      <circle cx="440" cy="108" r="16" style="fill:var(--accent)"></circle>
      <text x="440" y="113" text-anchor="middle" style="fill:var(--on-brand);font-size:15px;font-weight:600">6</text>
      <text x="440" y="150" text-anchor="middle" style="fill:var(--text-3);font-size:14px">Transfer</text>
    </g>
    <g>
      <circle cx="520" cy="108" r="16" style="fill:var(--accent)"></circle>
      <text x="520" y="113" text-anchor="middle" style="fill:var(--on-brand);font-size:15px;font-weight:600">7</text>
      <text x="520" y="150" text-anchor="middle" style="fill:var(--text-3);font-size:14px">First orders</text>
    </g>
    <g>
      <circle cx="600" cy="108" r="16" style="fill:var(--accent)"></circle>
      <text x="600" y="113" text-anchor="middle" style="fill:var(--on-brand);font-size:15px;font-weight:600">8</text>
      <text x="600" y="150" text-anchor="middle" style="fill:var(--text-3);font-size:14px">Track</text>
    </g>
  </svg>
</figure>
<p>A colleague recently asked me what people should actually be looking at with a 3PL, and whether there were any learnings worth passing along. I have written about pieces of this before, but never the whole arc in one place, so this is the full version. The first question is not how to run the process, rather it's whether you should <a href="/field-notes/outsourcing-vs-in-house-fulfillment/">outsource fulfillment at all</a>, and if so, when. The honest answer to when has very little to do with whether you are a big or small brand.</p>
<div class="gband">
<h2 id="numbers">When it makes sense to outsource</h2>
<p>Most founders assume a 3PL costs more than self-fulfilling. Often it is the reverse, and the reason is how shipping is priced.</p>
<p>When you pack orders yourself, you buy postage at close to retail, and the only carriers with the scale to pick up cheaply from a garage are the legacy three: USPS, UPS, and FedEx. A 3PL buys carrier capacity in bulk and passes wholesale rates down. It also plugs you into alternative and regional carriers, the DHL eCommerce, UniUni, GoFo, and Amazon tier, that will not deal with your volume directly. On your own, those carriers usually will not pick up from your location until you are shipping around 100 parcels a day, so self-fulfilling can leave you stuck on the legacy national carriers for a long stretch. Instead, if you join a 3PL, you borrow their volume from day one.</p>
<p>While you do add costs with pick-and-pack fees, often a dollar or two a unit, plus storage, the shipping line can decrease enough to cover that and then some. Whether it actually does is exactly what the analysis phase below, phase three, is for: converting the rate card into your true landed cost so the savings are real and verified before making any changes.</p>
<p>I recommend running the math on your own numbers. Say you ship 1,000 orders a month, 1 to 2 pound packages, paying about $8 a label through ShipStation. That is $8,000 a month, close to $100,000 a year, on shipping alone. At that level a 3PL with good rates can take enough off the per-parcel cost to cover its pick-pack and storage, and sometimes leave you ahead. The brands that never run this math assume the 3PL is the expensive option and never find out.</p>
<div class="table-wrap">
<table>
<thead>
<tr><th>Monthly volume</th><th>Self-fulfilling playbook</th><th>With a 3PL</th></tr>
</thead>
<tbody>
<tr><td>Under 1,000<span class="td-sub">≈ under $10k / mo</span></td><td>USPS, UPS, and FedEx through tools like ShipStation, eHub, or Unishippers. Compare rates across all of them.</td><td>Wholesale rates and alternative carriers right away, if it has real volume and fair margin.</td></tr>
<tr><td>1,000 to 5,000<span class="td-sub">≈ $10k to $50k / mo</span></td><td>Rural shippers stay on the legacy carriers above. Metro-heavy shippers can find a specialized SMB consolidation program.</td><td>The same upside, without waiting to qualify for a program on your own.</td></tr>
<tr><td>Over 5,000<span class="td-sub">≈ $50k+ / mo</span></td><td>Renegotiate your existing program and approach alternative carriers directly. Around 20,000 a month you can go to every major directly: Amazon, FedEx, USPS, UPS.</td><td>Usually still simpler to let the 3PL aggregate the volume.</td></tr>
</tbody>
</table>
</div>
<p>So self-fulfilling is a climb. You earn better carriers and better rates one tier at a time, and you do not get to approach all the majors directly until you are spending somewhere around twenty thousand a month. The 3PL route hands you most of that on day one. One caveat worth flagging: over the past five years carriers have increasingly preferred direct relationships with brands and put a premium on them, so how much of that aggregated-volume edge a 3PL keeps is worth watching.</p>
<p>The financial math is only half of it. The other half is time: how many hours a day fulfillment takes you and your team, and whether it is pulling you off product and marketing, which is usually where your real advantage lives. When the hours stop being worth it, that's a key indicator that it's time to outsource.</p>
</div>
<h2 id="timing">When in the year to do it</h2>
<p>A 3PL will tell you onboarding takes one to two weeks. Believe the spirit of that, but put in buffer. The full arc, the eight phases below, plus the issues that surface after you go live, can stretch across months. So time the move for a window where you can absorb a rough patch.</p>
<p>Run your search in your slow season. For most brands that is the first quarter, January through March, once the holiday dust has settled, or the mid-summer lull around July and August after any mid-year spike. Find the gap in your own seasonality. The one rule that holds for almost everyone: do not switch into Q4. Peak is the worst possible time to be ironing out label issues and first-pickup problems. If you are close to it, get through peak on what you know and revisit in the new year.</p>
<figure class="note-cal" role="img" aria-label="A typical year for timing a 3PL move. January through March, plus July and August, are good windows to search and switch. October through December, the peak season, is best avoided. April through June and September are workable. Map this to your own peak seasons and leave at least a three-month gap before a major one.">
  <div class="cal-row">
    <div class="cal-m cal-go">Jan</div>
    <div class="cal-m cal-go">Feb</div>
    <div class="cal-m cal-go">Mar</div>
    <div class="cal-m cal-ok">Apr</div>
    <div class="cal-m cal-ok">May</div>
    <div class="cal-m cal-ok">Jun</div>
    <div class="cal-m cal-go">Jul</div>
    <div class="cal-m cal-go">Aug</div>
    <div class="cal-m cal-ok">Sep</div>
    <div class="cal-m cal-avoid">Oct</div>
    <div class="cal-m cal-avoid">Nov</div>
    <div class="cal-m cal-avoid">Dec</div>
  </div>
  <div class="cal-legend">
    <span class="cal-key cal-go">Good window to switch</span>
    <span class="cal-key cal-ok">Workable</span>
    <span class="cal-key cal-avoid">Avoid (peak)</span>
  </div>
  <p class="cal-note">This is a typical year. Map it to your own peak seasons, and give yourself at least a three-month gap before a major one.</p>
</figure>
<div class="gband">
<h2 id="fix-first">If you already have a 3PL, try to fix it first</h2>
<p>Everything below assumes you have decided to move. If you already have a 3PL and you are frustrated, the first move usually is not to start sourcing. It is to see what is fixable with the partner you have, because brands underrate the pain of switching every single time, and a lot of the friction is more fixable than it looks.</p>
<p>Start by looking in the mirror. The friction is rarely one-sided. Some of it almost always sits on the brand, messy data or vague forecasting or requests scattered across five threads, and tightening your own side is the fastest way to find out how much of the problem is really theirs. Then get an objective read on the root cause. The story a brand builds up about why things are broken is usually bigger and scarier than the actual fix, and the fix is often narrow and specific.</p>
<p>There is also a dynamic worth naming. Pain points raised casually tend to sit in a queue. A brand that is genuinely ready to leave tends to light a fire, because the incumbent does not want to lose the account. I am not suggesting you bluff, but if you are honestly at that point, saying so can be the catalyst that finally gets the real problems addressed. And if you give that an honest shot and it is still the wrong partner, you switch with confidence, knowing you are leaving for a real reason rather than a fixable one. The full version of that case is its own writeup: <a href="/field-notes/give-your-incumbent-3pl-a-real-chance/">give your incumbent 3PL a real chance first</a>.</p>
<p>Once the numbers and the timing line up, and you have decided the move is really the right one, it breaks into eight phases, each with a predictable place it goes wrong. Here is where, and how to stay ahead of it.</p>
</div>
<h2 class="phase-head" id="phases"><span class="phase-ico"><svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="11" cy="11" r="7"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg></span>Phase one: sourcing</h2>
<p class="phase-tldr">Cast a wide net, and only at 3PLs that already serve brands like yours.</p>
<p>Sourcing is harder than it looks, and most people do it too narrowly. They fire off a one-off message, run a Google search, or ask a friend what they use and stop there. The biggest problem I see in this phase is that people do not go wide enough. A referral is a fine place to start that list and a poor place to end it: a name from your network tells you a 3PL exists, not that it fits you, and the most-recommended name is often the best-marketed rather than the best-run. That is its own writeup: <a href="/field-notes/why-i-know-a-guy-isnt-a-3pl-search/">why &quot;I know a guy&quot; isn't a 3PL search</a>.</p>
<p>A good 3PL search is at least ten to fifteen real conversations with providers that fit your criteria. Fit is the part people skip. You want 3PLs that already serve customers like you. If you are a DTC brand, they should have other DTC brands. If you are apparel, they should have other apparel. If you are omnichannel, they should already be running omnichannel. A 3PL that has solved your exact problem for someone else is worth far more than one that is willing to figure it out on your account.</p>
<p>To get to that many conversations, use the matchmaking services. <a href="https://www.fulfill.com/3pl">Fulfill.com</a>, <a href="https://thirdperson.co/">Third Person</a>, and <a href="https://www.warematch.com/">WareMatch</a> all connect brands with vetted providers, and they mostly cover the US. Other regions have their own matchmakers. You can also lean on people who are connected across a wide range of 3PLs, which is part of what I do. The point of this phase is the wide net, and the discipline to only cast it where the profile already matches.</p>
<h2 class="phase-head"><span class="phase-ico"><svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><polyline points="20 6 9 17 4 12"/></svg></span>Phase two: vetting</h2>
<p class="phase-tldr">Ask the questions that get past the proposal, and watch how openly they answer.</p>
<p>This is the phase where it pays most to have someone who has done it before. Every 3PL puts its best foot forward in the proposal. They tell you what you want to hear. Vetting is knowing the questions that get past that, so you can tell whether a provider is actually a fit or just selling themselves as one.</p>
<p>A lot of it comes down to transparency. Ask for references, and watch how openly they answer the direct questions:</p>
<ol>
<li>How many customers do you have, and how many locations?</li>
<li>How much square footage are you running?</li>
<li>What types of clients do you have, and how many?</li>
<li>How many of your clients ship packages with the same weights and dimensions as mine?</li>
<li>How many of your clients need the same kind of custom kitting, or whatever the specific work is on my orders?</li>
</ol>
<p>The answers matter, but so does the willingness to give them. A provider that handles these questions openly is showing you something. One that gets evasive is showing you something too. This only happens on calls, asking real questions and listening to how they respond, which is also why this is the easiest phase to rush and regret.</p>
<p>Those questions test transparency. A second set tests quality, the things that separate a best-in-class 3PL from a cheap rate card and that rarely show up in a proposal:</p>
<ul>
<li><strong>Claims recovery.</strong> When a carrier loses or damages a package, that is money you are owed, and most brands never collect it. The best partners make filing easy, document claims well, and even tell you when you are under-filing. A weak one treats claims as your problem. Over a year that gap is real money, so ask what their process looks like and what they actually recover.</li>
<li><strong>Communication.</strong> Ask how you will actually talk to them day to day. The strong ones run a dedicated channel with the right people in it, including someone who can walk over and look at your pallet, and they acknowledge a message even when the fix takes a day.</li>
<li><strong>Capacity to grow into.</strong> Can they absorb the version of you two years out without a renegotiation? Automation and real headroom are what make doubling your volume a setup change on their side instead of a crisis on yours.</li>
<li><strong>Omnichannel.</strong> The question is not &quot;do you support Amazon.&quot; It is whether adding a channel you have not thought of yet is a connection or a construction project.</li>
</ul>
<p>What good looks like across all of these is its own writeup: <a href="/field-notes/what-a-best-in-class-3pl-looks-like/">what a best-in-class 3PL looks like, beyond price</a>.</p>
<h2 class="phase-head"><span class="phase-ico"><svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="m12 14 4-4"/><path d="M3.34 19a10 10 0 1 1 17.32 0"/></svg></span>Phase three: analysis</h2>
<p class="phase-tldr">Turn every rate card into your true landed cost before you compare.</p>
<p>This is where a lot of brands get tripped up, because no two 3PLs price the same way and no two rate cards look alike. The most common trap is a provider that quotes very cheap pick-and-pack fees, the front-facing numbers you compare first, and then bakes its margin into shipping. They hand you a clean flat rate card that looks great, but they never convert it into what you will actually pay once surcharges, your real volume, and your package profile are applied.<sup class="note-cite"><a href="#ref-1">1</a></sup></p>
<p>The best 3PLs I have talked to do the opposite. They help you understand how to turn the card into your true landed cost. The hardest part of this phase is comparing providers apples to apples, objectively enough that you actually know who is most competitive rather than who wrote the friendliest-looking card. That is far easier when you are working from <a href="/field-notes/the-source-truth-data-problem/">source-truth data</a> rather than a summarized export, and it is exactly the kind of normalization we do when we <a href="/evaluation-report">evaluate a setup</a>. If you can, work from your own <a href="/field-notes/exporting-shipping-data-from-shipstation/">raw shipping data</a> rather than the version a provider chooses to show you.</p>
<h2 class="phase-head"><span class="phase-ico"><svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><polyline points="22 17 13.5 8.5 8.5 13.5 2 7"/><polyline points="16 17 22 17 22 11"/></svg></span>Phase four: negotiation</h2>
<p class="phase-tldr">Lead with what matters most to you, and name the offers you have elsewhere.</p>
<p>Negotiation is the combination of knowing what matters most to you and marrying it to what matters most to the 3PL, then finding terms that work for both. Term length is on the table. So is pricing. So are the various specific aspects of the offer. If you have better offers elsewhere, say so, and see whether a given provider is willing to cut its margin a bit to win the business. Leverage you do not mention is leverage you do not have.</p>
<h2 class="phase-head"><span class="phase-ico"><svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/><path d="M9 13h6"/><path d="M9 17h4"/></svg></span>Phase five: contract review</h2>
<p class="phase-tldr">Benchmark the terms, and protect your exit above all else.</p>
<p>Everyone is plugging contracts into Claude or ChatGPT now, and that is a genuinely good first pass for surfacing anything concerning. What these tools cannot do well is tell you what is normal, and a contract review is mostly a benchmarking exercise. Without knowing the industry standard, a clean-reading clause can still be a bad deal.</p>
<p>The main thing to watch for is exit. If something goes wrong and you need to leave, you do not want to be on the hook for a large penalty or a minimum you have to keep paying across a long contract. Favorable exit terms are worth more than almost anything else in the document, and a partner <a href="/field-notes/what-a-best-in-class-3pl-looks-like/">confident in their service</a> often defaults to month-to-month rather than a long lock-in with penalties. The other thing worth pushing for is to have the 3PL state its SLAs in the contract itself, so you both have a single source of truth you have agreed on and, ideally, a way to measure it over time.</p>
<h2 class="phase-head"><span class="phase-ico"><svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M14 18V6a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h2"/><path d="M14 9h4l4 4v4a1 1 0 0 1-1 1h-2"/><circle cx="7.5" cy="18" r="2"/><circle cx="17.5" cy="18" r="2"/><path d="M9.5 18h6"/></svg></span>Phase six: inventory transfer and software setup</h2>
<p class="phase-tldr">Clean your data first, and never move all of your inventory at once.</p>
<p>Once you have signed, you transfer inventory and set up the software, and this is where the work shifts onto you. The brand is responsible for doing this part well, and most of doing it well is data hygiene. Your data needs to be clean, not just in your WMS but in Shopify: HS codes, weights, dimensions, the fields the integration quietly depends on.<sup class="note-cite"><a href="#ref-2">2</a></sup> The cleaner the data you hand over, the less likely something breaks in the transfer or the setup.</p>
<p>The failure I have lived through is thinking everything looks fine until the inventory physically arrives and then orders will not go out, and now you are disappointing customers for two weeks or going on pre-order. Those have real consequences for a brand. So if you are switching, do not move 100% of your inventory and accept downtime. If you estimate two or three days of downtime, it is very likely to be more. Leave your existing 3PL on good enough terms that they will keep fulfilling for a set period while you transition. Ideally the new 3PL has your inventory sitting in their warehouse for at least a couple of weeks, getting familiar with your setup and running test orders, so they are not scrambling on day one. This is the part of the move where the <a href="/field-notes/the-switching-cost-the-spreadsheet-misses/">switching cost the spreadsheet misses</a> actually shows up.</p>
<p>The other half of the transfer is the physical move itself, and every inventory transfer is different. Before anyone schedules a truck, confirm the details on both ends, because the truck you book depends on them: pallet count, average pallet weight and dimensions, whether the inventory is all in one place or sitting in an offsite location, and how the freight gets on and off the truck at each stop. The one that bites people is the loading dock. If a facility does not have a dock, the truck has to be scheduled with a lift gate, and packing it with pallet jacks instead of a forklift changes the time and the equipment you need. A wrong assumption here, like booking a standard truck for a site with no dock, can delay the whole move. So walk both addresses before the pickup date and confirm dock, lift gate, and equipment rather than assuming the last transfer's setup carries over.</p>
<p>The part nobody plans for is the coordination, because a transfer is never one conversation. It is several running at once, between you, the new partner, the freight company, and the outgoing 3PL whose building your inventory is still sitting in. The freight company is usually ready to move the moment it has details, so the bottleneck is almost always the party you are leaving, who is the least motivated to be responsive and often not even on the same tools you are. Get a direct phone number early, decide who owns communication to each party so two people are not chasing the same answer in two threads, and price more than one scenario when the inventory is split across locations rather than assuming a single stop. And keep one eye on the downstream math: what the truck pulls this week determines what is left for every other commitment you have, including any retail or wholesale orders with hard pickup windows. I wrote up the full version of this, the freight booking and the apples-to-apples parcel comparison both, in <a href="/field-notes/a-quote-is-only-as-good-as-the-inputs/">a quote is only as good as the inputs</a>.</p>
<h2 class="phase-head"><span class="phase-ico"><svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><polygon points="6 4 20 12 6 20" fill="currentColor" stroke="none"/></svg></span>Phase seven: the first orders</h2>
<p class="phase-tldr">Prove it on a few live orders before you turn the volume up.</p>
<p>Then the first real orders go out. The discipline here is the same one that makes carrier onboarding work: prove it in production at low stakes before you scale. Run a <a href="/field-notes/onboarding-a-new-carrier/">test phase</a> on a small slice of live orders, confirm the labels and the data behind them are right, and only then turn the volume up. The week before the first batch is also where you <a href="/field-notes/before-your-first-pickup/">lock in the operational basics</a>, because a package that looks shipped in your system but is not <a href="/field-notes/the-problem-with-estimated-delivery-data/">actually moving</a> is the kind of problem you want to find on ten orders, not ten thousand.</p>
<h2 class="phase-head"><span class="phase-ico"><svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><polyline points="22 7 13.5 15.5 8.5 10.5 2 17"/><polyline points="16 7 22 7 22 13"/></svg></span>Phase eight: SLA tracking and data quality</h2>
<p class="phase-tldr">Choose a partner whose data lets you check both price and performance.</p>
<p>The last phase never really ends. You want a 3PL that gives you genuinely good data quality, because the data is how you check both the pricing and the performance you agreed to. Choose a partner that is tech-forward, shares data openly, and exposes APIs you can pull from to run your own analysis and your own SLA checks. If the data is poor, you have no way to know how your 3PL is actually performing, and that is exactly the position you do not want to be in. This is the same reason to push for <a href="/field-notes/the-source-truth-data-problem/">source-truth data</a> everywhere else in the stack, and the readout you get from it is only as honest as the <a href="/field-notes/the-problem-with-estimated-delivery-data/">delivery data</a> feeding it.</p>
<h2 id="closing">Look in the mirror, and hold onto a good one</h2>
<p>Two closing thoughts. First, when something is going wrong, look in the mirror before you look for the door, because the fix is often on your side. Second, when you find a genuinely good 3PL, one that is tech-forward, fair on margin, and willing to work with you, hold onto them. Brands underrate the pain of switching every time. It is a real cost, it always takes longer than expected, and it always introduces risk. A good partner you can build with, who keeps compounding in your favor, is worth more than a marginally cheaper card, which is the whole <a href="/field-notes/give-your-incumbent-3pl-a-real-chance/">case for giving your incumbent a real chance</a> before you start this process over. If you want that read on your own setup, that is exactly the kind of call I am happy to take.</p>
<div class="gband">
<h2 id="faq">Common questions</h2>
<details class="faq-item">
<summary>Is a 3PL more expensive than fulfilling orders yourself?</summary>
<p>Often it is the reverse. A 3PL buys carrier capacity in bulk and unlocks alternative and regional carriers you cannot access at low volume, and those wholesale shipping savings frequently cover the pick-pack and storage fees, sometimes leaving you ahead. Run the math on your own numbers before assuming the 3PL is the expensive option.</p>
</details>
<details class="faq-item">
<summary>Should I switch 3PLs, or try to fix the one I have?</summary>
<p>Try to fix it first. Look at your own side, cleaner data and clearer forecasting, get an objective read on the root cause, and only switch on a true mismatch. Switching is costly, slow, and risky, so it should be the last resort rather than the first move.</p>
</details>
<details class="faq-item">
<summary>What should I look for in a 3PL beyond price?</summary>
<p>Communication you can live in, claims recovery, capacity to grow into, omnichannel coverage, and contract and SLA terms, plus genuine data access. The rate card is the smallest part of what a good 3PL gives you.</p>
</details>
<details class="faq-item">
<summary>When in the year should I move 3PLs?</summary>
<p>Run your search in your slow season, usually the first quarter or the mid-summer lull, and never switch into Q4. Peak is the worst time to be ironing out label and first-pickup problems.</p>
</details>
<details class="faq-item">
<summary>What contract terms matter most?</summary>
<p>Exit terms above all. Avoid long lock-ins with penalties or minimums, and push to have the SLAs written into the contract with a way to measure them over time.</p>
</details>
<details class="faq-item">
<summary>How do I avoid downtime when switching?</summary>
<p>Do not move all of your inventory at once. Keep your outgoing partner fulfilling for a set period during the transition, and run a test phase on a small slice of live orders before you turn the volume up.</p>
</details>
<details class="faq-item">
<summary>Should I just go with a 3PL someone referred me?</summary>
<p>Use the referral as a starting point, not the decision. A name from your network tells you a 3PL exists, not that it fits your package profile, channel mix, or the specific requirement that decides it, and the most-recommended name is often the best-marketed rather than the best-run. Put it on the list, then run the same sourcing, vetting, and apples-to-apples analysis you would run on anyone else.</p>
</details>
</div>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Is a 3PL more expensive than fulfilling orders yourself?",
      "acceptedAnswer": { "@type": "Answer", "text": "Often it is the reverse. A 3PL buys carrier capacity in bulk and unlocks alternative and regional carriers you cannot access at low volume, and those wholesale shipping savings frequently cover the pick-pack and storage fees, sometimes leaving you ahead. Run the math on your own numbers before assuming the 3PL is the expensive option." }
    },
    {
      "@type": "Question",
      "name": "Should I switch 3PLs, or try to fix the one I have?",
      "acceptedAnswer": { "@type": "Answer", "text": "Try to fix it first. Look at your own side, cleaner data and clearer forecasting, get an objective read on the root cause, and only switch on a true mismatch. Switching is costly, slow, and risky, so it should be the last resort rather than the first move." }
    },
    {
      "@type": "Question",
      "name": "What should I look for in a 3PL beyond price?",
      "acceptedAnswer": { "@type": "Answer", "text": "Communication you can live in, claims recovery, capacity to grow into, omnichannel coverage, and contract and SLA terms, plus genuine data access. The rate card is the smallest part of what a good 3PL gives you." }
    },
    {
      "@type": "Question",
      "name": "When in the year should I move 3PLs?",
      "acceptedAnswer": { "@type": "Answer", "text": "Run your search in your slow season, usually the first quarter or the mid-summer lull, and never switch into Q4. Peak is the worst time to be ironing out label and first-pickup problems." }
    },
    {
      "@type": "Question",
      "name": "What contract terms matter most?",
      "acceptedAnswer": { "@type": "Answer", "text": "Exit terms above all. Avoid long lock-ins with penalties or minimums, and push to have the SLAs written into the contract with a way to measure them over time." }
    },
    {
      "@type": "Question",
      "name": "How do I avoid downtime when switching?",
      "acceptedAnswer": { "@type": "Answer", "text": "Do not move all of your inventory at once. Keep your outgoing partner fulfilling for a set period during the transition, and run a test phase on a small slice of live orders before you turn the volume up." }
    },
    {
      "@type": "Question",
      "name": "Should I just go with a 3PL someone referred me?",
      "acceptedAnswer": { "@type": "Answer", "text": "Use the referral as a starting point, not the decision. A name from your network tells you a 3PL exists, not that it fits your package profile, channel mix, or the specific requirement that decides it, and the most-recommended name is often the best-marketed rather than the best-run. Put it on the list, then run the same sourcing, vetting, and apples-to-apples analysis you would run on anyone else." }
    }
  ]
}
</script>
<section class="note-refs" aria-label="References">
<h2 class="note-refs-title">References</h2>
<ol>
<li id="ref-1"><a href="https://www.ups.com/us/en/supplychain/tools/surcharges" target="_blank" rel="noopener">Carrier surcharges and accessorials: the line items that move a flat rate card to true cost</a><span class="ref-src">UPS</span></li>
<li id="ref-2"><a href="https://help.shopify.com/en/manual/international/shipping/hs-codes" target="_blank" rel="noopener">Adding HS codes to your products: the kind of clean source data a 3PL handoff depends on</a><span class="ref-src">Shopify Help</span></li>
</ol>
</section>
]]></content>
  </entry>
  <entry>
    <title>The source-truth data problem</title>
    <link href="https://www.ironmargin.com/field-notes/the-source-truth-data-problem/"/>
    <id>https://www.ironmargin.com/field-notes/the-source-truth-data-problem/</id>
    <updated>2026-06-02T00:00:00.000Z</updated>
    <summary>Your rate card is the most filtered version of your own shipping data. Every layer between you and the carrier strips columns out. In the AI era, that filtering quietly costs you.</summary>
    <content type="html"><![CDATA[<figure class="note-bars note-funnel" role="img" aria-label="A funnel showing shipping data narrowing at each stage: the carrier holds the full data set, the 3PL or TMS receives a reduced version, and the brand receives the least.">
  <svg viewBox="0 0 600 250" width="100%" preserveAspectRatio="xMidYMid meet" focusable="false" aria-hidden="true">
    <polygon points="40,28 340,28 297.8,82 82.2,82" style="fill:var(--accent);fill-opacity:1"></polygon>
    <polygon points="82.2,82 297.8,82 256.4,135 123.6,135" style="fill:var(--accent);fill-opacity:0.6"></polygon>
    <polygon points="123.6,135 256.4,135 215,188 215,232 165,232 165,188" style="fill:var(--accent);fill-opacity:0.32"></polygon>
    <text x="372" y="52" style="fill:var(--text);font-size:17px;font-weight:600">Carrier</text>
    <text x="372" y="72" style="fill:var(--text-3);font-size:14px">Holds the full data set</text>
    <text x="372" y="105" style="fill:var(--text);font-size:17px;font-weight:600">3PL or TMS</text>
    <text x="372" y="125" style="fill:var(--text-3);font-size:14px">Receives a reduced version</text>
    <text x="372" y="186" style="fill:var(--text);font-size:17px;font-weight:600">You</text>
    <text x="372" y="206" style="fill:var(--text-3);font-size:14px">Get the least of all</text>
  </svg>
</figure>
<p>If you are a brand that relies on a 3PL or TMS for transportation, the rates you see are the most filtered version of your own data, and most people never realize it.</p>
<h2>The data funnel</h2>
<p>Start at the top. The shipping carrier collects everything, down to the charge-code level. They hold the dimensional weight they actually billed, the zone they assigned, every accessorial and surcharge that landed on each package, the discount taken at each weight and zone break, and the billing adjustments made after the fact. They are the source.</p>
<p>Before that data reaches your 3PL or TMS, the carrier decides which columns to pass along and how to clean them. Your provider receives a reduced version. Then, when they hand you a rate card, they reduce it again. By the time the numbers land in front of you, the brand, you are looking at a summary of a summary.</p>
<p>Each handoff strips detail out. That is the funnel: full data at the carrier, less at the 3PL or TMS, least at the brand.</p>
<h2>Why it was built this way</h2>
<p>None of this is malicious. It is built for simplicity. A full carrier data feed is overwhelming, and for years the right move was to hand brands something digestible they could act on. Fewer columns, cleaner labels, a rate card you can read in a minute. That tradeoff made sense.</p>
<h2>AI changes the calculus</h2>
<p>It makes less sense now. When you put an AI to work interpreting your rate cards and modeling decisions, context is the constraint. The more complete the data you feed it, the better its read. A summarized rate card throws away exactly the detail that would let you, or your AI, find where you are overpaying.</p>
<p>So the thing that used to be a feature, the filtering, is now a cost. As a brand today, what you want is access to every column you can get, ideally through a direct API integration with the carrier rather than a cleaned export passed down the chain.</p>
<p>The brands that get closest to source-truth data are the ones that will read their costs accurately and make sound decisions. The ones stuck with the most filtered version will be guessing. This is the same instinct behind <a href="/field-notes/exporting-shipping-data-from-shipstation/">exporting your raw shipping data</a> instead of trusting a dashboard summary.</p>
<h2>What to look for in a partner</h2>
<p>If you are <a href="/field-notes/choosing-and-working-with-a-3pl/">choosing a 3PL</a>, TMS, or carrier today, weigh data access as seriously as price.</p>
<ol>
<li><strong>Clean API docs.</strong> A partner that is technically sound and can hand you the data you need, programmatically, is worth more than one that emails you a trimmed spreadsheet.</li>
<li><strong>Nothing to hide.</strong> Openness about the full data set is a good signal. Reluctance to share it is a signal too.</li>
<li><strong>Able to adapt.</strong> Ask where they are headed over the next one to five years.</li>
</ol>
<p>If you are working with a legacy 3PL or TMS that you do not think can keep up with this shift, that is worth a hard look. You can start small. Ask them for more data transparency and watch how they respond. The answer tells you a lot.</p>
<p>This is the direction we think the whole industry is moving, and it is why we <a href="/evaluation-report">evaluate your data</a> at the source rather than taking a rate card at face value.</p>
]]></content>
  </entry>
  <entry>
    <title>Outsourcing fulfillment, or keeping it in house</title>
    <link href="https://www.ironmargin.com/field-notes/outsourcing-vs-in-house-fulfillment/"/>
    <id>https://www.ironmargin.com/field-notes/outsourcing-vs-in-house-fulfillment/</id>
    <updated>2026-06-01T16:00:00.000Z</updated>
    <summary>When does it make sense to hand fulfillment to a 3PL, and when should you keep it under your own roof? It comes down to your commodity, your competitive advantage, the kind of business you want to build, and your size.</summary>
    <content type="html"><![CDATA[<figure class="note-bars" role="img" aria-label="A curve of how likely a brand is to outsource fulfillment by size: small brands self-fulfill, mid-size brands are the most likely to outsource, and large brands tend to bring it back in house.">
  <div class="nb-chart">
    <div class="nb-group">
      <span class="nb-col" style="height:30%"></span>
    </div>
    <div class="nb-group">
      <span class="nb-col" style="height:88%"></span>
    </div>
    <div class="nb-group">
      <span class="nb-col" style="height:40%"></span>
    </div>
  </div>
  <div class="nb-labels">
    <div class="nb-lab"><b>Small</b><span>Self-fulfills to stay high touch</span></div>
    <div class="nb-lab"><b>Mid-size</b><span>Most likely to outsource</span></div>
    <div class="nb-lab"><b>Large</b><span>Often brings it back in house</span></div>
  </div>
</figure>
<p>The question of whether to outsource fulfillment or keep it in house comes up constantly, and there is no single right answer. There are a few vectors worth thinking through, and where you land on each one tells you most of what you need to know.</p>
<h2>What you sell, and how complex it is to fulfill</h2>
<p>The first vector is your commodity. How complex is the fulfillment, and how custom is it for the product you sell?</p>
<p>For something high touch and customized, or something with a very high SKU count, keeping it in house can make sense. I spoke with a brand in the vinyl space that fits this profile. They carry thousands of SKUs, but because the inventory is not big and bulky, their storage cost stays relatively low. For them, keeping fulfillment in house is the right call.</p>
<p>Compare that to <a href="/case-studies/freak-athlete/">Freak Athlete</a>. They have a much smaller SKU count, maybe fifteen courses plus some accessories, and the product is big and bulky. They also do no customization on the packaging. It arrives from the manufacturer pre-packaged and ready to go, so the work is essentially slapping on a label and getting it out the door. But because that inventory takes up so much space, it makes sense for them to outsource to someone who already pays for the warehouse and the storage.<sup class="note-cite"><a href="#ref-1">1</a></sup> That frees them to put more of their attention on product and marketing, which is the business they are trying to build.</p>
<h2>The shape of the curve</h2>
<p>There is an interesting pattern here. The businesses in the middle are the most likely to outsource. On either end you find companies keeping it in house, but for different reasons.</p>
<p>The small businesses self-fulfill because that is how you start. When you are small you want to be high touch with every order, and as long as you can do it yourself, you might as well. It costs you time, not cash, and you learn your own operation in the process.</p>
<p>The large brands bring it back in house for the opposite reason. At a certain scale, the economics let them make big bets. They can rent or own warehouse space and buy the equipment, then watch that investment pay off in better unit economics over the long run. They can afford to think longer term, and that is what makes bringing fulfillment back in house the rational move for them.</p>
<p>One of my close friends runs a clothing brand that is growing nicely, and he asked me when the right time is to consider a 3PL. The rule he is gauging it against is simple: as long as it is not eating a ridiculous amount of his time, and he does not feel it pulling him away from product development and marketing, he keeps doing it himself. He is in apparel, so it does not take up much space, and he can likely hold on for a good while before he needs to outsource. But once you reach the moment where fulfillment starts pulling at your attention, you have a decision to make. At that point you either commit to building the in-person operation you want, or you <a href="/field-notes/the-switching-cost-the-spreadsheet-misses/">hand your logistics to a 3PL</a>.</p>
<h2>Where your attention should go</h2>
<p>Underneath the commodity and the size question is a simpler one. What is your competitive advantage, and where do your team and your capital create the most value?</p>
<p>For most consumer brands, the edge is product and marketing. That is what wins customers, and it is what compounds over time. Fulfillment, done well, is invisible. Nobody buys from you because your warehouse is great. They buy because the product is great and the brand reached them. When product and marketing are your advantage, your attention and your money usually belong there, and handing fulfillment to a partner who does it for a living is the cleaner trade.</p>
<p>This weighs even heavier in a hyper-competitive market where you are trying to take share quickly. Speed is the point, and signing a warehouse lease, hiring a fulfillment team, and buying equipment is a slow, capital-heavy way to spend the time and money that could be going straight into growth. A 3PL lets you stay light while you move.</p>
<p>The flip side is when you are building for the long run. If you see the brand as a thirty-year business rather than a quick climb, owning the operation and the whole customer experience can be worth the investment, and the math that looks slow today can pay off over a much longer horizon.</p>
<h2>When you already manufacture</h2>
<p>A final example is Healthy Sol, a soap company I have worked with. They take real pride in their product and manufacture it themselves.</p>
<p>If you are a brand that already manufactures in house, adding fulfillment on top of that is a smaller marginal step. The pain point is much lower than it would be for a brand manufacturing overseas, where outsourcing logistics tends to be the more natural choice. Healthy Sol has made the commitment to do everything in house. They source their ingredients locally, and because soap does not carry ridiculous inventory demands or take up much space, they can comfortably run their own warehouse. For them, having everything under one roof is the point.</p>
<h2>What the data says, with a caveat</h2>
<p>There is one data point worth knowing. EcommerceFuel's 2026 Trends Report, drawn from 300 store owners, found that brands which own their warehouse grew revenue 3.9% over the year, compared to 33.5% for brands that lease warehouse space and 22.2% for brands that outsource fulfillment entirely.<sup class="note-cite"><a href="#ref-2">2</a></sup></p>
<p>That is a large gap, and it is tempting to read it as proof that owning a warehouse slows you down. I would be careful with the causation. It is hard to know exactly why the gap exists. Fast-growing brands may simply choose to stay flexible and outsource, rather than outsourcing being the thing that makes them grow. Owning a warehouse also ties up cash and attention in a fixed asset, which can quietly limit how fast you respond when demand moves. Either way, the signal is worth taking seriously. Committing to your own warehouse early lines up with slower growth, so the burden of proof sits on owning it, not on outsourcing.</p>
<h2>The factors that decide it</h2>
<p>So there are a few factors at play. One is the commodity itself and how it fulfills. Two is your competitive advantage, and whether fulfillment is pulling attention away from it. Three is the kind of business you want to build. Four is the size and scale you are operating at. A lot goes into it, and the same brand can land in a different place as it grows. The right answer is the one that fits where your business is now and where you are trying to take it. And if the answer is to outsource, <a href="/field-notes/choosing-and-working-with-a-3pl/">choosing and working with a 3PL</a> is its own end-to-end process worth getting right.</p>
<section class="note-refs" aria-label="References">
<h2 class="note-refs-title">References</h2>
<ol>
<li id="ref-1"><a href="https://www.cbre.com/insights/figures/q1-2026-us-industrial-and-logistics-figures" target="_blank" rel="noopener">U.S. industrial and logistics figures: warehouse rents and availability</a><span class="ref-src">CBRE</span></li>
<li id="ref-2"><a href="https://www.ecommercefuel.com/ecommerce-trends/" target="_blank" rel="noopener">2026 Trends Report: owned warehouses grew 3.9% vs 33.5% leased and 22.2% outsourced</a><span class="ref-src">EcommerceFuel</span></li>
</ol>
</section>
]]></content>
  </entry>
  <entry>
    <title>Before your first pickup: five things to lock in</title>
    <link href="https://www.ironmargin.com/field-notes/before-your-first-pickup/"/>
    <id>https://www.ironmargin.com/field-notes/before-your-first-pickup/</id>
    <updated>2026-06-01T12:00:00.000Z</updated>
    <summary>You signed with a new carrier and you have a first pickup date. Here are the five things to set up before the truck shows up, so day one runs like every day after it.</summary>
    <content type="html"><![CDATA[<figure class="note-check" role="img" aria-label="A pre-first-pickup checklist with five items: software and portal access, pickup time, transportation phone number, bags and materials, and the manifest.">
  <ul>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Software and portal access</b><span>Find tracking, pull reports, and drill into any order or tracking number.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Pickup time</b><span>Pick a two-hour window that fits your day, then dial it in.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Transportation phone number</b><span>The back office, and ideally the direct line to your driver.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>Bags and materials</b><span>On hand and stored before day one, not chased down after it.</span></div>
    </li>
    <li>
      <span class="nc-mark"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg></span>
      <div class="nc-text"><b>The manifest</b><span>Know where to print it, then hand it to the driver in person.</span></div>
    </li>
  </ul>
</figure>
<p>You <a href="/field-notes/onboarding-a-new-carrier/">signed with a new carrier</a> and you have a first pickup date. The week before that date is where you set the program up to actually run. A few things are worth locking in before the first truck shows up, and here is the checklist I work through.</p>
<h2>Software and portal access</h2>
<p>Make sure the software is fully set up before day one, not just the API key connected. You want to be able to find tracking information, download reports, and double-click into any order or tracking number to see exactly what is going on. Full visibility is the point. If you cannot see into an order when something looks off, you are flying blind on the days you can least afford it.</p>
<h2>Pickup time</h2>
<p>Most carriers give you a two-hour pickup window, and you choose the one that fits your operation. If you ship later in the day you might take 4 to 6 PM. If you finish earlier you might take 2 to 4 PM. Set the window, then plan to dial it in, because the first few days are rarely perfect. The driver might come early, or come late. Some carriers send the same driver every day, others rotate. You want the pickup as reliable as you can get it, because a predictable pickup is what lets you build the rest of the day around it.</p>
<h2>Transportation phone number</h2>
<p>This is what makes the pickup reliable. Get the back office number, and if you can, the direct contact for your driver, especially if it is the same driver each day. That relationship is worth more than people expect. Anyone who self-fulfills or runs a 3PL wants this line open, and when you are bringing on a new carrier you want it established as early as possible, not the first time something goes wrong.</p>
<h2>Bags and materials</h2>
<p>Most carriers let you use whatever bags and materials you want, so make sure you have somewhere to store them, whether that is a Gaylord or bins. If you need free materials, a lot of carriers will provide them on request. Put that request in early so the materials are on hand before your first pickup date, rather than chasing you after it.</p>
<h2>The manifest</h2>
<p>At the end of the day you hand the driver a manifest, the forms that cover each batch of shipments. Print it after you have printed everything else for the day. What I would recommend is knowing exactly where to print it, then printing it when the driver actually arrives. Ask for a few extra minutes, hand it over in person, and walk through it with them to confirm it is exactly what they need before they leave. Do not just hand over a stack without talking to the driver. The last thing you want on day one is a bag of packages going out with an inaccurate manifest or labels that have issues, because that is a batch of orders delayed a few days while it gets sorted out. That is not how you want to start.</p>
<p>None of this is complicated. Skipping it is how a clean onboarding turns into a rough first week. Lock these five in before the truck shows up, and day one starts to look like every day after it.</p>
]]></content>
  </entry>
  <entry>
    <title>The switching cost the spreadsheet misses</title>
    <link href="https://www.ironmargin.com/field-notes/the-switching-cost-the-spreadsheet-misses/"/>
    <id>https://www.ironmargin.com/field-notes/the-switching-cost-the-spreadsheet-misses/</id>
    <updated>2026-06-01T00:00:00.000Z</updated>
    <summary>A new carrier or 3PL almost always looks like easy savings on a spreadsheet. The cost that doesn&#39;t show up there is the one that gets people. Here&#39;s how to weigh a switch honestly.</summary>
    <content type="html"><![CDATA[<figure class="note-bars" role="img" aria-label="On the spreadsheet, a switch shows the full projected savings. In reality, the disruption and reputational cost of switching carves into the top of that number, so the net savings that actually land are smaller.">
  <div class="nb-chart">
    <div class="nb-min" style="bottom:84%"><span class="nb-min-tag">Projected savings</span></div>
    <div class="nb-group">
      <span class="nb-col nb-col--win" style="height:84%"></span>
    </div>
    <div class="nb-group">
      <span class="nb-col" style="height:84%;background:transparent;display:flex;flex-direction:column;border-radius:0;">
        <span style="height:46%;background:#C0392B;border-radius:5px 5px 0 0;" title="Disruption and reputational cost"></span>
        <span style="flex:1;background:var(--accent);border-radius:0;"></span>
      </span>
    </div>
  </div>
  <div class="nb-labels">
    <div class="nb-lab"><b>On the spreadsheet</b><span>The full savings you modeled</span></div>
    <div class="nb-lab"><b>In reality</b><span>Switching cost eats the top off</span></div>
  </div>
</figure>
<p>Switching costs are the most underrated number in a carrier or <a href="/field-notes/outsourcing-vs-in-house-fulfillment/">3PL decision</a>. People hear that onboarding takes a week, that the new partner can accept inventory in a week, that they'll be up and running in no time, and they plan around the best case. It almost always takes longer than that. And no matter how good a job you do choosing a partner, a switch introduces risk you can't fully design away.</p>
<p>I've run these transitions dozens of times. You can cross every t and dot every i, and there's still something each time that you didn't see coming. That's not an argument against switching. Plenty of switches are the right move and pay for themselves quickly. It's an argument for pricing the switch honestly instead of treating it as free, because the brands that get burned are almost always the ones who modeled the savings and skipped the cost.</p>
<h2>What goes wrong on the carrier side</h2>
<p>The first day or two with a new carrier is where the gap between the plan and reality shows up. A few of the usual ones:</p>
<ol>
<li><strong>The pickup isn't smooth.</strong> The new carrier doesn't show, or the first pickup is rough and disorganized, and day one doesn't go out the door the way you expected.</li>
<li><strong>Labels have issues.</strong> Something's off in the label generation or the data behind it, so packages that look shipped in your system aren't actually moving in transit at the <a href="/field-notes/the-problem-with-estimated-delivery-data/">speed you were promised</a>. You don't always catch it until the tracking doesn't update.</li>
<li><strong>Prices move.</strong> Rate increases or accessorial charges you didn't see coming show up after you've already committed and <a href="/field-notes/the-carrier-dilution-problem/">moved your volume over</a>.</li>
</ol>
<p>None of these are dealbreakers on their own. Individually they're an afternoon of phone calls. The problem is they tend to land in the same week, on top of everything else a switch already puts on your team, and that's how a clean one-week estimate quietly turns into three weeks of cleanup while your customers are still expecting their normal experience.</p>
<h2>What goes wrong on the 3PL side</h2>
<p>The thing people underrate most about a 3PL is that it's two businesses at once. It's a physical-asset business, racking and labor and dock doors, and it's a software business. Most of the diligence people do is on the physical side, the part you can walk through and see. The software half is where the surprises hide.</p>
<p>I've been in a situation where the software looked great. We thought everything was smooth, the onboarding looked done, and then orders started erroring out because the Shopify store was missing data the 3PL needed to ship. The platform was fine. The data feeding it wasn't. Nothing was technically broken, which is exactly why nobody caught it until orders were already stuck.</p>
<p>That's the pattern, and it's almost always a data problem rather than a software problem. The integration assumes clean, complete order data: valid addresses, SKUs that map cleanly to what's physically on the shelf, shipping methods that translate to the right service. When any of that is off, even on a small percentage of orders, those orders fall out and somebody has to chase them by hand. The best thing you can do as a brand is have strong data integrity and keep everything clean before you ever start the move. But a lot of the time the data is messy, so the 3PL gets fed messy data, and with that many variables to cover, something important slips through. Clean data is the cheapest insurance you can buy before a switch, and almost nobody buys it in advance.</p>
<h2>How to actually de-risk a switch</h2>
<p>You can't eliminate the risk, but you can shrink it, and most of the work is about not betting everything on day one. If you are switching 3PLs specifically, this sits inside <a href="/field-notes/choosing-and-working-with-a-3pl/">the larger end-to-end move</a>, and it is the phase where the cost above hits hardest.</p>
<ol>
<li><strong><a href="/field-notes/onboarding-a-new-carrier/">Run a test phase before full volume</a>.</strong> Push a small slice of real orders through the new partner first. A handful of live orders surface the label, address, and SKU-mapping problems at low stakes, while you still have room to fix them quietly.</li>
<li><strong>Don't burn the bridge early.</strong> Keep your outgoing partner warm until the new one has actually proven itself in production, not just in a kickoff call. Overlapping for a few extra weeks costs a little; being stuck between two partners with no working pickup costs a lot more.</li>
<li><strong>Validate the data, not just the integration.</strong> A connected integration is not the same as correct data flowing through it. Confirm that addresses, SKUs, and service mappings are coming across right on real orders before you scale.</li>
<li><strong>Hold two timelines.</strong> Plan against an ambitious timeline so you move with urgency, and a conservative one so you're staffed and ready when something runs long. Share both with your team. Being surprised is the expensive part, and two timelines is how you stop being surprised.</li>
</ol>
<h2>The cost that isn't on the spreadsheet</h2>
<p>Here's where the math gets misleading. If you're paying high markups, excessive pick-and-pack fees, or bad shipping rates, a switch can look like obvious money on a spreadsheet. The savings are real, and on the page they can be large enough that staying put looks irrational. But the other side of the ledger never makes it into the cell.</p>
<p>The potential pain. The disruption to your operation. The reputational hit if your shipping slows down, or you go two weeks where you can't ship stock and you're sending email blasts and fielding customer complaints. That cost is hard to quantify, which is exactly why it gets left out, and leaving it out is what makes a marginal switch look like a clear one.</p>
<p>You don't need a precise figure to put it back in the decision. Estimate it. Ask what a two-week shipping disruption would cost you in delayed revenue, support load, refunds, and churned customers who don't come back, then weigh the annual savings against that. Sometimes the savings still clearly win, and you should switch with confidence. Sometimes the savings are real but thin enough that one rough transition erases a year of them. The point is to make that comparison on purpose instead of pretending one side of it doesn't exist.</p>
<h2>How to time it, and when to stay put</h2>
<p>Timing changes the math too. Heading into summer is a reasonable window to reconsider a partnership and potentially make a switch, because you have runway to absorb a rough transition before it matters most. The deeper you get into Q4, the more that flips. Peak season is the worst time to be ironing out label issues and first-pickup problems, and the right call is usually to stay put, get through peak on what you know, and revisit in the new year.</p>
<p>And sometimes the honest answer is to stay put regardless of the season. I've been talking with a swimsuit brand that sent me their contract, their shipping rates, and their pick-pack fees. For their size and volume, the rates were genuinely good, so that's what I told them. There were no major operational issues to solve. They were mostly curious how their rates compared to the market, and my honest read was to stay where they are and take the reassurance from someone who's seen a lot of rate cards. Putting them through a switch for marginal gains on a spreadsheet would have been the wrong trade for them.</p>
<p>Yes, when a brand does need to switch, I'm a more likely hire, and I'm aware of that every time I give the recommendation. But I'd rather give the true read than manufacture a switch for numbers that aren't accounting for the full picture. The reputation is worth more than any single deal, and it's the thing I'm actually building. If you want that read on your own setup, that's exactly the kind of call I'm happy to take.</p>
]]></content>
  </entry>
  <entry>
    <title>What DHL&#39;s exclusive USPS deal means for shippers</title>
    <link href="https://www.ironmargin.com/field-notes/dhl-usps-exclusive-agreement/"/>
    <id>https://www.ironmargin.com/field-notes/dhl-usps-exclusive-agreement/</id>
    <updated>2026-05-28T14:00:00.000Z</updated>
    <summary>DHL eCommerce committed to USPS as its sole final-mile carrier in a $10 billion-plus long-term agreement. Here&#39;s the logic behind the bet, and what it means for brands and 3PLs.</summary>
    <content type="html"><![CDATA[<figure class="post-logos" style="display:flex;gap:16px;align-items:stretch;margin:0 0 36px;">
  <span style="flex:1;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--hairline);border-radius:6px;padding:32px 24px;">
    <img src="/logos/dhl.svg" alt="DHL eCommerce logo" style="height:52px;width:auto;display:block;">
  </span>
  <span style="flex:1;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--hairline);border-radius:6px;padding:32px 24px;">
    <img src="/logos/usps.png" alt="United States Postal Service logo" style="height:40px;width:auto;display:block;">
  </span>
</figure>
<p>DHL eCommerce and USPS just <a href="https://group.dhl.com/en/media-relations/press-releases/2026/dhl-ecommerce-and-usps-enter-10-billion-plus-long-term-exclusive-agreement.html">entered a $10 billion-plus, long-term exclusive agreement</a>. The word doing the heavy lifting there is <em>exclusive</em>, and the exclusivity sits on DHL's side: for the life of the deal, DHL is committing to USPS as its sole final-mile delivery carrier.<sup class="note-cite"><a href="#ref-1">1</a></sup></p>
<p>That's a departure from how <a href="/field-notes/the-carrier-dilution-problem/">parcel consolidators usually operate</a>. The typical model leans heavily on USPS for the final mile because of its reach, while keeping the flexibility to hand packages off to <a href="/field-notes/the-problem-with-estimated-delivery-data/">regional carriers</a>, a Veho, a UniUni, an OnTrac, when the economics or service in a given market make sense. DHL is choosing to give that flexibility up.</p>
<h2>What DHL brings to the table</h2>
<p>A bit of context on DHL eCommerce: they run 19 fully automated sorting hubs. I've walked one of them, the Chicago facility, and it's a genuinely impressive operation. Domestic and international volume are separated out, and they run multiple service tiers, some packages moving entirely on the ground while faster tiers use air. This is a serious middle-mile network feeding into USPS for the last leg.</p>
<h2>The trade DHL is making</h2>
<p>On price, this looks like a win for both sides. When you hand a carrier years of committed volume, you give them certainty, and certainty is what you trade for your best rates. USPS locks in a guaranteed volume base; DHL almost certainly gets pricing it couldn't touch on a shorter, non-exclusive arrangement.</p>
<p>The cost is optionality. If USPS runs into network-resiliency problems over the term, or if the alternative final-mile carriers get materially more competitive, DHL can't pivot the way a non-exclusive consolidator could. They're locked in.</p>
<h2>The bet underneath it</h2>
<p>What DHL is really saying is that they believe USPS has something no other carrier can match: the deepest final-mile network in the country. USPS reaches more ZIP codes, more consistently, than anyone else.<sup class="note-cite"><a href="#ref-2">2</a></sup> It's why even Amazon and other large shippers still lean on USPS for last-mile delivery in plenty of markets. DHL is betting that reach is durable enough to commit to for the long haul.</p>
<h2>What it means for shippers</h2>
<p>Net, we think it's a smart move. Locking in USPS economics at that scale should let DHL keep pricing aggressively for the e-commerce brands and 3PLs that route through it, which is the part that matters if DHL eCommerce is, or could be, in your carrier mix.</p>
<p>If you're weighing DHL eCommerce against other consolidators for your volume, that's exactly the kind of question we <a href="/evaluation-report">model out in an evaluation</a>: not just the headline rate, but the reach, the service tiers, and the tradeoffs that come with them.</p>
<section class="note-refs" aria-label="References">
<h2 class="note-refs-title">References</h2>
<ol>
<li id="ref-1"><a href="https://about.usps.com/newsroom/national-releases/2026/0528-dhl-ecommerce-and-usps-enter-10-billion-plus-long-term-exclusive-agreement.htm" target="_blank" rel="noopener">USPS and DHL eCommerce enter $10 billion-plus long-term exclusive agreement</a><span class="ref-src">USPS Newsroom</span></li>
<li id="ref-2"><a href="https://facts.usps.com/delivery-points/" target="_blank" rel="noopener">Delivery points: USPS delivers to over 169 million addresses</a><span class="ref-src">USPS Facts</span></li>
</ol>
</section>
]]></content>
  </entry>
  <entry>
    <title>The problem with estimated delivery data</title>
    <link href="https://www.ironmargin.com/field-notes/the-problem-with-estimated-delivery-data/"/>
    <id>https://www.ironmargin.com/field-notes/the-problem-with-estimated-delivery-data/</id>
    <updated>2026-05-28T00:00:00.000Z</updated>
    <summary>A carrier&#39;s delivery estimates said five days. Packages took eight. Here&#39;s why estimated delivery dates drift, and how to build rate-shopping rules that survive it.</summary>
    <content type="html"><![CDATA[<figure class="note-timeline" role="img" aria-label="The carrier estimated 2 to 5 days, clearing the 5-day rate-shopping rule, but packages actually delivered in 6 to 8 days, past the rule.">
  <div class="note-timeline-plot">
    <div class="note-rule" style="left:62.5%"><span class="note-rule-tag">5-day rule</span></div>
    <div class="note-lane">
      <span class="note-key">Carrier estimate</span>
      <div class="note-track"><span class="note-bar note-bar--est" style="left:25%;width:37.5%">2–5 days</span></div>
    </div>
    <div class="note-lane">
      <span class="note-key">Actual delivery</span>
      <div class="note-track"><span class="note-bar note-bar--act" style="left:75%;width:25%">6–8 days</span></div>
    </div>
    <div class="note-scale">
      <span style="left:0%">Day 0</span>
      <span style="left:25%">Day 2</span>
      <span style="left:62.5%">Day 5</span>
      <span style="left:100%">Day 8</span>
    </div>
  </div>
  <p class="note-caption">The estimate cleared the rule. The packages didn't.</p>
</figure>
<p>Carriers will send you a spreadsheet of estimated delivery dates: this many days per zip code, per service tier. It looks authoritative.<sup class="note-cite"><a href="#ref-1">1</a></sup> Then you build a rule on top of it, and the gap between the estimate and reality shows up at your customer's door.</p>
<p>Here's how that played out on a real program.</p>
<h2>A five-day rule that wasn't</h2>
<p>We were helping a brand whose carrier had three service tiers:</p>
<ol>
<li><strong>A 2 to 3 day service.</strong> The fast, expensive option.</li>
<li><strong>A 2 to 5 day service.</strong> The middle tier.</li>
<li><strong>A 3 to 8 day ground service.</strong> The cheap option.</li>
</ol>
<p>In ShipStation, we set a simple <a href="/field-notes/the-carrier-dilution-problem/">rate-shopping rule</a>: for each package, pick the cheapest tier whose estimated delivery date lands in five days or less.</p>
<p>The logic is sound. For a Los Angeles to Los Angeles package, the 3 to 8 day ground service usually estimates inside five days, so the rule picks the cheap option. For Los Angeles to New York, ground won't make it, so the rule steps up to a faster tier. Set the five-day limit once and the software handles the tradeoff on every order.</p>
<p>That's the theory. In reality, a meaningful share of packages took six, seven, even eight days.<sup class="note-cite"><a href="#ref-3">3</a></sup> The estimate said five. The customer waited longer.</p>
<h2>Why the estimate drifts</h2>
<p>Carriers are incentivized to quote delivery estimates faster than they actually perform. The faster the estimate, the more often they clear rules like ours and win the shipment.</p>
<p>And when a carrier hands you a list of zip codes with estimated days per lane, almost nobody stops to ask the question that matters: how is this number actually calculated? It could be any of these, and the spreadsheet won't tell you which:</p>
<ol>
<li><strong>All-time performance</strong> in that zip code.</li>
<li><strong>Recent performance</strong>, say the last three months.</li>
<li><strong>Aspirational performance</strong>, the target rather than the result.</li>
<li><strong>Best-case performance</strong>, what happens when nothing goes wrong.</li>
</ol>
<p>Each produces a very different number for the same lane, and you're handed one label with no footnote.</p>
<h2>Where it gets worse: alternate carriers</h2>
<p>This is most acute with the <a href="/field-notes/dhl-usps-exclusive-agreement/">newer regional and alternate carriers</a>, and it comes down to how their networks are built. They rarely launch at full coverage. A carrier might start at fifty percent of zip codes and work toward one hundred, expanding into new areas as they go.<sup class="note-cite"><a href="#ref-4">4</a></sup> That means there are always fringe zip codes where they've only just started operating and don't yet have the volume to run the lane efficiently.</p>
<p>In those areas, your package waits. Instead of sending a truck out twenty percent full, which is a money loser for them, the carrier sits on the inventory until there's enough volume to make the trip worth it. I've watched this happen firsthand: packages delayed up to two weeks because a carrier had low volume in an area after an external event, and chose to wait for the truck to fill rather than eat the cost of shipping it light.</p>
<p>Here's the part that should bother you. The carrier pays no real consequence for that delay. The brand does. The brand and its customers take the reputational hit while the carrier protects its own margin.</p>
<h2>The performance toggle</h2>
<p>What these carriers don't advertise is that they have a dial. When they need to save money, they can quietly slow their service down. Not so much that it's obviously broken, just enough to be more profitable. If you're a brand or 3PL that isn't watching closely, you absorb it twice: you pay more than you should, and your customers experience a slower delivery than they were promised.</p>
<p>The carrier you ship with, and the quality of service they actually deliver, is a direct extension of your reputation. Treat it that way.</p>
<h2>What to do about it</h2>
<p>Two moves, depending on how much speed matters to you.</p>
<p>First, <strong>ask what the estimate actually represents</strong>, and hold the data accountable.<sup class="note-cite"><a href="#ref-2">2</a></sup> As your fulfillment and delivery advisor, we <a href="/evaluation-report">independently check carrier delivery estimates</a> against what actually happened, lane by lane, so the numbers feeding your rate shopping reflect real transit times rather than convenient ones.</p>
<p>Second, <strong>build in slack</strong>. Assume the estimate runs optimistic by a day or two. If you set a four-day limit, expect some share of packages to land in five or six. Set a five-day limit and some will take six, seven, or eight. Pick your rule knowing the tail exists.</p>
<p>And if speed is critical to your business, don't bank on an estimate at all. If you ship cold-storage product that has to arrive in two days, a carrier's optimistic guess is not where you want to take the risk. Unless there's a money-back guarantee attached to that delivery date, the estimate is marketing, not a commitment. Don't bet the business on it.</p>
<p>The question to keep asking is the one the spreadsheet won't answer: estimated based on what?</p>
<section class="note-refs" aria-label="References">
<h2 class="note-refs-title">References</h2>
<ol>
<li id="ref-1"><a href="https://www.usps.com/ship/ground-advantage.htm" target="_blank" rel="noopener">USPS Ground Advantage: delivered in 2 to 5 business days</a><span class="ref-src">USPS</span></li>
<li id="ref-2"><a href="https://about.usps.com/what/performance/service-performance/" target="_blank" rel="noopener">Service Performance Results, measured speed and reliability</a><span class="ref-src">USPS</span></li>
<li id="ref-3"><a href="https://www.freightwaves.com/news/large-parcel-carriers-improved-on-time-delivery-during-2025-peak-season" target="_blank" rel="noopener">Large parcel carriers' on-time delivery, by carrier (ShipMatrix data)</a><span class="ref-src">FreightWaves</span></li>
<li id="ref-4"><a href="https://www.shipveho.com/activecoverage" target="_blank" rel="noopener">Active Coverage: ZIP-code coverage and 2026 activation list</a><span class="ref-src">Veho</span></li>
</ol>
</section>
]]></content>
  </entry>
  <entry>
    <title>The carrier dilution problem</title>
    <link href="https://www.ironmargin.com/field-notes/the-carrier-dilution-problem/"/>
    <id>https://www.ironmargin.com/field-notes/the-carrier-dilution-problem/</id>
    <updated>2026-05-28T00:00:00.000Z</updated>
    <summary>Adding every carrier to your rate shop looks free on a spreadsheet. In the warehouse and at the negotiating table, each one carries a hidden cost. Here&#39;s how to think about it.</summary>
    <content type="html"><![CDATA[<figure class="note-bars" role="img" aria-label="Keeping all your volume with one carrier clears the carrier minimum; splitting the same volume across four carriers drops every one below the minimum.">
  <div class="nb-chart">
    <div class="nb-min" style="bottom:50%"><span class="nb-min-tag">Carrier minimum</span></div>
    <div class="nb-group">
      <span class="nb-col nb-col--win" style="height:86%"></span>
    </div>
    <div class="nb-group nb-group--multi">
      <span class="nb-col nb-col--lose" style="height:32%"></span>
      <span class="nb-col nb-col--lose" style="height:26%"></span>
      <span class="nb-col nb-col--lose" style="height:30%"></span>
      <span class="nb-col nb-col--lose" style="height:22%"></span>
    </div>
  </div>
  <div class="nb-labels">
    <div class="nb-lab"><b>One carrier</b><span>All volume clears the minimum</span></div>
    <div class="nb-lab"><b>Split across four</b><span>Every carrier falls below it</span></div>
  </div>
</figure>
<p>There's a failure mode we see when companies get eager about <a href="/field-notes/the-problem-with-estimated-delivery-data/">rate shopping</a>: they throw a pile of different carriers into the mix, chasing the cheapest rate on every package, without understanding the hidden cost of each carrier they add.</p>
<p>If this were purely a spreadsheet exercise, it would make total sense. Add every carrier under the sun, let the rate shop pick the cheapest option per package, done. But it isn't a spreadsheet exercise, and the tradeoffs show up in two places the spreadsheet never sees.</p>
<h2>The warehouse tax</h2>
<p>Every carrier you add is more work on the floor. Your team has to separate and sort packages by carrier, manage a different pickup for each one, and print labels across multiple systems. More carriers also means more relationships to manage, more points of contact, more things that can break.</p>
<p>There are <a href="/field-notes/dhl-usps-exclusive-agreement/">consolidators that aggregate your volume</a> so you can access multiple carriers through a single integration, and that's a genuinely good solution to this specific problem. But if you're wiring up carriers directly, assume each one adds real operational overhead, not zero.</p>
<h2>You dilute your leverage</h2>
<p>The bigger issue is what spreading your volume thin does to your negotiating power.</p>
<ol>
<li><strong>You miss carrier minimums.</strong> Most carriers want you to hit a volume threshold. A small or midsize brand splitting volume across three or four alternative carriers probably won't hit the minimum on any of them.</li>
<li><strong>You lose daily pickups.</strong> Falling under the minimum is how you end up without a daily pickup, which is one of the last things you want operationally.</li>
<li><strong>You weaken every negotiation.</strong> Volume is your leverage. Divide it across too many carriers and you have less leverage with each one, so your rates suffer everywhere.</li>
</ol>
<h2>Add one carrier at a time</h2>
<p>For a small or midsize brand, the right move is to add carriers deliberately, one at a time, not to flip a bunch on in the rate shop and see what happens.</p>
<p>Before you turn one on, model it out:</p>
<ol>
<li><strong>Pick the one with the most upside.</strong> Figure out which single carrier gives you the most savings for your specific lane mix.</li>
<li><strong>Understand the service tier.</strong> Know what you're actually buying and how it performs.</li>
<li><strong>Name the tradeoffs.</strong> Be honest about where it falls short of a national carrier like FedEx or UPS, and make sure you're comfortable with those tradeoffs before you commit.</li>
</ol>
<p>Too many people move fast on price alone, then discover the <a href="/field-notes/the-switching-cost-the-spreadsheet-misses/">operational complexity</a> after the carrier is already live.</p>
<h2>Why we'd rather add one than three</h2>
<p>This is why our approach is different. We <a href="/evaluation-report">evaluate your data</a> first, and if we can get you eighty percent of the total savings by adding a single carrier, that's often the better deal than squeezing out the last twenty percent and leaving you to manage three.</p>
<p>The cheapest rate on paper is not the same as the best program in practice. That's the wisdom from doing this dozens of times: fewer carriers, chosen well, usually beats more carriers chosen on price.</p>
]]></content>
  </entry>
  <entry>
    <title>What to expect after selecting a new carrier</title>
    <link href="https://www.ironmargin.com/field-notes/onboarding-a-new-carrier/"/>
    <id>https://www.ironmargin.com/field-notes/onboarding-a-new-carrier/</id>
    <updated>2026-05-28T00:00:00.000Z</updated>
    <summary>A short field guide to onboarding a new carrier: five things to nail, and two mistakes that derail otherwise good programs.</summary>
    <content type="html"><![CDATA[<figure class="note-bars" role="img" aria-label="Onboarding ramps over two to three weeks: a low-volume test phase in week 1, scaling up in week 2, and full volume live by week 3.">
  <div class="nb-chart">
    <div class="nb-group"><span class="nb-col" style="height:26%"></span></div>
    <div class="nb-group"><span class="nb-col" style="height:60%"></span></div>
    <div class="nb-group"><span class="nb-col" style="height:96%"></span></div>
  </div>
  <div class="nb-labels">
    <div class="nb-lab"><b>Week 1</b><span>Test phase, low volume</span></div>
    <div class="nb-lab"><b>Week 2</b><span>Validate and scale up</span></div>
    <div class="nb-lab"><b>Week 3</b><span>Full volume, live</span></div>
  </div>
</figure>
<p>You picked a new carrier. The contract is signed. Now the onboarding window opens, and how you run the next two or three weeks decides whether the program <a href="/field-notes/the-problem-with-estimated-delivery-data/">actually performs in production</a>.</p>
<p>Here's the short version of what to nail, and what to watch for.</p>
<h2>Five things to nail</h2>
<ol>
<li><strong><a href="/field-notes/before-your-first-pickup/">Schedule a first pickup</a>.</strong> Lock the date before anything else. Everything downstream waits on this.</li>
<li><strong>Confirm supplies.</strong> Gaylords, pallets, bags, labels, scanners. Make sure the carrier ships what you need before week one, not after.</li>
<li><strong>Create a test label and validate.</strong> One label, end to end. Confirm the data on the label matches your WMS and the carrier's system before you scale.</li>
<li><strong>Confirm service tiers.</strong> The contract lists services. The carrier's onboarding team sometimes activates a subset. Read the activation back to them.</li>
<li><strong>Get credit checked.</strong> Carriers run a credit check before they extend terms. Start it early so it doesn't block your first invoice.</li>
</ol>
<h2>Two mistakes that derail good programs</h2>
<ol>
<li><strong>Elevating your expected volume.</strong> It's tempting to quote a bigger number to get better rates. Don't. Carriers staff and price against your forecast. Miss it and you'll be renegotiating from a weak position six months in.</li>
<li><strong>Skipping the test period.</strong> Turning on full volume in week one hides problems until they're already costing you money. Run a real test phase, even if it's just a few days, so the label data, the pickup cadence, and the invoice format all get stress-tested at low stakes.</li>
</ol>
<p>If you're switching from an incumbent, the onboarding window is also where the <a href="/field-notes/the-switching-cost-the-spreadsheet-misses/">real switching cost</a> shows up, so plan for it rather than discovering it live.</p>
]]></content>
  </entry>
  <entry>
    <title>How to export your shipping data from ShipStation</title>
    <link href="https://www.ironmargin.com/field-notes/exporting-shipping-data-from-shipstation/"/>
    <id>https://www.ironmargin.com/field-notes/exporting-shipping-data-from-shipstation/</id>
    <updated>2026-05-28T00:00:00.000Z</updated>
    <summary>A 60-second walkthrough of pulling raw shipment data out of ShipStation&#39;s Insights reports, plus what to do when the export is too big.</summary>
    <content type="html"><![CDATA[<p>If you're sharing shipping data with us, or just want a clean CSV of your recent orders, ShipStation's <strong>Raw Data Exports</strong><sup class="note-cite"><a href="#ref-1">1</a></sup> are the fastest path. Here's the 60-second version:</p>
<video controls preload="metadata" class="post-video">
  <source src="/shipstation-export.mp4" type="video/mp4">
  Your browser doesn't support embedded video.
  <a href="/shipstation-export.mp4">Download the walkthrough</a>.
</video>
<h2>The steps</h2>
<ol>
<li>In ShipStation, open <strong>Insights</strong>, then <strong>Reports</strong>.<sup class="note-cite"><a href="#ref-2">2</a></sup></li>
<li>Scroll to the bottom and find the <strong>Raw Data Exports</strong> section.</li>
<li>Click <strong>Shipped Orders</strong>.</li>
<li>Set the date range to <strong>Past 30 Days</strong>.</li>
<li>Click <strong>Export to CSV</strong>.<sup class="note-cite"><a href="#ref-3">3</a></sup></li>
</ol>
<h2>If the export fails or times out</h2>
<p>Large accounts sometimes choke on a full 30-day pull. If that happens, break the range into smaller chunks. Four 7-day exports usually does the trick. Stitch the CSVs together once you have them.</p>
<p>That clean CSV is exactly the raw material behind the rate-shopping rules we get into in <a href="/field-notes/the-problem-with-estimated-delivery-data/">the problem with estimated delivery data</a>.</p>
<section class="note-refs" aria-label="References">
<h2 class="note-refs-title">References</h2>
<ol>
<li id="ref-1"><a href="https://help.shipstation.com/hc/en-us/articles/4403830407963-Insights-Reports-Raw-Data-Exports" target="_blank" rel="noopener">Insights Reports: Raw Data Exports</a><span class="ref-src">ShipStation Help</span></li>
<li id="ref-2"><a href="https://help.shipstation.com/hc/en-us/articles/360026158131-Reports-Insights-Overview" target="_blank" rel="noopener">Get Started with ShipStation Analytics</a><span class="ref-src">ShipStation Help</span></li>
<li id="ref-3"><a href="https://help.shipstation.com/hc/en-us/articles/360027685671-Export-Order-Records" target="_blank" rel="noopener">Export Order Records</a><span class="ref-src">ShipStation Help</span></li>
</ol>
</section>
]]></content>
  </entry>
</feed>
