Hacker News new | past | comments | ask | show | jobs | submit login
The UX of delivering parcels (builtformars.com)
101 points by tomhazledine 10 months ago | hide | past | favorite | 45 comments



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.


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.


I hate auto-advancing fields. Auto-focus on page load puts you in the right place to start. Auto-advancing disrupts you in the middle of typing.

I would auto-advancing only if I am creating a form I am certain will be used over and over again by the same person. Even then, I would strongly consider if that is really any better than having the correct tab order defined.


I'd argue that it also:

* Worsens the experience of dealing with typos (which are not uncommon) as you've already zoomed away from the field you want to edit

* Risks confusing, increasing anxiety, and possibly generating errors for people that aren't tech-savvy, and for whom spotting the (often very subtle, these days) signs of which field is in focus isn't easy or instinctive.


25 years ago when I worked in a small shipping department for a computer reseller we had amazing experiences with UPS. Everything just worked. Their software was good, pickups were on time, delivery end was never a problem. Our computer could print tracking numbers directly and if you searched on ups.com for them even before pickup time they showed the status of waiting to be picked up, then within an hour of being picked up, even before they got to the local depot the status would change to picked up. It was amazingly good.

How has so much gone so backwards since then? Is it just that the volume of packages now is tremendously higher and the budgets for IT to keep up haven’t scaled appropriately?


This article is looking at "apps" on the consumer side. While not an excuse for being as terrible as it is, consumer shipping is not where the money or focus is in package delivery.


Family worked the phone line reconciling missing delivery. Her favourite was the shark lost on a train to a local tropical fish store.

Be nice to your delivery phone support. They often have discretionary "make this problem go away" budget and they use it on customers who are polite and accept the limits of reality as it emerges.


I tend to fine that people on the phone are clearly not given the tools they need to find what's going on and certainly not any power to actually fix a problem, it's always very frustrating


Nitpick of mine: timezones.

I work in a different timezone than where I live, so my laptop is set to a different time for convenience.

Half the time, the delivery time is adapted to my computer clock, half the time, to the local time.

Ok ok I know, I brought that to myself... but what's nice is to clarify which time zone you use when you give a time.


Timezones are the bane of programmers' existences. It also can quickly become a UX nightmare as you have found out.

My rule of thumb is that the time should always be displayed in the user's timezone especially if their location is specified ie if a parcel is being delivered to location X, the delivery time should be displayed for the timezone of location X (and the UX should specify the timezone for additional clarity).


I only really have experience with FedEx. The app is indeed utter trash. (Seriously, it’s so bad they should remove it until it’s useful.) Even fedex.com is pretty bad — good luck figuring out which address fields end up on the package in what order. The price estimator for different delivery classes behaves truly oddly.

And, having recently had the misfortune of shipping to the UK, eww. The tracking webpage shows problems. The phone support people give actively wrong answers. The customs clearance email team will give useful info if you email them first. And somehow the combination of FedEx + the UK was entirely unable to understand a normal person shipping to a business, and they got stuck needing an EORI. I eventually got the recipient (um, consignee) to send theirs, and the package got unstuck. Never mind that all online info is fairly clear that non-UK individuals don’t need an EORI.

P.S. For US domestic shipping, unless you have actual volume discounts with someone, use pirateship.com or a similar service. If you book directly or, worse, show up at a UPS or FedEx store without a label, you pay much, much more. For LTL freight, use freightquote.com or similar. For LCL international freight, I have no idea — FedEx international appears to be less expensive for single large items that any LCL provider I found.


Delivery has always been a "push" model. The seller is ultimately responsible for delivering your purchases to you, and they outsource it to a few entrenched players. I wonder if there's room for disruption in the form of a "pull" model delivery company: I pay a company to deliver my packages, and provide a nice UI/UX and maybe lose my package less frequently to boot. Then retailers will integrate with this service and alert the company to come pick up the package. Of course at first most retailers won't offer this integration, and that's okay.


This exists for larger “packages” - think pallets and less than truckload (LTL).

