ChristianDeWolf.com Books · Software · Business
Quail title text

Scaling up digital sales using peoples' existing friendships

I've got a lot of growth to hack in my comedy startup, but luckily, there's some low-hanging fruit in my eBook store that I can harvest. My profit margin is highest on digital products — and I don't have to do any extra work when one is purchased — so it only makes sense to try to "scale up" these sales numbers first.

Currently people are buying them one at a time, for themselves. Talk about a 1x multiplier!

Today we're going to implement a system where customers can send books as gifts to their friends. As a proof-of-concept, I'm going to set it up so every time someone buys a book, they get an extra copy that they can freely gift.

Stage 1: Sending books to others

First I'm going to have to change how books are owned by users with an addition of a FreeGift database object to store the sender/receiver/product information. Luckily, I wrote my eBook store myself, and I know exactly what needs doing for the upgrade.

Unfortunately, I wrote it two years ago! The code is, well, not garbage per se, but it wasn't built with scaling in mind. The silver lining, however, is that it's mostly Ruby, my favourite language of all.

It took a few database migrations, an integration with the devise_invitable gem to invite recipients to create accounts to accept their books, and a new interface to actually do it, but it wasn't too much trouble. If you're following along at home, and you have a developer to do all the technical stuff, just tell them to get it done and give them an arbitrary deadline. They prefer that.

The upgraded store

The exciting new ability to do multiple things with a product.

In terms of scaling, though, the best I can rate this is a 2x multiplier. Each book purchase gets a second book out into the world, and it could create a new fan, but it doesn't directly increase revenue.

But now that the application has a gifting mechanic, I can package multiple gifts together and sell those! And if you got the book for free, maybe you'll buy a discounted pack of five to send to your own friends. Please do this.

Stage 2: Buying packs of giftable books

To start, I have to upgrade the shopping cart system. I wrote this back in 2015 as well, but this time, most of the code is JavaScript. Much less pleasant than tranquil Ruby. Again, if you have a dev working for you, just ask them to layer in the new feature. It shouldn't be too hard for them.

With some more database modifications, a cart redesign, a store interface overhaul, changes to the receipts, and some extra automated tests to make sure everything's still working, this feature is done:

An improved cart

The cart, now capable of holding multiple types of the same product. It's the future.

With all this in the bag, I'm going to rate this as a 5x scale. Rest assured I'm going to be pushing this feature when holiday-time comes around.

But we can't go to sleep just yet — we need a place for the auto-mailer.

Stage 3: The gift nudger

If someone has a gift sitting around in their account that they haven't given to anyone, they need to be reminded. Luckily, I've already got an auto-mailer in the app, and with the addition of a daily cron job that checks which gifts are getting stale, a gift nudger is easy to implement:

Code for the gift nudger

Sweet, sweet Ruby code. Open-sourced here.

As an author, you don't want to annoy your readers until they're at least most of the way through one of your books, so obviously, make sure that you don't nudge people too often. I'm doing it just once, a week after the initial purchase.

Now that we've scaled digital distribution a bit, let's move onto physical. I've got boxes of books in my office that are taking up space, and I need to liquidate them. NEXT →

Posted in: Scaling up


Quail small

Scaling in progress!

Come back soon to see how the next plan hatched.