How Jack Ellis made $150k from his first course

Sep 27, 2021

Today we have a special guest post from Jack Ellis, Friend of Slip and co-founder of the awesome tool Fathomwebsite analytics that doesn't suck.

Jack is one of the most helpful founders I've ever met and I'm excited to share his story on how he made $150k from his first course.

His story touches on a big thing we believe here at Slip. There is money to be made in niches (Serverless Laravel is a niche of a niche), and building an audience in a niche is one of the best ways you can prepare yourself for a successful course launch.

P.S. If you've already built up a reputation in a niche programming community, we'd love to help you build and launch a course using Slip! We're the easiest way to build and sell interactive programming courses.

Enough about us, here is Jack's story.

An image from Notion

Back in 2020, I launched my first ever internet course and quit my full-time contracting position. This post will talk about how a regular developer can make six figures from an internet course.

Now many of us have seen people like Adam Wathan, Paul Jarvis and Wes Bos make $1,000,000+ from online courses, and we think it's impossible. But the truth is that these three individuals worked incredibly hard over many years, building up an audience, trying different things and producing incredible value (often for free). They didn't build a course in silence and announce it to 500 semi-engaged Twitter followers; they spent years building up an audience & a reputation. They provided massive value to their audience, and they became leaders in their fields.

When I started my course, I had no audience, no mailing list and no previous course launches under my belt. But I did have a significant set of developer skills and lots of passion.

Being passionate about something

So let's take a step back. Before I even sat down by the window at my old house, thinking about what course I could do, I had been actively engaged in emerging technology for a few months. A serverless deployment platform called Laravel Vapor had piqued my interest, and I'd been spending hundreds of hours immersed in learning everything I could about it.

We used Vapor to host our privacy-first analytics software, Fathom, so I was running Vapor at scale, running into various challenges and learning from extensive use of the platform. This experience helped Fathom become the industry leader, handling unbelievable scale without servers, and that was pretty much it. The knowledge I had obtained was irrelevant to me. I was doing what had to be done, and I wasn't intentionally learning skills.

Coming up with the idea

A few months after we launched Fathom onto Laravel Vapor, I was sitting down in our old house, by the window, with my laptop. The house was empty, and I was thinking about the fact that we'd just had to stretch quite a bit to buy our first house (which we purchased two years earlier than we had planned). I started thinking about ideas for making some extra money to add some padding to our finances.

After thinking for a while, it dawned on me that I had a lot of comprehensive knowledge AND experience was Laravel Vapor. My competitive edge over others was that, while they might have knowledge of Vapor, nobody was doing the scale we were doing.

I started writing out a plan for how I might execute, and then I started doubting myself.

Would people buy the course? What if I wasted my time? How do you know that this course will succeed?

I've danced with these kinds of doubts before, but in different areas of life, so I decided to address these questions differently. Instead of thinking about how many people would buy the course, I came up with a list of things that I could control, and those became my goals. This was perfect for me as it meant that it was impossible to fail. My worst-case scenario was learning a lot from this experience and then coming back stronger next round.

So I committed to the idea, and the work began.

Planning the content

Before you begin building the course, you need a solid plan in place. You can change it down the road, but you want to have a solid foundation before you spend hours recording videos, else you could find that things don't make sense or are just plain confusing.

I wrote down the problems I had and the challenges I ran into, and then I referenced the documentation to get ideas on what I could cover. I learned in the past that sometimes you need to deliver material differently, with some sprinkles, and that's enough to add value. For example, some of my videos come from the Laravel Vapor docs, but then I add my own experience to the mix, which adds value.

I went about building the course by writing a script for each video in a document. I was working full-time doing consulting, so I planned to use my spare time (on my laptop or phone) to write the content and then take 1-2 weeks off of work to do all of the recordings. After all, the recording isn't the hard part; knowing what to record is… Right? ;)

When putting together this course, my focus was on delivering the absolute maximum value that I could. This meant compacting my hundreds of hours of learning into just a few hours of video material. You can see how I structured the course over at the Serverless Laravel website.

Growing my audience

Now I started growing my audience unintentionally before announcing that I'd be doing this course. I spent time tweeting about Laravel, performance tips, Vapor tips and just generally working in public. My focus was on sharing everything I went through, as I knew it would help other folks out there. In addition to that, I received questions, which helped me learn about where people were struggling, their use cases and what they wanted to know.

This post isn't about how to build an audience, and I'd recommend Daniel Vassallo's video course Everyone Can Build a Twitter Audience if you're not sure how. But ultimately, you can't just tweet to crickets; you need to network and engage with people. Provide value, build relationships and be genuine. People can tell if you're building relationships for your personal gain (we see people like this on Twitter all the time), so your heart needs to be in your communication. For those of you who haven't got a heart, I have nothing for you.