You can order from Uline for example, and select “my carrier” and you can then instruct a shipper to pick it up, or send Bob down with the truck, etc.


Here in Germany, it seems delivery services are inefficient, stupid, and clumsy. When you order a package on Amazon, it will indicate a time range of delivery likeliness with a high degree of uncertainty. Then you'll get an email stating the package is going to be delivered tomorrow. Sometimes that actually happens. Time window: the whole day. They don't like to commit to a time until very short before delivery time. Which is usually when working people are not at home.

I tried signing up with DHL once only to find out that that gave me the opportunity to actually pay them for the privilege of not wasting their time trying to deliver to me when I'm not home. That sounds a bit backwards to me. Why would I pay them to make their life easier. I'm fine with them delivering to a neighbor or nearby dhl store. I'd tell them to do that if I had the chance. But I'm not going to pay them for the privilege. And that's just DHL, there are about five or so different companies that Amazon works with here plus some contractors.

So, they keep on wasting trying to deliver packages to people that, mostly, aren't home. The problem is of course made worse by the fact that there are multiple delivery companies each wasting time in the same way. I'd say a rather large amount of packages gets delivered to neighbors or wherever after the delivery people waste time trying to deliver to the right place. Predictably, there are a percentage of lost packages which then need to be reimbursed by Amazon, which no doubt impacts the delivery companies. So, on top of the lost time, they end up dealing with that as well. That's inefficient and stupid.

It strikes me that not having a working relationship with the people you deliver too is costing these companies a lot of money. Why is that? What's so hard here? They have no insight in when people are at home, what alternative delivery options would be convenient, etc. How hard can it be to coordinate this in a way that is less likely to be mutually disappointing?


By far my favourite delivery company in the UK are DPD, who provide solutions to all of these problems. On the day of delivery I get a text message from DPD giving a delivery window which is somehow both very specific and quite vague: "your delivery will arrive between 10:54am and 11:54am".

If I know I'm not going to be in during that delivery window I can follow a link and ask them to either leave it on my doorstep, with a neighbour, redirect it to a local post office, or attempt delivery on a different day.

None of this is difficult to do, most delivery companies just don't bother.


Yep DPD definitely lead on the recieving end, I always fine the Americans, FedEx and ups to be by far the worst on that end.


one of the reasons delivery services don't seam to care, i'd say, is that they outsource the actual delivery to poor migrants who don't have a choice but to price competitively against each other


I've noticed the same in Austria and the UK.

Amazon's last mile shipping is outsourced, in a race to the bottom, to desperate migrants with a cheap white van who's road worthiness is debatable and who park illegally on sidewalks and bike paths during their deliveries. If you tell them that's not allowed they'll just say "Where else am I supposed to park? I won't make the delivery deadlines if I spend time looking for free parking spaces for the van. They're not reimbursing me for parking you know. What am I supposed to do?".

I hate Amazon. I also hate the governments who fail to regulate and crack down on these well known labor loopholes and abuses since this hasn't been going on since yesterday but for a very long time. I'd be totally ok with waiting 2-3x longer just to know th delivery workers have fair working conditions.


I know it's not exactly what the article is about, but I just had to share https://parcelsapp.com/ as amazing UX for tracking packages. It's third party and seems to be made by a single guy (not me) but it does everything you wish all the other first party package tracking apps did.


FedEx used to be good at this. FedEx was, famously, the first company to have a web site that really did something. What happened?


Small anecdote from Xmas 2020. My then company, e-commerce firm, was all FedEx. Sent out shipments around Black Friday by the literal trailer load. FedEx, due to their capacity issues or whatever, took a trailer from our warehouse to their parking lot or whatever and had it sitting for about a week there untouched, before ever scanning the packages or manifest into their system. So we had thousands of customers angrily calling us wondering why “FedEx is awaiting this package,” assuming we were lying to them that we shipped it days ago. Needless to say we signed with UPS after that, and they never pulled anything that egregious.


