Everything you wanted to know about creating a $100k online course

UPDATE: launching this course started out a side project, but turned into a source of full-time income. Since writing this I’ve added a second part and launched another course.

I’m sick of hearing from friends that their online course costs more money to run than the revenue it’s generating. Or that they have to shut their course down because the ongoing fees are much higher than the price they charged members in the first place. Or that they want to create an online course, but have no idea where to start, so they stay stuck in the “oh crap, I’m really overwhelmed” stage.

There are so many options for membership sites and online course software that seem great, and their pricing models seem decent, but when you run the numbers, it does not work out in your favour.

PSST: Stop guessing when I publish new posts and get articles like this in your inbox every Sunday.

I don’t have a magic bullet for building online courses, but because I’m cheap (very cheap), I’ve figured out a way to run a course that makes sense financially, regardless of whether 20 people buy or 2,000.

Below is how I run my own course, the Creative Class, which launched on October 15, 2014. There are at least eight billion ways to create an online course, and lots of great options out there, this is just how mine works.

The setup

My course runs on four main pieces of software that all tie together automatically.

  1. WordPress — what the site uses.
  2. Memberful — what creates user accounts and hides content from people who aren’t signed in.
  3. Stripe — processes payment and deposits money into my bank account.
  4. MailChimp — the mailing list software I use to communicate with members.
  5. WPComplete — a plugin I built with Zack Gilbert that lets student mark lessons as completed.


Because I build WordPress sites for a living, it was a no-brainer to use it for the website end of my course. Yes, I created a custom theme for my course, but you can use any WordPress theme (free, paid, custom — it doesn’t matter). Make sure the theme’s flow makes sense for how you want people to get interested in and buy the course. The flow also has to work for moving through the course from start to finish. Memberful even has a widget so you can add a login/logout button anywhere widgets can go — all without touching code.

Things to consider when picking a WordPress theme for your course:

Other than that, the other software will work with any theme.


There are currently 334 membership plugins for WordPress (I’m a nerd, so I just checked). Some don’t do what they’re supposed to, leaving your course vulnerable or just not functioning properly. Some are so insanely complicated that I can’t figure them out (and I’ve been working with WordPress plugins from the beta version stage).

Memberful links WordPress, MailChimp, and Stripe. How it works: if someone clicks the buy button, they’re shown a little modal window from Stripe that collects the money. Once the payment has gone through (almost instant), a WordPress account is created for that person and they’re added to a MailChimp mailing list. Then they receive an email saying the payment was successful and that they can now log in.

So, all you need to do to use Memberful is create a “plan” on their dashboard, install the plugin, and connect it to your Stripe and MailChimp account. Easy, peasy. From there, you simply edit the pages in WordPress that should only be available to members.

Just be careful since Memberful’s plan default to recurring billing and their system doesn’t allow you turn it off easily — meaning you could accidentally charge people double (2 months billed at the price).


This step, while technically optional, is mandatory in my books. Memberful doesn’t have to connect to a mailing list, but I can’t think of a single reason you wouldn’t want it to. Here are the benefits to connecting it to a mailing list:

  1. Sending branding emails to your members.
  2. Automating your onboarding process to new members.
  3. Checking in with members (3 days after they sign up, 13 days, 45 days).
  4. Letting members know about upcoming events, special offers to them, up-sells, added value or material.

For my course, I set up an easy automation sequence in MailChimp that does this:

  1. When someone pays, they get a “welcome” email, branded to match the course website. It welcomes them, gives them access, a bit of an introduction to the course and how to use it, as well as a link to get right into the first lesson.
  2. Three days later, they receive an automated email checking in — to see how they’re progressing, if they have questions, and to ask if they want to be listed on the community page.
  3. 45 days later, they get an email to see how they enjoyed the content, what they learned, and what they’ve applied to their own business. If they’ve had wins from applying the material, I ask them to let me know (good for testimonials and case studies).

These three emails go out automatically based on the time someone signs up for the course. I also send out regular email blasts to members whenever I do a monthly Q&A call, too. And, if you use the same mailing list for other things, Memberful automatically adds paid members to a different segment, making it easy to only send emails to members (or to send emails to everyone who isn’t a paid member).

