20x ROAS Coding Course Launch: Complete strategy revealed

Prefer video? Watch here:


I recently had a chance to help an incredible web development education company with the launch of their courses. Working together, we were able to convince people to purchase a course (or two) with which they can learn lucrative skills and land a high-paying job.

We thoroughly discussed the positioning of the courses, formulated the entire paid advertising strategy, managed the Facebook ads, worked on creatives, and wrote the ad copy.

The results were incredible!

20x ROAS course launch results

Our ROAS was 20x, or 2000%, if you’re one of those people that uses ROAS as a percentage so it looks more impressive 😉.

Now, you might notice our ROAS is actually 30.90, but that’s due to Facebook falsely attributing a purchase for a higher ticket, bootcamp style mentorship, which was €3800.


Without it, here are the actual numbers:

Revenue: €7409.34

Ad spend: €362.74 

ROAS: 20.42 or 2042% 

Profit (Revenue – costs (only cost is ad spend) : €6991.79 

ROI: 19.42 or 1942%


Also, ignore the “Purchases conversion value” column. The purchase value of offline purchases was for some reason astronomically higher than the actual, “Website purchases conversion value”.


Here’s exactly how we did this.

Account structure

Our campaign structure was as follows:

Account structure

A campaign which contained all ads. 
We then used the post IDs of the ads and launched them in the actual active campaigns so all engagement accumulates into a single ad (as opposed to just duplicating ads). If you want to know how to do that, click here.


We then divided the audience into 4 groups:

Cold – people who haven’t engaged with the brand

Warm – people who engaged, but haven’t clicked through to the website (Instagram followers, email list)

Hot – people who visited the website, but haven’t purchased

Existing – people who purchased

Our focus was on Warm and Hot, since the client had a large email list and social following.

Warm campaign

We segmented the ad sets by audience and course.

So we’d have two ad sets for a course: one whose audience was the email list, and the other whose audience were people who engaged with the client’s Instagram account in the last 30 days.


Our ads centered around showing the features and the benefits of the courses, with our best performing ad centering not on the content of a course, but other benefits (30-day money-back guarantee, x hours of course material, certificate of completion, etc.)

Hot campaign

We had three ad sets:


  1. people who visited the sales page for the first course, but didn’t purchase it – in the last 21 days
  2. people who visited the sales page for the second course, but didn’t purchase it – in the last 21 days
  3. people who Initiated checkout of a course, but didn’t purchase it – in the last 21 days
    • in your case, you might want to use ATC (Add To Cart). Due to the way the payment was set up, we used IC (Initiate checkout)

How to create audiences

Step 1. From your business manager, go to Audiences

Step 2. Create a custom audience

Step 3. Choose an event (eg. Initiate Checkout, People who visited specific pages) and the time range when the event was recorded.




Website visitors

Here we had several different types of ads:

  • course features (the same best-performing ad in the Warm campaign performed incredible here, since some people just needed an extra touch point and a reminder of the features they might have missed)
  • testimonials – to build trust and convince them that this is the right decision


Initiate checkout

We focused on breaking down any complaints they might have. This included:


  • money
  • time
  • confidence/impostor syndrome


The client wanted to have a launch discount for the first seven days of the course launch.

We made sure to point that urgency out in the creatives and copy we used (in the primary text and the description), which was certainly one of the reasons why our ROAS was higher than Wiz Khalifa.

Tracking post iOS 14

As you might already know, Apple rolled out an update some time ago which allowed users to choose if they can be tracked with tracking codes such as the Facebook pixel. This resulted in about 30% less purchases being attributed to Facebook ads.

To combat this, we set up offline conversions. Offline conversions are essentially a way to track conversions (eg. purchases) with offline data, such as information from a 3rd party app (eg. Shopify, Teachable, etc.).

We used Zapier, which allows for automatic sending of data through various apps. In our case, we connected Teachable (where the courses were purchased and hosted) with Facebook offline conversions.

Any time there was a purchase, a “zap” would be sent with information about the purchase.


Although the value of the purchases was wrong, and the amount of purchases was slightly off, this allowed us to gain great insights when breaking down data. Website purchase data that is tracked normally isn’t shown when breaking down data by, for example, placement or age.

How to breakdown data

In your ads manager, click Breakdown, and choose by what you want to break down your data.

Here’s what we were able to learn:

Gender – almost all purchases were from men.

Age – we learned most of our purchases came from the 25-34 age range.

Country – purchases came from a plethora of different countries, so it was a great idea to implement PPP (Purchasing Power Parity).

We learned that most of our purchases came from mobile, and most of those were from Android devices.

But, most importantly, we were able to see which purchases came from which placements.

Feeds and stories resulted in all but 1 purchase (Messenger inbox)

We learned that 1:1 and 9:16 aspect ratios should be our focus. We could discard everything except feeds and stories and save time by not creating 1.91:1 aspect ratio creatives (for the right column).

We would also not waste money on ineffective placements.

We also used Zapier to send the information about a course purchaser into a Facebook audience, so we could exclude the purchasers from being shown the ads about that one course they purchased, but still show them ads for the other course.



Hot – 34 purchases

Warm – 30 purchases

This is to be expected, the 80/20 rule is normally observed when it comes to retargeting. In other words, although we spent little in retargeting, it resulted in the most purchases.

This is why retargeting is crucial when advertising, and the campaign that is usually set up first when starting to advertise.


IG Engagers 30d – 5 purchases, 6.49 ROAS

Email list – 25 purchases, 17.43 ROAS

We learned that the Instagram engagers were a much weaker audience for us, so we should:

  • narrow down to those who engaged on IG in the last 14 days (if our main focus was profitability, not scale)
  • attempt to push the followers into our email sequence so they become more familiar with the brand



“Thematic” ads performed the best. In this client’s case, this included text written out in code.

One idea the client had was to prepare countdown creatives that will go live every hour on the last day. This can be set up using rules, and is certainly something giving a shot, since it creates a feeling of urgency. According to one source, about 50% – 60% of all purchases during a week-long launch/sale come in during the last 4 hours of the launch/sale (3% of time → 50% – 60% of results). Pareto is laughing in his coffin.



Our biggest limitation was the Daily Spending Limit. Since the account was fairly new, our budget was limited to 50$ per day. I tried contacting customer support twice, but to no avail, even though we made all our payments on time.

The DSL might not be an issue for you, depending on the geographical location of the account. First world countries have higher DSLs, while third world countries have much lower DSLs.


Campaign objectives

We also tried a few campaigns on the first day to inform the warm audience that the courses are live.

Traffic (TR) , Video Views (VV), and Reach campaigns were probably not necessary, since we saw similar CPMs and CPCs in Website Conversion (WC) campaigns. Unlike the previous campaigns, WC resulted in purchases.

Want similar results for your education company?