Want to get more articles like this one? Join my newsletter

How I marketed and published a niche WordPress book

A few weeks ago, I released my first book “Discover object-oriented programming using WordPress“. The book had $11,040 in sales during its launch week. This went above and beyond the expectations that I had for how well the book would do. (I would’ve been ecstatic if it’d made even half of that.)

But before I go any further, I want to do a small preface. What I am going to talk about isn’t anything that I really figured out myself. All that I did was read a lot of what others had done and then tried to do it myself in my own authentic way. (That last part is super important though!)

I’m especially thankful to Nathan Barry and his book “Authority“. (Sadly, he doesn’t sell just the book anymore.) I’m also super grateful to Paul Jarvis who’s inspired me to have my own quirky voice through his newsletter. He and Justin Jackson (not the basketball player!) taught me that marketing didn’t have to be this slimy thing if you were authentic about it. (Justin has a course on marketing for developers.)

That’s also why I’m taking the time to write down all my thoughts about this experience while everything is still fresh. (Much like my year in reviews.) I was only successful because other people shared how they approached marketing and self-publishing a book. I want to do the same by sharing as much information as I can for anyone interested in marketing and publishing their own book.

Having a newsletter

The centrepiece of marketing a book (or any other product) is having a newsletter. This is something that you’ll hear over and over from a lot of people selling things on the internet. The newsletter is how you build an audience that trusts you and will want to hear what you’re creating. (And maybe even pay for it!)

Now, there’s no right way to do a newsletter. (Paul Jarvis has a pretty good take on what makes for a good newsletter and how to start one.) What I did was just start teaching everything I knew to the WordPress community. I then put up a newsletter signup page to try to stay in touch with anyone who liked my writing.

That said, it’s worth pointing out that creating a newsletter signup page isn’t some magical thing. It doesn’t mean that you’ll end up with thousands of subscribers overnight. It does happen for some people, but it didn’t for me.

The main reason why that didn’t happen was that I was pretty much writing for a niche within a niche. (And even maybe within another niche!) So to try to increase the number of people signing up to the newsletter, I added a book landing page in August 2014. I never tracked how effective it was for me to do this, but it didn’t really matter either.

I was just trying to find another incentive for someone to subscribe to my newsletter. I was willing to try things that I didn’t consider dishonest or annoying like exit popups. (I did do that little slide down below the menu, but I haven’t tracked how well it works either. I know. I’m bad at this.) I wasn’t against the idea of writing a book if there was enough interest in it so the book landing page felt ok to me.

But what was enough interest for me? Well, enough interest was about a thousand newsletter subscribers. This seemed to be the sweet spot based on my research. Less than that and the odds were good that I wouldn’t make any money. Anything above that seemed to lead to pretty good launch outcomes. (I’d read people making a few thousand dollars to $50,000 or more.)

And then nothing

Once I had a landing page for the book, I did nothing else related to it for a few years. My main focus was just writing articles and speaking at WordCamps. Over time, my newsletter grew to a point where I felt I’d have over a thousand subscribers when I’d be ready to launch it. That was in 2016.

I spent most of 2017 writing it slowly. (As I do with everything I write.) 2018 was all about editing it and working on the extra material for the more expensive packages. I won’t talk too much about all that in this article since there’s a lot to write about there as well.

But as 2018 was wrapping up, I was far enough along that I’d started thinking about ways to market the book. Normally, you want to do all these guest posts and try to get the word out as much as possible. I already wrote a lot. I didn’t want to write guest posts.

Picking my launch date

But one content marketing idea I had was to do a WordCamp talk where I could promote the book at the end. That talk was “How to approach object-oriented programming with WordPress“. I started submitting it to WordCamps at the end of 2018.

I also told myself that, when a WordCamp selected it, I’d set a deadline for launching the book. It wasn’t picked up by any WordCamps in 2018. But in January, it got accepted for WordCamp Miami.

This meant that I now had to set a deadline. I needed the book to be out by the time I spoke at WordCamp Miami. The date I chose was Wednesday Match 6th which was just one week before the camp.

I had a few reasons for picking that date. I have no idea whether they were good or not since I’ve only launched one book. But they made sense in my head at the time. (The best selection criteria obviously! lol)