The other big reason I use MailChimp for my course is because one of my main marketing tools for the paid course is a free email course. Outside of my main mailing list, the free course drives more revenue than any other source. More on the free course later — in the “Promotion” section.


Though not software, FlyWheel is what I use for hosting. Even though I know how to set up my own server from scratch and I run several other servers, I just wanted a hands-off, reliable hosting company. People pay good money for this course, so I want it to be always fast and always online

The true test came when my course was featured on a high-traffic website and 300+ concurrent people loading the site at the same time… and the site was still fast as hell and didn’t crash. That’s $15/month very well spent.

How payment works

Memberful takes care of the money when someone buys the course. Memberful has a free plan (that charges 10% + 30c per transaction) and a few pro plans. I use the $25/month and then 3.9% + 30c per transaction. Their plans include the Stripe fee (which is 2.9% + 30c per transaction). Unlike some membership sites (that charge per user, per month), my monthly fees past user acquisition are fairly low since I only pay for a user once at purchase.

Here’s how Memberful works for me:

  1. I create a subscription plan for the course in Memberful. No programming required.
  2. There’s a BUY button on the sales page for my course, so if you click it, a little window pops up to collect payment details.
  3. Payment is processed through Stripe (which charges 2.9% + 30c) and it’s deposited into your Stripe account automagically.
  4. Memberful pushes that person’s email to MailChimp, so when a payment is completed, they start into the automation sequence.
  5. Memberful creates a username/password in WordPress for the buyer and gives it to them via email.
  6. The buyer can now log in on the website with their unique username/password and take the course.

On my end, as the creator, I simply get an email saying that there’s been a new member who has signed up. I can then log in (if I want to) to see which coupon they used (because I use coupons to track how someone found out about my course).


Both the sales page and the backend for members was 100% custom designed by me. I created a custom WordPress theme to match the design I came up with. As I mentioned above though, any WordPress theme could work.

The only thing I didn’t design was the icons for each lesson, which were created by the super talented Meg Robichaud.

I kept things simple on purpose — two typefaces (Brandon Grotesque and Freight Text) and two colours (pink and blue). The logo is really just the two C’s of Creative Class, with one flipped. I honestly didn’t spend much time on the logo or design (compared to my client work), because I wanted to focus on the course material. It’s simple enough to function and stylish enough to trust.

How the course moves through the lessons

I spent a lot of time thinking through how the course would function, from new member onboarding, to checking in with members, to running monthly calls. Here’s the basic flow I set up and what the member sees.

  1. The sales page — if someone likes what they see, they click the buy button.
  2. Buying the course opens a small modal, powered by Memberful, that processes payment through Stripe. They also add an email address and password — their email becomes their username.
  3. Once the transaction completes, several things happen. First, the user is taken to the dashboard, logging them in automatically. The second thing is that they receive both a receipt email from Memberful and a branded welcome package automated email from me.
  4. Next, almost all users click to the intro section, which appears at the top left of the dashboard.
  5. Email automation is triggered (to send another email in three days, then again at 45 days).
  6. Users can go through the course at their own pace, as in, the minute they buy, they have access to 100% of the course content. I chose not to do a drip campaign for lessons so people could pace themselves. From feedback, everyone appreciates that. I’ve found that most members want to run through all the content quickly, then circle back on each lesson to work through it with their own business.
  7. Each lesson is broken into the following components:

Outside of the lessons, members can download all materials in a single file or just the written lessons in ebook form. I wanted to give members as many options as possible for learning because I know everyone learns best using different methods.

I also host monthly Q&A calls that are well-attended and well-received (which shows to me that they’re valuable to my members). I tend to spend an hour or more answering members’ questions as best I can. It gives me a chance to get to know who’s taking the course and it gives members a chance for a personal answer to their questions.

These calls also help inform me of what’s missing, what needs to be redone (if it’s not making sense) and what the members are focused on. The software I use to host these calls is crowdcast.io, which is free and connects to Google Hangouts (also free). I just mark each event as unlisted, so only members can watch.

Fees + Costs

My course costs $300 but there are discounts codes everywhere to get it for $200 (NOTE: there are no longer any discount codes for the course).

