Everything you wanted to know about creating a $100k online 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.
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.
My course runs on four main pieces of software that all tie together automatically. I get even further into how to set a WordPress course up here.
- WordPress — what the site uses.
- RestrictContentPro – creates accounts, sends payments to Stripe and shows the right content to the right people based on their account.
- Stripe — processes payment and deposits money into my bank account.
- MailChimp — the mailing list software I use to communicate with members.
- 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. RCP 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:
- Can you create a sales page that highlights what your course is about, show great visuals (like photos, videos, drawings), displays testimonials and nice, obvious purchase buttons?
- Can the lessons for your course showcase the type of content you use in your course? Think: video embeds, PDF or bonus downloads, discussions, and links to the next or previous lessons.
- Does the theme feel like your content? This isn’t some “woo-woo” thing, but does the tone of your course (the way you speak in the audio/video or in the writing) match the vibe of the design? Say your course is quirky, humour-filled, and kinda weird — don’t pick a WordPress theme that looks like a bank or insurance website.
- Is there a widget area to add RCP options and does the placement of the widgets make sense for those options?
Other than that, the other software will work with any theme.
Restrict Content Pro
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).
Restrict Content Pro 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 RCP is create a “subscription”, 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.
This step, while technically optional, is mandatory in my books. And, you can learn how to setup MailChimp here. RCP 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:
- Sending branding emails to your members.
- Automating your onboarding process to new members.
- Checking in with members (3 days after they sign up, 13 days, 45 days).
- 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:
- 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.
- 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.
- 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, RCP 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
RCP takes care of the money when someone buys the course. RCP connects to Stripe (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 for Stripe fees.
Here’s how RCP works for me:
- I create a subscription plan for the course in RCP. No programming required.
- There’s a BUY button on the sales page for my course, so if you click it.
- Payment is processed through Stripe (which charges 2.9% + 30c) and it’s deposited into your Stripe account automagically.
- RCP pushes that person’s email to MailChimp, so when a payment is completed, they start into the automation sequence.
- RCP creates a username/password in WordPress for the buyer and gives it to them via email.
- 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.
- The sales page — if someone likes what they see, they click the buy button.
- They add an email address and password — their email becomes their username.
- 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 RCP and a branded welcome package automated email from me.
- Next, almost all users click to the intro section, which appears at the top left of the dashboard.
- Email automation is triggered (to send another email in three days, then again at 45 days).
- 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.
- Each lesson is broken into the following components:
- Video presentation — me talking over slides of content, streaming via Vimeo.
- Downloadable video and downloadable audio-only for the presentation.
- Downloadable PDFs of the slides.
- Bonus downloads — there are some PDF workbooks, some XLS files, extra videos and editable Google Docs.
- There’s a written lesson (because I’m a writer) that covers the presentation topics in written form (so it’s slightly different).
- There’s a way to mark each lesson as complete (so members can keep track of what they’ve finished)
- There are comments sections so that members can interact with me and other members.
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. 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 (including the 2.9% + 30c for Stripe) off an average price of $200, my costs are as follows:
- $30/month FlyWheel hosting
- $49/year RCP
- $60/month MailChimp
- $5/month Vimeo hosting
- $120/month or $1,440/year total
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 and my friend Justin’s Gumroad to WordPress plugin ProductPress. Rainmaker 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:
- $2 Stripe
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:
- Free — design of the custom sales page, membership backend, MailChimp templates, KeyNote presentation slides, PDF downloads. If I was charging a client for this, it’d be ~$10k USD for the amount of work involved. It is doable without design knowledge if you pick a pre-build WordPress theme, install the RCP plugin and use existing templates for Pages (to create the PDFs) and KeyNote (to create the slides).
- Free — WordPress theme development. If I were charging a client this, it’d be around $8k USD for the custom sales page (responsive), custom backend (responsive), community listing section and integration of all the services.
- $2,000 — custom functionality. I had a developer write plugins for RCP that let users mark lessons as complete (as well as show me, the admin, which users have completed which lessons). I also had the same developer write a plugin that lets people register for the class for free (because I sell the class through some deal websites that process payment on their end).
- $1,000 — icon illustration (each lesson has it’s own custom icon).
- $1,000 — sales video (this video increased sales immediately).
- $2,500 — editing/copyediting of the course.
- $1,000 — editing/copyediting of the free email course
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:
- Brainstorming + writing + editing (I edit before I give content to my editor) nine lessons, 50 hours.
- Designing the brand, website, backend, newsletters, PDFs and presentation slides, 75 hours.
- Adding the course to WordPress and MailChimp, 5 hours.
- Programming the integrations and custom WordPress theme, 50 hours.
- Filming the video/audio presentations (includes editing and uploading), 20 hours.
- Writing, designing and setting up the free email course, 30 hours.
- Content marketing, 2–3 hours per week (writing new related articles + tweets + doing interviews and podcasts).
- Hosting monthly Q&A calls for members, two hours (one hour prep + editing, one hour hosting) per month.
- Answering emails, comments and social media conversations about the course, two hours per week.
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.
- 30% of sales came from my existing newsletter. Probably more, because I don’t track if a subscriber bought it, then told their audience about it.
- 10% of sales have come from the free email course (this grows each day as I implemented the email course four months after I launched the course).
- 35% of members came from a partnership with a deal website, but because memberships cost significantly less than normal and I had to split my cut with them, the number of memberships sold is higher but the revenue that generated is lower than my mailing list and even lower than the revenue generated by the free email course.
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.
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.
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:
- Does onboarding make sense? As in, once you get access, do you know exactly what to do next and then how to start consuming the lessons?
- What format did you immediately start to use for the lessons (video, audio or written)? Did that change as you went through the lessons?
- How long did it take?
- What are you going to apply to your own freelance business?
- Describe the course back to me in 1–3 sentences.
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):
- Was the course worth the price?
- What did you learn from it?
- What are you applying to your own business from the lessons?
- What is going to change immediately about your own business?
- Would you recommend this course to other freelancers?
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.
- Keep your setup costs low — you can add on later as you make money.
- Keep the overall content as small as possible so you can launch sooner and iterate based on paid customer feedback.
- Make sure your ongoing costs are easily covered by constant new user acquisition.
- Pay attention to the flow of information — from onboarding a new member to getting them to the end of the lessons.
- Partners might bring you less money per member, but can expose your course to different and bigger audiences.
- If the thought of setting up WordPress, plugins, mailing lists, etc. is scary, use a hosted option like Teachery instead. Do whatever it takes to get your course launched in a way that doesn’t cost you too much to maintain (they even have a calculator to help you figure this out).
- Don’t guess what your audience wants for course content, ask them with some research. Test, test, test again.
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.