First, a Wednesday seemed like the optimal day to launch a programming book. There are almost no major holidays on a Wednesday. It’s also mid-week. I’m catching everyone near the peak of where they’re thinking about programming.

I also chose that week because it was a week before WordCamp Miami. I felt this would give me enough time to focus on the launch and finish preparing my talk. In practice, it was enough time because I started preparing my talk a month before. But it was still stressful because I was still in book launch mode the following week. I’d bump that to two weeks if I did it again.

Building excitement for the launch

With my launch date selected, I started promoting the launch of the book. I didn’t really know what to do for that either. I ended up mostly following the launch plan from Justin Jackson’s marketing for developers book.

Four weeks prior

The first promotional message that I did was four weeks before the launch. I tweeted that the book would come out next month. I also sent an email to my newsletter which you can see below.

I didn’t put a specific date because I wasn’t sure if I’d hit my deadline or not. I still had a lot left to do. The largest one was that the screencasts which I couldn’t record because I was in Mexico. (Though life I know!)

That tweet ended up doing very well. It got 37 retweets and a lot of likes. But more importantly, I added 44 new subscribers that week which is more than I add in a month usually.

Foreword update

A week before launch, I sent a final email update about the book. (You can see it below.) That update focused on announcing that the book would have a foreword by Tom McFarlin. I was so happy with the foreword that Tom wrote so it felt great sharing it with everyone.

The truth is that I hadn’t planned on having a foreword for the book. Tom was just super nice and offered to do one. I feel really fortunate for having had that happen.

But it was also a unique marketing opportunity. Tom is a pretty well-known WordPress developer. I figured I could test if announcing a foreword by him did anything to create excitement for the book.

So I tweeted about the upcoming foreword email a few days before I sent it out. The tweet wasn’t even close to as successful as the one I’d done announcing that the book’s release. I only got six newsletter subscribers during the period between when I tweeted about the foreword and when I sent the email for it.

Day before

The next promotional message was the day before the book launch. I sent to different emails to my newsletter. The one below was if you hadn’t shown any interest in the book.

While I didn’t want to spam people that hadn’t asked for book updates, I also didn’t want to ignore them either. I figured the day before was a good day to bring up the fact that I had a book coming out. I also gave them a link to the sample chapter if they wanted to get one. The link had a 14% click rate which is quite good!

Above is the email I sent to the people who were getting book updates. It’s very different from the other one. It follows Justin’s recommendation in his marketing for developers book

I also tweeted that the book was launching the day before. This tweet did really well much like the one announcing the book launch a month before. It got 26 retweets and reached a lot of people.

I also got a lot of newsletter subscribers from it as well. I don’t know how many exactly because the launch messed with the numbers. (I’d say at least as many as the tweet I sent a month before.) The reason why I think the tweet did really well was because it had an incentive. It said that’d they’d get launch discount if they signed up.

Launch day

So this brings us to the launch day! I started the day by switching the book landing page to the book sales page. (I’ll talk about the sales page in the next section.) In terms of communication, I followed the same formula as the other days. I sent an email announcing the book launch to my newsletter which you can see below.

I didn’t really have a plan when I wrote that email. I just wanted to talk about why I wrote the book and why I thought it was important for the WordPress community. It ended up being quite a long email so I put a TL;DR at the top with the launch discount.

I also tweeted about the book launch. I wanted to have this tweet pinned at the top of my Twitter profile so I wrote it in a more timeless way. It also linked to the new book sales page without an attached image. (I’ll talk about the book sales page later in the article.)

I didn’t attach an image to the tweet because I made sure that the book sales page had a great link preview. I don’t usually do anything special for social media or SEO with my articles. But I figured it was probably a good idea to do it here since I have no idea what the long tail sales are going to be.

Sharing in the Advanced WordPress group

It was a good thing that I did the work making sure that the book sales page had a great link preview. That’s because the book sales page was also shared in the Advanced WordPress group on Facebook. This wasn’t something that I expected.

For me, it felt like too much self-promotion to post the book in the Facebook group. I didn’t want to do it. (It’s also why I never posted it on Reddit either.) But my friend Maxime Jobin insisted to do it so I let him make a post.