Per month, past initial user acquisition, which is $8.10 in fees (3.9% + 30c from Memberful, including the 2.9% + 30c for Stripe) off an average price of $200, my costs are as follows:

Comparatively, if I used a hosted membership site like Pathwright, I’d be paying $26,556+/year based on their pricing model ($299 for 150 members, plus $3/member/month — not including a 4% transaction fee per user at purchase). They do a lot for you, but their price matches that level and amount of service. Other more cost-effective options for courses include my friend Jason’s Teachery (currently in closed beta) and my friend Justin’s Gumroad to WordPress plugin ProductPressRainmaker also offers membership and payment and costs $95/month (but includes hosting and pretty amazing WP themes, but not Stripe or newsletter costs).

Costs per average user (at $200) acquisition for my course:

If each user pays $200, on average, my costs are $8.10. That means I make $191.90 per user at the onset, then less as months pass and monthly fees rack up for hosting and the newsletter ($120/month to maintain the course). But, if I sell at least two memberships a month, my own costs are covered by double and everything else is revenue or future investment back into the course. Two memberships sold a month is doable and a very low goal to have to hit.

To create the course initially would have cost a lot more if I had to pay for custom design, strategy and development, but as it stands it cost the following to set up:

I spent $7,500 to make my course as perfect a possible, even without having to pay for design or development. I will note that I only spent money on the video, icons, and custom development after sales from the course itself could cover those items. I’m a big fan of starting small and iterating once you get a sense of the needs of your paying members. I even started with seven lessons instead of nine, and added two more a few months later, after I collected feedback from the members.

In theory, you could skip paying for all those items (i.e. free WordPress theme, no custom drawings or editing, record your own video, etc.). You do have to keep in mind that the more professional and trustworthy your course looks and feels, the more likely someone will be to buy it.

Time + commitments

To make an online course, the time required is separated into four buckets: making the course, adding the content, maintaining it, and marketing it.

Making it, for me, took quite a while because I not only wrote and recorded the content, I also designed and programmed it. I didn’t strictly track hours to the minute, but I paid attention to approximately how long each task took:

Which brings me to 230 hours to develop the course and about 18 hours per month to maintain and promote it.


Yeah, yeah, this is what you were most interested in, so I should have put this first…

The course has grossed $129,053 since launch in the fall (to the date I published this — May 16, 2015) with 972 members total. Note that I did not make $100k+ that I get to keep, the course just brought in that much money.

Take into account that $16,000 goes to a partnership I made with a deal website, $7,500 goes to my costs to create, $6,400 goes to payment processing fees, and $720 goes to ongoing fees for six months. That’s almost one third right out of the gates, and doesn’t include taxes (which is around 18% here in Canada for corporations or around $12,000). And, based on time spent working on the course, it has made approximately $240/hr (which is less than I charge for consulting but more than the average price is per hour for projects I work on for clients).


If you’ve read anything I’ve written previous to this, you know how much of a broken record I am when it comes to talking about how a mailing list is the best tool in your arsenal when promoting a digital product.

True to form, my own list (The Sunday Dispatches) is the best place I found to drive membership sales in terms of revenue generated. I wrote one “hard pitch” email about the course, and the rest of the time I wrote either related articles to the course content or simply mentioned the list discount in the footer. Prior to the course, I mentioned it was being built for months before. I even dropped some hints, previews and excerpts from it — so when the hard pitch email showed up in people’s inbox, they already knew about the course.

The second biggest driver of revenue is a free email course I developed that relates to the paid course content called The freelancer’s guide to good jobs & great pay. It’s a short, seven-lesson automated email course that pitches the paid course at the end for a big discount.

This free course was featured on HackerNews (resulting in ~6,000 signups) and ProductHunt (resulting in ~1,400 signups). At first I was like, “OH HECK YES!” Then, when those people received the pitch on the eighth day and sales barely trickled in (four people purchased), I was utterly deflated. I felt like the email course content was awful. But then I realized a) most of those people aren’t freelancers, b) they just wanted to check out a “free something,” c) they wanted to see how someone else was running an email course. So it was great for exposure, but didn’t convert.

