As you know, we offer free minor updates to our Take Control ebooks to customers; it’s a great way for authors to keep their ebooks up to date with new software releases, to respond to feedback from readers, and to fix any mistakes that slipped in. From what we can tell, readers appreciate the service, so it’s a great example of how publishing electronically helps everyone.
Helping customers learn about and download the updates has been challenging, however, and in this article I tell you what we’ve done, what we’ve learned, and what we’re doing now. Even if you’re not a Take Control reader, you may find it interesting to read about the pros and cons of different methods of distributing updates to digital products.
On Saturday we released three updates, version 1.1.1 of Glenn Fleishman’s "Take Control of Your AirPort Network" (to fix a few typos that slipped into the 152-page ebook and add a $10-off coupon for Sustainable Softworks’ IPNetRouterX), version 1.1 of Joe Kissell’s "Take Control of Email with Apple Mail," and version 1.1.2 of Joe’s "Take Control of Spam with Apple Mail" (to address changes in Mail 1.3.9, add clarifications, provide new screenshots, and more). It took some time, for sure, but the fact that we could do three updates in such a short time is an indication that we’ve come a long way from our start 10 months ago. In fact, in that time, we’ve tried four different approaches to providing free updates with varying levels of success; the lessons we’ve learned may prove instructive to others providing updates as well.
Password-Protected Archives via FTP — Our first approach seemed sensible enough on the surface; we’d inform customers of an update via email and give them an FTP URL which they could use to download the update. To restrict the URL to customers, we protected the StuffIt archive containing the update with a password, and our email included that password. The approach worked fine in our testing, and it undoubtedly worked for many people, but it fell down in a number of ways:
People use a wide range of programs for downloading via FTP, from solid FTP clients like Fetch and Interarchy to Web browsers to the Finder (generally the worst of the lot). Download problems with FTP URLs occurred much more frequently than we would have liked.
Some programs also had trouble processing the StuffIt archive, not calling StuffIt Expander properly, trying to open the file in another program, or not opening it at all. Most people managed to get past these problems, but the instructions we provided often didn’t match reality.
You wouldn’t believe the ancient versions of StuffIt Expander people are still running! That wouldn’t matter except that password-protected archives don’t always expand properly in much older versions. It really is worth keeping StuffIt Expander up to date to avoid confusions like this.
Downloading and printing at work on a PC, which some people like to do, required that people download StuffIt Expander for Windows. (With Panther’s built-in support for Zip files, switching to that format in general made sense for both Mac and PC users.)
eSellerate Coupons — One of the core tenets of Take Control is to do more of what works and less of what doesn’t, so we quickly changed gears. Our second approach to providing free updates was to send email to every customer of an ebook giving them a special coupon code that, when used in an eSellerate order, gave them a free copy of the ebook in question. This method worked quite well, due to a few advantages:
The eSellerate order process was familiar, and although people still occasionally have troubles (usually solved by trying again with another browser or turning off download accelerator utilities like Speed Download), the vast majority of orders, and thus free updates, went smoothly. If the free update was the only ebook in the order, eSellerate’s system was smart enough to skip asking for credit card information.
Because the update process required placing an actual order, people often used it as an opportunity to purchase other ebooks they hadn’t yet bought, making it good for business.
However, there were still some problems that made us unhappy with this method of providing updates.
Making people run through an entire order seemed like more effort than should be necessary, even if they didn’t have to enter credit card information.
Doing the work necessary in eSellerate to set up the coupon and make the file available for download took me more time than was reasonable for a very small update. Extracting email addresses from our database added significantly to the necessary effort.
Since every update download was a real order, it added a lot of data to our order database, data that was either essentially uninteresting or potentially confusing. That in turn required more work on my part to pull out these zero dollar orders when preparing royalty statements for our authors.
eSellerate Redownload — In an attempt to reduce the amount of effort and keep the unnecessary data out of our database, particularly with very small updates, we tried a third approach. eSellerate allows anyone who orders to download the file they’ve bought up to three times (the email receipt contains a URL that leads to a Web page with various after-order services, including another link leading to a Download Now button). By allowing three downloads, eSellerate makes it possible for people to work through problems they have downloading, but the download URL can’t be posted in public. We had a tiny update ready, so we replaced the file appropriately in eSellerate, and then sent email to everyone who had bought that ebook, telling them how to download it. It was a big mistake, for many reasons:
Email continues to become less and less reliable due to spam and spam-fighting efforts, so some percentage of people never received their email receipts at all. Many of those who did receive a receipt threw it away or lost it. The end result was that lots of readers couldn’t find the URL that would let them download the update without help from Tonya.
Since many people buy more than one ebook, and since people had email receipts from all the orders that had resulted from previous free updates, a number of people had trouble finding the right receipt, again requiring help from Tonya.
If someone had, for whatever reason already downloaded the file three times (they experienced a dropped phone line or a browser crash, for example), eSellerate wouldn’t allow any more downloads until Tonya reset the download counter in eSellerate’s order tracking system.
Luckily, it’s easy for us to solve customer problems; after a quick check to verify that the person is a customer, Tonya usually sends them a copy of the ebook they’re having trouble getting. Readers seem to appreciate this fast solution to the problem at hand, but we’d of course rather avoid the problem altogether. The amount of work this method caused was insanely higher than any other approach, so we clearly needed to rethink the entire process if we were to move away from the free coupon strategy.
Check for Updates Button — After talking about all sorts of crazy ideas, including an application that could store the differences between two PDF files and use that information to update an original PDF, I realized that I was thinking about the problem all wrong. In many ways, ebooks have a lot in common with software, and if a developer had asked me how to handle updates, I would have said to build update checking into the application, automatically downloading and installing available updates with user assent. Obviously, since we distribute PDF files, not full-fledged applications, there’s a limit to what’s possible, but enabling the user to check for updates from within the ebook itself was within the limits of possibility.
The trick for us is that we’re now running Web Crossing, which, along with its many other benefits, is an entirely programmable system. With some help from Sue Boettcher of Web Crossing, I created what is essentially a CGI (Web Crossing calls it a "macro") that accepts as input data embedded in a URL and returns a Web page that tells the user if an update is available, and if so, provides a protected and obfuscated link to download the update. The advantages are numerous:
A single click on the Check for Updates button loads the Web page, and if an update is available, a second click downloads the update. That’s a lot easier than requiring people to run through a full order on eSellerate.
A separate part of the Web page lets readers sign up to receive notification about updates in email along with notifications of new Take Control books in general. That makes sending out update notifications a lot easier (before, it involved extracting addresses from our database and putting that data in the Bcc line in Eudora).
We can post information about both available updates (so people can decide if they want to bother downloading) and upcoming updates (so people can postpone printing if an update is due shortly).
No unnecessary data ends up in our order database.
The system isn’t perfect yet, of course. Certain download utilities have trouble with the way I serve download URLs through a CGI, and we discovered that if you use Acrobat Professional 6.0, you must set the Web Capture preferences to open Web links in your Web browser, not in Acrobat. (Otherwise, Web pages are added to your ebook, and the download link won’t work.) I’m sure other issues will crop up, but as long as handling new quirks remains less work than any of the other systems we’ve tried and discarded, it’s good for everyone.
Obviously, the particular system I’ve developed isn’t portable outside of Web Crossing, but I hope that anyone who needs to provide updates to users can learn from our experiences to do it in as clean and efficient a way as possible.