Even if Maxime created a post for me, it didn’t mean that it would make it on the Advanced WordPress group. It still needed the group administrators to approve it. And I wasn’t sure if they would since it was about a product that you had to buy.

But they did! And the reception was actually quite good which was a relief. Maxime also offered to share the launch discount code if anyone wanted it. A lot of people took him up on it.

I think not having a discount code for the Facebook group was a mistake on my part. (Maxime even suggested I have one.) If I did it again, I would make one. I could at least know if the group drove a lot of sales or not.

Last day of the launch sale

While doing my research on how to market the book, I found plenty of information on what to do leading up to the launch. But after that, there wasn’t much written about what to do. So I decided to just go with what made sense to me based on my research.

The first thing that seemed to make sense was that I should send a reminder that the sale was ending. People are busy. They might have had the intention to buy the book, but life got in the way and they forgot.

So on the last of the sale, I sent the email that you see above to everyone who hadn’t bought the book. I didn’t really know what to write in the email either so I mentioned that the book had been doing well. I also put a screenshot of this tweet by Kevin Hoffman reviewing the complete package as a form of social proof.

The graph above from Gumroad shows my sales around the launch of the book. As you can see, I made almost as much money on that final day of the sale that I did on launch day. It does feel like sending that email was probably a really good idea.

As with a lot of what I discuss in this article, it’s hard to know if it actually did do a difference. I can’t see what would have happened if I hadn’t. But I would probably send that email again if I launched another product.

Sales page

Like I mentioned earlier, with the book launch, I replaced my old book landing page with a sales page. There’s plenty of material out there on how to design and build a sales page, but I wasn’t too sure what I wanted to do anyway. I just ended up piecing one together using a few sources as inspiration.

For the copywriting, I kept a lot of what I’d written for the book landing page and just polished it. The copywriting for the original landing page was the result of following Amy Hoy’s teaching. She talks a lot about her formula of talking about the reader’s pains and dreams, and how to bridge them.

The big copywriting addition to the new sales page was the hero image and text. I ended up basing my text on the one Adam Wathan had for his “Refactoring to Collections” book. Since the book did “quite well”, I figured it was probably an ok text to base myself on!

In fact, I based a lot of the rest of the sales page on the one for “Refactoring to Collections”. I didn’t feel like reinventing the wheel and that one seems to have worked well for Adam. I did leave some things out like the sample screencast and table of contents.

Communicating after buying the book

Another thing that wasn’t discussed at all during my research was what to do once someone bought the book. I wasn’t too sure what I wanted to do either. That said, I made sure that I had an automation rule to add anyone that bought the book to a sequence.

Asking for Gumroad review

At the end of the book, I ask if you can tweet or write a review for the book if it helped you. That’s because I’m not doing anything else to market the book outside what we’ve been discussing in this article. That means that I’m depending on word of mouth for marketing from this point on.

However, a month before the book launch, Gumroad came out with a product rating system. Gumroad uses the rating system with its product recommendation system. I haven’t made any sales with it yet and I don’t expect to if I’m being honest.

That said, it’s still another type of social proof. Whenever someone clicks to buy one of the packages, they’ll see the rating for the product. I felt that was probably valuable enough to ask people who bought the book to rate it.

Above you can see the email that I send. The title of the email and the first paragraph bring up the favour that I asked in the book. After that, I explain that Gumroad has a rating system and how they can rate the product.

I think that sending that email was a good call. If you look at my Gumroad profile, you can see that the three main packages all have 5 stars. That’s all I could ask for really!

Upselling the team package

I also had another post-purchase email idea that I didn’t end up implementing. It was about buying the team package. The idea was to refund someone’s purchase if they got their work to buy it.

My idea was to talk about how getting the book into as many as possible was important. That’s how we’ll get the WordPress community to learn object-oriented programming. So, if they felt that the book would be helpful to their coworkers, they should get their work to buy it.

So why haven’t I sent this email? Well, the truth is kinda chickened out. The book did super well already and I felt it was kinda greedy to push for more.

