Hacker News new | ask | show | jobs
by zootboy 921 days ago
The "invalid tracking number" thing drives me nuts. Both Fedex and UPS do it. How hard is it to stick a record in the database the moment a tracking number is generated so that I don't get a "This tracking number is invalid" message? And it's not like it's invalid for a few minutes; I've had tracking numbers remain "invalid" for almost a day. Absolutely insane.
3 comments

A lot of the systems involved were designed in an era before ubiquitous connectivity, when electronic data transfer involved calling a mainframe over the phone with a modem or sometimes even mailing magnetic tape. In that world the answer to “how hard is it to stick a record in the database” is “surprisingly complicated,” so these systems tend to work on the principle of “very eventual consistency.” I used to work for a company that had been doing eCommerce since the early 2000s, so can give an example of the way this happened:

FedEx had given us a prefix in their tracking number range. When we printed a shipping label, the server sitting in a corner of the warehouse just allocated a tracking number and added a note to the order information in its database. Since this is a local-only operation, the data transfer method to synchronize state between our server and FedEx’s was the physical package: they didn’t have any way of knowing that we had used any given number until the label showed up in their truck and got scanned in. (IIRC it wasn’t until the monthly billing run that the two databases were actually compared to reconcile any differences.) This sometimes interacted poorly with ship notice emails, since our system sent those as part of its day close batch job and it didn’t have any way of knowing whether the truck had come by to pick up any given package yet.

Eventually we switched to a new warehouse management system that did make an API call out to FedEx as soon as it generated a label, but even then that transmission was best-effort only (to prevent an API outage from bringing down the entire shipping line). And there are a lot of legacy systems out there where integrating something like that just isn’t worth the effort versus answering a few extra emails from customers confused by the fallback message.

The solution to that problem is to pregenerate tracking numbers that are then doled out by the remote system with intermittent connectivity. Or use a hierarchic numbering scheme.
A hierarchical numbering scheme is exactly the prefix system I just described. Pregenerating numbers still doesn’t solve the problem that the carrier doesn’t know when any given number goes from “generated, will be handed out someday” to “awaiting pickup.”
I get all of that, it made sense. But similarly, it's no longer the world we live in, and there is just no excuse for FedEx's own app not to be able to push directly to the system where the same app gets tracking info from
I bet the "invalid tracking number" is just a generic exception handler. The number is valid and exists in the DB, but some additional data that the tracking application is expecting to see isn't yet there, so it all explodes and you hit the catch-all exception handler.
Having worked a lot on the shipper side, it's possible that the package hasn't been picked up by the carrier yet. I've seen tracking numbers issued "client-side" that get re-issued or invalidated after pickup as well.
IIRC there are systems to pre-generate tracking numbers that get allocated to and used by larger customers of couriers, so they can do more of the dispatch setup internally without thousands of "book this shipment and give me a tracking number" calls to the courier and they reconcile it later. That could at least get you to "this is a valid tracking number" stage, but before it's within the courier's logistics they've no way of knowing if it's active or what package it belongs to, which doesn't seem like any better of a customer experience.

If you wanted to make it universal it'd be a higher hurdle for small volume shippers, and it wouldn't surprise me if there's challenges to be overcome with a large number of outstanding 'valid but not used' tracking ids.

That is a separate state in both of these systems, though. My complaint is that a perfectly valid tracking number isn't immediately in the "awaiting pickup" state after being generated by their systems, and is instead in the scary limbo state of "I dunno, that might be an invalid tracking number".
That's exactly the issue mentioned in the post. Then show something like "not yet picked up" or "tracking number created" (a matching context for the user) instead of saying "we don't know this number" (technical context)
Here in europe that is exactly what I see, a store will show me tracking number and if I click on it carrier website says - "Label printed" so you know it is not picked up yet. DPD carrier does it like that.