Two terrible copy decisions
I still buy physical books and have been for decades. I’ve grown used to the endless delivery times you have to endure when buying from places other than Amazon. I’ve long since decoded what sentences such as “Will ship in 5-12 days” mean (the book will be handed over to the delivery company after 12 working days i.e. at least two and a half weeks, and then there will be another 3-5 days (make it 5) before delivery).

This might sound shocking to those of you who are used to next-day or even same-day deliveries. For me, it’s not an issue for two reasons:
One: As anyone who reads for pleasure can guess, I never run out of books. There’s always a “To Read” stack, and in a pinch I have my thick tome of Pu Songling short stories.*
Two: I’m used to it, so I plan accordingly. There’s never an urgent “I need that book YESTERDAY” moment. I order my books, and weeks later they show up. Everything works well, and I’m happy.
Until my latest experience.
The two main online bookstores in Sweden both offer free delivery if you order over a certain amount. I usually exceed that amount. For my latest purchase, I picked the free delivery option and was promised a five-day delivery window. So, N or N+5.
Fine. I looked at the N+5 date and set my expectations accordingly.
But…
As soon as the seller marked my books as having been handed over to the delivery company, that company sent me a message saying, “Would you like to receive your books on N? If so, pay us 19 SEK.”
This does two things (and if they handled it in the way I’ll describe later, it would do neither).
First, it feels like blackmail and makes the delivery company look malicious. “We have your books and will hold them for ransom unless you pay us!” is not a good look.
Second, it ends up in a legal grey area. Companies are not allowed to mislead consumers by promising a free delivery date that isn’t possible, and they are not allowed to say that something is free if it actually costs money.
In summary, by saying that I can get a free delivery between N and N+5, while the company handling the delivery won’t deliver by N unless I pay them, two laws might be broken. They’re at least being bent. It’s open to interpretation.
And by contacting me to say, “We have your books and will now ignore them until you pay or N+5 happens” you end up looking like a scumbag.
The fact that the books weren’t delivered until N+9 is a different story altogether. Things happen. It’s fine. The seller contacted me in advance about it. But to make it clear that you have the books, and the ability to deliver them, but will do so only if I pay extra … yeah. Scumbags.
What could they have done instead?
All they had to do was to change two pieces of so-called microcopy.
Step one: The seller should say, “Free delivery by N+5”.
Step two: The delivery company should say, “Changed your mind? Pay for faster delivery”.
And just like that, all my yelling at clouds (and the legal grey areas) would dissipate, like mist on a summer morning.

But why did this happen?
I can’t know for sure, but I’ve been doing this long enough to make an educated guess. I’m guessing the seller isn’t aware of which delivery options its customers see. Just as with payments (in a healthy open market) the customer is given several different options to choose from.
The stores themselves use a few different middlemen to handle all these delivery options, sometimes to comical effect, with obviously poor options displayed next to superior ones.
This means that the bookseller has no idea what is being offered, but neither does the middleman. They connect their API to the delivery companies’ APIs, and a range of options is displayed based on the delivery address. I’m guessing that the cheapest one automatically becomes the free option.
I don’t think that the bookseller has any idea what’s going on in its checkout flow. I think this might qualify as a Swiss cheese bug, i.e. a series of steps have small holes in them, and if the slices line up juuuust right, things go wrong.
Step one: The seller decides that orders over a certain amount will get the cheapest delivery option for free. It asks the middleman for the cheapest delivery option.
Step two: The middleman polls all available deliveries via their APIs and asks for the cheapest option, along with the delivery date.
Step three: The delivery company’s cheapest option includes a pay to upgrade option, but there’s no way to communicate this through the delivery-options platform the bookseller has chosen to use.
If the seller had demanded that every delivery date given for the free tier actually be free, this blog post wouldn’t exist. Similarly, if the middleman had said, “This will be displayed as free, so you cannot charge for any date given” when looking for the cheapest offer. And finally, if the delivery company had created a cheapest offer designed to be displayed as the free tier in their system… there would be no blog post.

I honestly don’t think the delivery company has any idea how its ingenious new plan to make money is being displayed. At its heart, it’s a good idea**, by using the flexibility that a real-time system offers, the company can allow customers to change their delivery tier even after placing an order.
So the different parties have no control over the context in which their offer is being … ehum … offered. They gave up control for efficiency, and the result is me writing a blog post about Swiss cheese and microcopy.
Well, the delivery company has some control. I don’t envy the person who had to write the copy for the button in its web interface. There’s not much space in which to get the point across, and it looks as though the company wanted to highlight the benefit rather than explain what might happen. So my suggestion, “It’s not too late to upgrade to faster shipping” would probably get a downvote.
*Even though they are indeed short, I can’t handle more than perhaps five in a row before the deadpan flood of “imagine ifs” becomes overwhelming.
** It’s a good idea, but the way it incentivises letting packages collect dust on shelves for longer and longer might come back and bite them in the future. Change the settings so that N+5 becomes N+10, and suddenly paying 19 SEK seems twice as valuable.