I’m curious about your opinion on it though. So feel free to let me know in the comments if you feel like I should have done this. Maybe I’ll end up doing it.

Post-launch discount requests

I took down the launch discount code at the end of the third day as I’d said I would. But even with the emails, I still had people reach out a few days saying they missed the launch discount. My policy for those requests was to create a custom one-time use discount code for them.

Why do that? Well, because this book launch is far from being the most important going on in your life. So you end up missing the emails and forgetting about the launch even if you had the intention to buy the book.

On top of that, if you reached out about it, you were probably really keen on buying it. It didn’t make sense to me to be greedy. I’d rather just build goodwill by extending you the discount.

Offering a discount for a WordCamp talk

So what happened with my WordCamp Miami talk where I was going to promote the book!? Well, due to technical difficulties, I wasn’t able to show the slide with the discount code. So I wasn’t able to promote the book as I’d planned when I picked my launch date.

All wasn’t lost though! While I wasn’t able to see if promoting a book at WordCamp talk generated any sales, I did do something else. I also offered the discount code to my newsletter when I sent my email about the companion article to the talk.

This is actually the only mention of the discount code that I ended up doing. What was interesting is that I did get 7 sales from mentioning it in the email. So it wasn’t a bad idea to mention it in the email. I just don’t know how many sales I would have made if I’d mentioned it at the talk. (I’ll get a chance to test that again soon.)

Sales breakdown

So that pretty much covers everything that I did for the book launch. Let’s wrap this up by going some of the sales numbers.

Launch sales

First, let’s look at the sales during the 3-day launch. I made $9,349.50 during that period. If we break it down per day, it looks like this:

  • Day 1: $3,826.50
  • Day 2: $2,225.25
  • Day 3: $3,297.75

As I said, I think sending the email about the last day of the sale was a really good idea. I think that’s part of the reason why the last day almost did as well as the first one.


There’s one recommendation that I saw over and over researching how to market this book. It was to not just sell the book. There’s a limit to how much people are willing to spend on a book even if that’s where most of the value is.

Instead, the book should be one of several different packages. Each package has a different value proposition at a different price point. This allows you to increase the average revenue per customer.

So from the start, I was planning on doing more than one package for the book. And was worthwhile to spend the time to create these different packages? Yes, it was! You can see it clearly when you look at the sales breakdown per package.

  • Book package: $2,496 (81 sales)
  • Premium package: $3,118.50 (42 sales)
  • Complete package: $3,735 (19 sales)

The book package had the most sales but generated the least amount of money. Each package made progressively more money on fewer sales. The complete ended up generating the most money on only 19 sales which is amazing.

This puts my average revenue at $65.84 per customer. This is more than twice the revenue that I was making on the book during the sale. (The book was $29.25 with the discount.) So needless to say, I’m happy that I did packages. It was the difference of over $5,000 in revenue for me.


I suffered from a lot of impostor syndrome writing this book. My biggest fear with the book was that people would hate it and ask for a refund. The opening of the book was specifically written to deal with that fear.

First, I specifically explained what the book would be about and what it wouldn’t cover. I think this is a good thing to do even if you don’t have any fear of refunds. It ensures that the reader really knows what to expect from the book.

For me, this had the secondary benefit that I felt less guilty about a refund if that’s why they wanted one. But I also said that they could ask for a refund for any reason and I’d be happy to give it. Overall, doing this made me feel better about my fear of refunds.

But like most fears with impostor syndrome, it ended up being unfounded. I had a single refund request since the book launched. And it was a completely legitimate refund request based on what I’d written at the beginning of the book.

Where are we now?

Over a month has passed since the launch, I’m now at $12,952.80 in sales. So that means that I made about $2,000 in sales in the last month. That’s pretty amazing!

I’m not sure where this number will be in a few months, but it doesn’t really matter. This is more money than I ever expected to make with this book. I’m really just grateful for everyone’s support.

I also hope that this will help anyone who’s thinking of launching a product of their own. The whole thing was scary and daunting to me even with all the research. So know that you’re not alone feeling that way, but that there’s always a potential for success. Even for something as crazy as an object-oriented programming book for WordPress developers!

Creative Commons License