Instead of scrapping the free course and it’s content, I took the exact content and tried something different. I started promoting the free course on the paid course page. So as not to compete with the paid offering, it only shows in a modal box when someone gestures to leave the page. In tracking signup source vs. conversion to the paid course, this modal converts at 4–5%. Meaning, for every 30–40 people that sign up for the free course, 2–3 of them buy the paid course at the end. This is great and just goes to show that sometimes it’s not the content that’s the problem, sometimes it’s the audience the content is aimed at.

The third best generator of revenue for the course is a partnership with a deal website. Their audience is huge (almost a million email subscribers), so it was a no-brainer to partner with them to sell this course, months after it had launched. They approached me to partner, and they knew about my course in the first place because of the constant outreach and networking I do with people who have similar audiences.


The final massive piece to my course, and what I attribute a lot of the success the course has to, is the research I did prior to writing and prior to launching it. It wasn’t enough to have an idea and get to work on it, I relied heavily on talking to the audience it applied to.

Pre-creation research

Although I have 17+ years being a freelancer, I wanted to know what made other freelancers tick. What they struggled with, what they wished they could do better, what their perfect career would look like if they had it. I spent a few weeks talking to freelancers on the phone and surveying them via email. I kept my sample group to only freelancers who had spent money on online courses for personal development. I asked them as well, what online courses they had taken and what they found worked the best and the worst with each one.

This research helped inform me, not only in terms of the topics I should cover, but also in how to structure the lessons and format.

Pre-launch research

I had four rounds of beta testers before I felt the course was ready for public consumption. And even then, I launched it to my mailing list a week before I launched it publicly and started outreach and guest posting.

The first group of beta testers (five people) I gave access to the course for free. I had them evaluate it based on some specific criteria I had:

The second group of beta testers (another five people) I gave access to the course for $5, so I could test the payment processing. I asked them the same questions as above, plus one about how the payment process flowed for them.

The third group of beta testers (10 people) I gave access to the course for $50. I had made quite a few changes to how the course worked and wording in the onboarding process, so I wanted to ask them the same questions as the first group to see what changed. Thankfully, all the hangups or wrong things that came up from the first group were fixed.

The fourth group of beta testers (another 10 people) I gave access to the course at $200 (basically, full price). What I wanted to know from them was the perceived value, because people put value on things based on how much they spend on it (so the value of it at $5 is different than at $200):

With the final group of testers, I was not only looking for their feedback, but I was looking at how they framed and worded their feedback. I used what they said to craft the sales page content, using words they used, touching on the most important things they learned from the course and really what pains they had that the course alleviated. I use a similar technique for all my sales pages, because I feel like if I use the language the intended audience uses, they’ll relate to it more. And, if I touch on what’s important to them (not just what I guess is important to them), it converts much better.

The other thing I collected from the last group of testers was testimonials. Any of them that had glowing comments about the course, I asked if I had their permission to share those thoughts as testimonials. That way I could launch the course with real testimonials from real students.


None of what I’ve outlined above is staggeringly new information for anyone who has made or thought of making a course. I wrote this to break down all the small steps you can take when building one, because I know how overwhelming it can be at the start. I also wanted to show that it’s possible to have a course that pays well, gives value and doesn’t cost a ton to make and maintain.

To some, having an affiliate program is necessary. I’ve never bothered with those, simply because if someone’s going to promote my work — they do it because they want to, not because they’re getting paid to. That’s how I promote from others. I don’t have a problem with affiliate programs and know lots of people that make a huge chunk of income from them, it’s just a personal choice on my end not to use them for the products I sell.

Key takeaways:

My final note is to break your course down into the smallest amount of information as possible to start.

First, this is good for your audience because people don’t have much time. Second, this is good for you so you can get your course out the door faster. Initially my course was going to be 30 lessons… which would have taken me a year to write. Instead I pared it down to the nine topics I felt every freelancer needed in order to turn a shitty freelancing career around into something better. I haven’t had a single person complain or ask for a refund because it’s nine lessons instead of 10 (or instead of 30). I’ve actually only had to process three refunds in total.

Even since launch, I’ve learned so much about course-making. This was the first course I built for myself, so I started from scratch. I hope some of the information above helps you avoid the mistakes I made, if you’re thinking of building an online course as well.