I had a similar experience when I bought a Steam Deck recently, manifesting as the courier tracking page denying all knowledge of the package even existing right up until the morning of delivery, when I got a text message saying it would be arriving in the next two hours. I spent the best part of a week nervously checking the tracking page absolutely convinced that my £600 device had been lost in the post somewhere, while being told by Valve support that I needed to wait at least a week before they'd even think about investigating.


I don’t know about other countries, but in Poland FedEx is disastrous when it comes to delivering packages. And it’s not so much their last mile couriers, but anything related to the delivery process itself - as if they had extremely broken IT infrastructure, systems and processes.

I remember getting five packages through them from US in a short timespan and every single time something else was broken in their support. One time they even forgot to take duties payment from me and asked only when I was getting the next package.

My theory was that FedEx prioritises comfort/pricing fir shipping companies which are unaware of how bad is it for the receivers.

If anyone ships to Poland (Europe?), I beg you - use literally anything else. My friends’ experience has been similar


I kind of suspect non-domestic carriers generally suck, no matter what. DHL (to the limited and seemingly decreasing extent they exist at all) are absolutely horrendous here in the US, for instance.


I had FedEx send me to collections for duties on a parcel marked to not deliver without collecting duties, for which the delivery guy signed a receipt.

Horrible.


I think this touches on an important point that my personal experience on both the customer side and the retail side rhymes well with. When it comes to third party services such as payment and delivery, customers rarely see a distinction between the service provider and the retailer. This makes sense, since the identity of the service provider is often not even known to the customer. But to the retailer there is of course a clear distinction, and because of this they may greatly overestimate how well the customer can distinguish between the retailer and service providers.


I would also argue that if the retailer chooses the third party provider, there is no functional difference. If I, as a customer, can choose the carrier, I can make a decision that weighs price, experience, etc. If the retailer chooses, I assume they are choosing based on cost and bear full responsibility for resulting poor experience.


I just wish they follow Amazon and allow me to choose a day(s). Tired of planning for a day only for it to be rescheduled


Where I live most couriers only ever drive out 2 or so days a week.

I always get delivery notifications (NOT Expectations, notifications, i.e. your package will be delivered on the 15th). But the 15th is then a tuesday, and they only drive out on a wednesday. They will then mark the parcel as "failed to deliver", usually with something like the "business premises of the recipient was closed" - even though I am not a business but a residential home on residential property. Then magically the following day they deliver it.

If the parcel is notified for delivery on a wednesday, it arrives just fine.


I’d actually prefer it if I could tell UPS and FedEx to only deliver on a specific day (or be told that for my area deliveries are only Monday, Wednesday, Friday) - no need for the trucks to roll all the time.

I guess they don’t really have that much to deliver.


Live in Sweden and I think we currently have pretty good competition in the delivery service market. Home delivery, staffed pick up points and unmanned parcel cabinets are usually available options from many online vendors, and the latter two often support electronic identification.

I think having multiple options is a good way of decoupling the UX of the delivery service with the UX of the retailer since the user is choosing the delivery service. If your only option is FedEx or UPS and you have a bad experience, that will hurt your trust in the retailer as well. But if you have several options for delivery and one fails you might instead stop using that delivery service/option when possible and opt for a different one next time.


Dane here, our situation is similar to yours. Post Nord certainly needed competition, because they are completely inept at delivering packages, to the point that I refuse to shop at any retailer that don't offer alternatives. Sadly, whenever I order things from outside the country, Post Nord is the default carrier and literally every time I've used them in the past, there has been some minor or major issue with the delivery, up to and including the parcel being returned to sender for no reason at all. Twice.


I want to know why the package was seized by the police and what happened next!


Where is the end of the story where the police are contacted and asked why the single wheatabix was intercepted?

Only reason I read through this... :(


I have been working with parcel delivery for years now (with approx 20 carriers) - and building on top of tracking data is trickier than it appear. "Let's show a timeline of the package delivery status, how hard can it be??".

Well, often the carrier itself does not have an accurate picture of what is going on. Mistakes happen on the ground, and result in all kinds of gap between what is shown on the tracking page and what happened in reality.


We can’t even make an accurate file copy dialog; we will never have accurate tracking.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: