Transit & tracking · skeleton ⑯

Transit ceilings versus transit medians, and why quotes only give the first

A quoted delivery window is a ceiling, a median comes from your own rows, and only one of the two predicts anything.

Written Last substantive change 1337 wordsTarget: shipping line transit time comparison

Start with the table nobody hands you

No carrier publishes a median. What a quote gives you is a ceiling, meaning the outer edge a service is willing to name in writing. A median is the middle row of the shipments you have already received, and when a log holds only four rows the median is the average of two middle values, which is a much weaker statement than it sounds. The two numbers answer different questions, and the exercise people call a shipping line transit time comparison only becomes possible once you own the second one.

Build the log before you need it. One row per parcel, five columns, and a date for every state change you watched happen rather than the date on a notification you skimmed a week later. Capturing the handover date and the delivered date in the same row is what makes a [transit log](/rig/transit-log/) comparable across carriers, and it is also what makes a row arguable a year from now, when the order page has moved on and only your own file still remembers the sequence.

The skeleton below is deliberately boring. It has no duration column, because a duration is derived, and a derived column that nobody else can recompute is the quickest way to stop trusting your own numbers. If you want the derivation later, it takes one subtraction from two dates that are already there. Five columns is a ceiling of its own rather than a target: a log with twelve columns gets filled in twice and then abandoned, which is worse than a log with five that is still being written in month four.

The five columns of a transit log
ColumnWhat goes in itBlank means
Order referenceOrder number and parcel sizeParcel not created
Handover dateDay the warehouse released itStill with the agent
Service nameCopied from the labelNever leave it blank
Delivered dateFirst state read as deliveredStill moving
Interruption noteQuery, address check, failed attemptNothing was noticed

What each column counts, and what a blank means

Two definitions decide whether the table survives a second year of orders. First, one row equals one parcel, not one order. A consolidated parcel carrying three orders is a single row, and writing three rows for it triples your count without adding a single shipment, which then distorts every percentage you compute from it by exactly the same factor. That mistake is the most common one in a first-year log, and it stays invisible until somebody counts the parcels instead of the rows.

Second, a date is the day a state changed, not the day you were told about it. If a delivered scan appears on a Monday for a Saturday delivery, the row takes the Saturday and the note column takes the notification lag, because that lag belongs to the app rather than to the line you are trying to judge.

  • The handover date belongs to the warehouse: it is the last moment at which the agent could still change something about the item.
  • The delivered date belongs to the carrier, and it is the only stretch of the row the shipping line actually controls.
  • The service name belongs to you, so copy it from the label rather than from memory, because two services from one carrier often differ by one word.
  • The interruption note belongs to the exception rather than the rule, so an empty cell is a normal row and not a missing measurement.
Denominator rule

A row with a blank delivered date stays in the count of parcels still moving and drops out of the median. Blank is a state rather than a zero, and mixing the two is how a median quietly turns into an underestimate that flatters everything you compare it against.

How to read the notes you leave on your own rows

Write the note on the day it happens. A customs query answered inside half an hour never survives into memory a fortnight later, and by the time you review the log an unexplained slow row will be blamed on the carrier by default. Notes are what stop that default from hardening into a conclusion you then act on with money.

Read the notes column before the duration column. If three of your slowest rows carry the same note, the variable in front of you is whatever that note describes rather than the service you paid for. The reverse also holds: two rows with no note and no visible cause are the only rows that say anything at all about the line itself.

  • A note naming a document query, an address confirmation or a second delivery attempt points at a process rather than at a route.
  • A note naming a public holiday window points at a calendar you can look up, which is why the [season calendar](/rig/season-calendar/) stores windows instead of predictions.
  • A note naming nothing is the interesting one, so keep it even when keeping it is inconvenient.
Keep the row, tag it

Deleting a slow row improves your median without anything about the service changing. Tag the row as excluded instead, so that the exclusion stays visible and can be reversed the moment a second row agrees with it.

Which rows must stay out of the middle

Take seven rows sorted from shortest to longest and replace the longest with a value roughly three times the next longest. The mean of the seven moves by about 43 per cent. The fourth value, which is the median, does not move at all. One parcel can rewrite an average and cannot rewrite a middle, and that asymmetry explains most of the distance between a quote and an experience.

So exclude the rows whose slowness was never the line’s to control, and exclude them explicitly rather than silently. A parcel returned to the sender, an item re-shipped after an address error, and a hold that ended the moment a document was produced are three rows that describe a process rather than a route.

  • Returned to sender: the row ends without a delivery, so there is no delivered date to compare against anything.
  • Re-ship after a correction: the second parcel is a new row, never an amendment to the first one.
  • Document-driven hold: the duration measures how long a document took, which no carrier publishes.

What remains after those exclusions is the group you can compare, and the group is usually smaller than people expect. If three rows remain, say three in the caption rather than in a footnote, because the number of rows behind a median is part of what the median means.

A ceiling and a median answer different questions

Put the two side by side and the disagreement stops being confusing. A ceiling is a statement about the slowest case a service will own up to. A median describes what already happened to you. Neither is a forecast, and only one of them is specific to your route, your seller and your packing choices.

  • What should I plan for if everything goes wrong? A ceiling answers it, and a median says nothing about it.
  • What did my last shipments actually do? A median answers it, and a ceiling says nothing about it.
  • Should I change service? Only when the ceiling itself is unacceptable, or when the middle moved across rows that genuinely compare.
  • Is this parcel late? The ceiling gives an outer edge, and the median gives a working definition once comparable rows exist.
  • Why do the two disagree at all? Because a ceiling is not a distribution, and a median is not a promise.

The practical order is to decide on the ceiling and to review on the median. A ceiling you cannot live with ends the discussion before money moves, and that decision belongs to the [freight stage](/steps/pay-freight/), where the service is still a choice rather than a fact. The median matters later, when you are judging whether the choice was right.

No published figure

This page prints no day range for any service, because no carrier publishes the distribution behind its own ceiling. Where a number would normally sit, the honest entry is "not verified" plus a note to ask the agent and keep the reply in writing.

Original data in this note

Worked example: in a seven-row transit log, replacing the longest row with a value roughly three times the next longest raises the mean by about 43 per cent and leaves the fourth value, the median, exactly where it was. No day figure of any kind is used, because none is published. (Worked example)

Open the live Kabosheet list

This note explains the mechanics; the list is where the items are.