As I built my course, I would tweet snippets, previews and just general advice. The intent behind this was to establish myself as someone who would provide you with value and help you solve your issues.

Telling people that I'm doing a course

I announced my course to probably ~1,000-1,500 people who followed me on Twitter (I don't remember the exact number as it was so long ago). People had started following me because I had been working in public, tweeting my lessons and providing value. And I'd been tweeting about Vapor long before I had plans for the course.

When announcing the course, I put together a landing page with the fundamental problems I was trying to address, which were:

  1. 2 AM wake up calls with servers going offline
  2. Scaling issues (how many servers do I need)
  3. Application downtime (server issues)

And a few others. I was connecting with the problems pretty easily because these were problems I faced. I knew the audience very well because I was that audience.

I collected email addresses from people and set up an automation sequence. The goal of the sequence was to get to know people, find their pain points and help them. I spent a lot of time helping people over email with zero expectations. Believe it or not, I wasn't seeing people asking for help as "business opportunities" I just knew how hard it was to get things right, and I wanted to save them the stress I had when scaling Fathom.

Publicly declaring the launch date

Before I was ready to launch, I tweeted out the course to people for launch.

An image from Notion

If you take a look a the tweet, you can see the following:

  1. Validation (Stef & Matt say that they're looking forward to buying)
  2. Questions & more content ideas (Lee, Andrew, Chris, Austen, Philip and Nerijus)
  3. Pricing (Sam made me aware that students might need student discounts)

And this is the beauty of working in public. The validation gave me a big boost, the questions helped me shape my course, and the pricing questions helped me with the business side.

As you can see from the tweet, I had moderate interaction but nothing unbelievable.

The grind

The course took a few months to put together because, as I said previously, I was doing this on the side of full-time work. But as we approached February 2020, I was ready to record. I took ten days off work, set my desk up in our bedroom closet and recorded/edited non-stop.

Towards the end of the recording, I realized I wouldn't be able to get all of the videos recorded, so I decided to launch with a few "coming soon" videos. I worried about it at the time, but I figured that launching on time with most videos was better than delaying things.

So I finished up on 19th February, and I was ready for the March launch.


I launched the website on 1st March 2020 and went to bed. Well, I tried to go to bed, but I couldn't sleep because I was so excited. As I laid in bed trying to sleep, I received a handful of emails that people had already purchased the course (I hadn't even launched it). I remember reading about this in Adam Wathan's excellent article (which I've read many times), but I didn't expect it to happen to me.

At 7:29 AM, I sent an email to my list of around 600 people and tweeted it out to my followers.

An image from Notion

I went downstairs to sit with my wife, completely burned out, and started watching my email for payment notifications.

Cha-ching, cha-ching, cha-ching.

After seeing Adam's GIF of all the emails he received when he launched Refactoring to Collections, I was hoping it would happen to me, but I had no idea if it would.

On that first day, I made $17,600, which was mind-blowing. It felt surreal, and all of the work was worth it. Throughout that month, I made a total of $56,327, which was just ridiculous money. All the hard work was worth it.

The revenue doesn't stop

I'm writing this in September 2021, and the money hasn't stopped. I've added more videos, done various promotions (Black Friday, etc.), and people are still learning an absolute ton from the course. We also have a Serverless Laravel Slack group, full of the world's most brilliant serverless users, where we regularly discuss cutting-edge ideas.

I'm not big into sharing revenue numbers. Still, I will make an exception this time since developers seem to connect with hearing about the financials, plus I benefited from Adam's transparency.

Here are the gross monthly figures since launch:

  • March 2020: $56,327
  • April 2020: $10,680
  • May 2020: $6,407
  • June 2020: $6,705
  • July 2020: $4,917
  • August 2020: $6,969
  • September 2020: $7,197
  • October 2020: $3,136
  • November 2020: $10,086
  • December 2020: $5,367
  • January 2021: $3,985
  • February 2021: $3,384
  • March 2021: $11,973 (I did a one year anniversary sale)
  • April 2021: $1,891
  • May 2021: $3,784
  • June 2021: $1,145
  • July 2021: $3,281
  • August 2021: $2,086
  • September 2021: $1,192

And something important to remember is that I went full-time on Fathom back in April 2020, so the course has still been selling despite us growing Fathom into the world's leading privacy-first analytics platform.

The end

So the whole thing boils down to solving a problem, growing awareness (audience), creating material and selling. It's not much beyond that. So if you want to do what I've done, which I believe anyone with a solid idea can do, then go ahead and do it.

So I wish you the best of luck with your course. And if you want to follow my work, you should sign up to Fathom or follow me on Twitter. (always happy to try and answer questions).