Last May I released my first digital product, a book called "Refactoring to Collections" that teaches PHP developers how to use functional programming ideas to write cleaner code.
Within the first three days it generated $61,392 in revenue and gave me the confidence to quit my day job and work on my own ideas full-time.
Here's the whole story, from idea to launch.
Finding an Idea
Feb 16, 2016 – The Conversation That Got Things Started
I've always loved the feeling of creating something neat and polished and putting it out into the world; whether that be video game walkthroughs with ASCII art titles when I was 8 years old, or sophisticated training spreadsheets when I was competing in powerlifting.
One of the spreadsheets I spent too much time on at the peak of my powerlifting career.
So when I started getting more passionate about programming, writing a book was something that really excited me. But after a bunch of false starts, it started to feel like I was never going to follow through; it just seemed too ambitious.
One day I noticed that a friend of mine in a different industry had recently transitioned to creating books and courses full-time, so I asked him out for coffee to find out how it was working out for him.
I explained to him that I had this idea for a book on automated testing for PHP developers, and that I kept failing to do anything with it because I was intimidated by the scope of the project.
"Have you thought of doing a tripwire product first?"
I'd never even heard of a tripwire product.
"It's basically just something small that you can sell for $9 or $10."
Interesting!
"It would help you get some experience launching something and make a bigger project feel a lot more doable."
This made a ton of sense to me. So what could I put together in a week or two?
Feb 21, 2016 – Pitching the Idea
About a year before I started working on the book, I published a screencast called "Refactoring Loops and Conditionals".
I'd gotten really great feedback on it and I'd been using tons of related ideas to simplify my code for a while at that point, so I thought hey, maybe I could put together a little mini-book with some other tips and tricks on refactoring using collections?
I pitched it to some friends to see what they thought:
And so it was decided, I was going to work on a little tips and tricks guide to refactoring with collections.
Pre-Launch Strategy
Feb 23, 2016 – Announcing the Book
I put together a simple landing page to collect emails (I use ConvertKit, it's great) and tweeted that I was working on the book:
I'm writing a short book on refactoring with collections! Check it out if you're sick of ifs, loops, and variables.https://t.co/LNZzOqOPpU
— Adam Wathan (@adamwathan) February 23, 2016
I also sent an email to the small list that I'd built up from my blog (about 400 people) letting them know about the book and where to sign up if they were interested in updates.
Mar 21, 2016 – First Update Email
"Refactoring to Collections preview!" – 713 recipients (view email)
About a month after announcing the book, I sent out the first chapter sample to my list.
Leading up to this, I shared a lot of what I was working on via Twitter and was pretty happy to have ~700 people to send the sample to.
I started getting lots of amazing feedback right away which was super encouraging:
Wow, this looks fantastic! Reminds me of Clean Code but dig that the samples are in PHP. Also, feels like good prep for teaching devs to think.
I'll be buying this!
A few people even asked if they could pre-order!
Mar 29, 2016 – Another Sample Chapter + Announcing a Launch Date
"Another Refactoring to Collections sample!" – 903 recipients (view email)
About a week later I sent out another sample chapter, and announced my planned launch date: Monday April 11th, 2016.
I jumped the gun a bit on this (which I'll talk more about later), but it certainly did light a fire under my ass to crank on finishing the book.
Apr 7, 2016 – Releasing a Chapter on My Blog
"Using transpose to clean up form input" – 1373 recipients (view email)
A few days before my planned launch date, I took one of the chapters from the book and adapted it as a blog post, hoping to help drive more mailing list sign ups so I had a bigger audience to launch to.
I sent this email to my whole list, not just the people who had signed up for book updates.
Apr 10, 2016 – Changing the Launch Date
"Refactoring to Collections launch update" – 1072 recipients (view email)
I'd tried my best to finish this thing by my original launch date, but the further I got with it the more I realized it wasn't going to be just a 30-40 page mini-book anymore.
Here's the email I sent out:
Hey!
A few weeks ago I announced that I was planning to release the book on April 11, only a day away! The bad news is that it turns out getting a book ready for release is a lot more work than I expected, and even though I've been cranking hard on it every spare moment, it's still not quite going to be ready in time to release tomorrow :(
The good news is that the biggest reason for the delay is that I just have way more important content to share than I originally expected. The book has turned into something a lot more awesome than I ever could've dreamed, and I'm going to be so proud to share it with you when it's finally ready.
A couple things might change based on any feedback I get from friends reviewing the book for me, but check out this table of contents:
I'm also working on covering the examples from the book in a series of screencasts, as well as preparing an extensive set of exercises in the form of unit tests that you can use to really get some of these patterns and ideas under your fingers.
This thing is really close to being ready and I promise it's gonna be worth the wait.
Thanks for your patience!
I was super nervous sending this.
I felt like I was really letting everyone down by not delivering what I promised, so I was really surprised and relieved to get responses like this:
Wow, the table of content looks amazing! I am really looking forward to this book. Great to hear that there will be exercises and screencasts, this will make a big difference.
Take your time, I'm sure it will be worth it!
Apr 26, 2016 – New Sample Chapter + Progress Update
"Book update + another free chapter!" – 1212 recipients (view email)
It had been about two weeks since I sent out any emails (although I'd still been sharing things on Twitter) so I sent out another free chapter sample.
I didn't have a new launch date picked yet, but I let everyone know what I had left to finish, and that I was expecting it to clock in at around 180 pages.
May 16, 2016 – Announcing the Launch Details
"Refactoring to Collections launch details + free screencast!" – 1459 recipients (view email)
I finally had all of the content ready, so I sent out a massive update which included a free screencast, the complete table of contents, all of the package/pricing information, and the new launch date:
Wednesday May 18th, 2016, two days away.
I spent a lot of time crafting this email so I recommend reading the entire thing, but here's the package and pricing information I decided on:
- The Bare Essentials – ~~$39~~ $29
- The 150-page book, in PDF and HTML formats
- The comprehensive set of unit test exercises
- The Premium Training Package – ~~$79~~ $59
- The 150-page book, in PDF and HTML formats
- The comprehensive set of unit test exercises
- 4 hours of screencasts, covering all of the book examples + 3 advanced bonus tutorials
- The Complete Reference Package – ~~$179~~ $135
- The 150-page book, in PDF and HTML formats
- The comprehensive set of unit test exercises
- All of the screencasts
- The source code to Nitpick CI, a complete production-ready Laravel SaaS app that makes heavy use of collection pipelines
The Launch
May 18, 2016 – Launch Day
"Refactoring to Collections is now available!" – 1506 recipients (view email)
I was up until 2:00am designing and building the sales page, which I quietly put live in place of the pre-launch page before trying (and failing) to get some sleep.
I don't know if this happens to other people, but I've never had a worse case of imposter syndrome in my entire life than I did the night before launching the book.
"This whole thing is terrible, no one is going to want this!"
"Why am I pretending I'm an author?! What was I thinking!?"
"People are going to buy it and hate it and want their money back and I'm going to look like a complete idiot!"
I was this close to deleting everything, but I was lucky enough to have a friend to talk to the whole night that helped me realize how ridiculous I was being.
To my surprise I had 14 sales by the time I got up around 6:00am, even though I hadn't told a soul that the book was actually available for sale yet! This was pretty exciting, but I still had no idea what to expect when I actually made the announcement.
At 7:12am (probably too early, I was excited :P) I sent out a short email announcing that the book was available.
Then I sat in bed with my laptop; fingers crossed that anyone would actually buy.
Expectations
Going into the launch, I was going to be really happy if I did $5,000 on the first day, and $20,000 over the lifetime of the book.
I knew of about a dozen people who had been replying to my emails that I was sure would buy, but beyond that I had no idea what to expect.
By 7:30am (18 minutes after I sent the announcement email), the book had sold 33 copies and made $2,179.
By 8:00am: 62 copies and $4,076.
By 8:30am: 81 copies and $5,243.
This was my email inbox that morning:
It was the craziest feeling I've ever experienced.
Announcing on Twitter
I waited as long as I could to make sure people were actually online before I sent out the tweet, but 8:44am was the longest I could hold out.
I sent out this tweet about 10 minutes earlier, letting people know I was about to announce the launch and that I'd love if they would share:
About to officially announce the Refactoring to Collections launch! Would love any help sharing it! 🤗❤️
— Adam Wathan (@adamwathan) May 18, 2016
Then I finally announced the launch itself:
🎉 The "Refactoring to Collections" book + video course is finally available! Grab it on launch day for 25% off!https://t.co/LNZzOr6qOu
— Adam Wathan (@adamwathan) May 18, 2016
I can't say how much it helped for sure, but I think actually asking people to share beforehand really made a difference. (I picked that one up from @wesbos!)
Hourly Sales
Here's what sales looked like on the first day, hour by hour:
Revenue by hour on launch day
By the end of the first day, the book had made $28,299.
I was blown away.
May 19, 2016 – Second Day of Launch Sale
"Refactoring with Collections and Null Objects, free screencast" – 1803 recipients (view email)
On the second day of the launch, I sent another email to anyone on the list who hadn't purchased yet (ConvertKit makes this really easy.)
I included four testimonials from early customers, like this one:
Couldn't put @adamwathan's "Refactoring to Collections" down. Less than 24 hours later I'm already done. Can't wait to share with my team.
— philwinkle (@philwinkle) May 19, 2016
I also posted one of the screencasts on my blog for free, and linked to it in the email.
I did another $14,614 in sales this day, bringing the total up to $42,913.
May 20, 2016 – Final Day of Launch Sale
"Last day to get 25% off Refactoring to Collections" – 1796 recipients (view email)
I sent out one last email letting people know the sale was ending, and included a few more testimonials.
I also included this excerpt from the closing chapter in the book:
It's hard for me to put in to words, but there's something beautiful about taking some data, piping it through a series of discrete transformations, and having the solution come out on the other side. There's something clean and pure about it that makes it an extremely seductive style of programming.
To this day, every time I encounter a new problem the first thing I think is "how can I solve this with a collection pipeline?", and I am continually amazed by just how often I can use this approach to find an elegant solution.
By the end of the day, the book had made another $18,479, finishing out the launch with **$61,392** in total revenue.
Revenue across entire launch sale, colored by day
What I Think Worked
Starting Small
I'd wanted to create some sort of digital product for years leading up to this but never followed through because every idea I had was too ambitious or intimidating.
Once I convinced myself I was just putting together a 30-40 page mini-book, getting started and making progress became a whole lot easier.
Sure, it turned out a lot bigger than I planned, but if I knew that from day one, I never would've mustered up the motivation to actually write the damn thing.
Start small!
Making Promises
I find making progress is a lot easier when I feel like I'm letting someone down by not delivering what I promised.
For this book, that started with putting up a landing page and collecting emails.
I'd promise a sample chapter on Twitter before it was finished, just to make sure I'd get it done:
🕵 Sending out another book preview tomorrow, diving deep into `reduce`!
— Adam Wathan (@adamwathan) March 28, 2016
Sign up if you'd like to check it out: https://t.co/LNZzOr6qOu
When those techniques got me far enough along, I promised a launch date, and busted my ass every night trying to hit it.
If you have a hard time with distractions or procrastination, set yourself up for embarrassment if you don't get things done. It definitely works for me!
Sharing Progress
Instead of just working on the book in private, I did my best to share everything I could possibly think to share.
If I came up with a great way to phrase an idea, I'd share it on Twitter:
Some more book progress, refactoring through positive thinking!https://t.co/LNZzOqOPpU pic.twitter.com/ZPdPSdTB22
— Adam Wathan (@adamwathan) March 19, 2016
When I finished an example I was really excited about, I'd give it away to the mailing list for free:
Just finished a screencast? I'd tweet out my to-do list so people could see where things were at:
Three to go! These last ones monsters, wish me luck. pic.twitter.com/MYHeR259s5
— Adam Wathan (@adamwathan) May 15, 2016
This really helped people get excited about the book, and the feedback I got kept me motivated to keep working.
Doubling Revenue with Tiered Pricing
There's a limit to what people will spend on a PDF.
Even though I truly believe the ideas in Refactoring to Collections are worth the $179 price tag of the top tier, books as a category have an established market rate.
No matter how much time it saves someone nor how much effort it took to write, it's almost impossible to get someone to spend more than about $50 on a digital book, even when they believe it's worth the price.
I can't even convince myself to spend $179 on a book!
So if you want to make a full time living from digital products, you need to help people justify paying what your product is really worth.
The easiest way to do that is to try and take your product out of the "book" category. Add screencasts, sample projects, or exercises; or include access to a forum, or a 30-minute coaching call.
Make it easy to evaluate your product as its own unique offering, not just another eBook.
Here's what the revenue breakdown looked like between my tiers at the end of the 3-day launch sale:
-
Bare Essentials Package (just the book, $29)
Units sold: 258
Revenue: $7,482 -
Premium Training Package (book + screencasts, $59)
Units sold: 427
Revenue: $24,819 -
Complete Reference Package (book + screencasts + sample project, $135)
Units sold: 220
Revenue: $29,091
That's an average selling price of $67.84; more than double the price of just the book.
Writing the book took me about 9 weeks, the screencasts about one week, and the sample project was something I already had lying around.
If I didn't let anyone pay more than $29, I would've only made $26,245 from the same number of customers. That's less than half the revenue for a lot more than half the work.
Closing Thoughts
I launched Refactoring to Collections to a list of 1500 people and about 4000 Twitter followers. That's not a tiny audience, but it's a lot less than I thought I'd need to have such a successful launch.
Two weeks after releasing the book, I decided to give my notice at my day job and now I get to work full-time on the other product ideas I'd always been too intimidated to start (like Test-Driven Laravel, which is an even crazier launch story I'll save for another day.)
It took just under 3 months for the book to cross $100,000, and now 11 months after launch it's made a total of **$138,835.** It still brings in between $1000-$2000 each month.
When I was working on the book, launch stories from people like Nathan Barry and Sean McCabe really made a difference in keeping me motivated and pushing me to the finish line, so I hope this post can do the same for someone else.
If you've always wanted to create something but felt too intimidated to follow through, hopefully there's a few things in here that make launching your own product seem more achievable.
If you're working on something and have any questions you think I could help with, I'm @adamwathan on Twitter!