The Automated System behind the Campaign Budget Optimization

10 min read

Campaign budget optimization, or CBO, is the new feature from Facebook where we have to set the budget at the campaign level. This system will allocate the budget to the ad sets inside automatically based on the stats it has.

I’ve found that campaign budget optimization is very useful especially when I enter a new market and I have no idea what kind of audience will have a chance to purchase my product.

What I will do when I enter the new market is to create multiple ad sets with different interests that are related to my product. Then I let Facebook decide which ad sets should receive higher ad spending.

CBO is also very useful when I scale up my campaign. I simply have to create a new campaign with the higher daily budget and add the good ad sets with the target audience from the test campaign to it.

I’ve written about this topic in greater detail in my previous post. You can check it here: Campaign Budget Optimization: Here’s what I find out after spending over $77k testing my CBO

Anyway, as you may already know, Facebook keeps updating their algorithm all the time without notifying their users. We’ll see that our campaign is working great one day, but it might not perform nearly as well the next. The third or fourth day might be good again, but it’s flopped again on the fifth day.

I’ve been working with Facebook Ads for over four years and it has never been stable. Many people I know also see the same problems. My mentor even told me a few days ago that he couldn’t find a winning strategy that lasts.

In the past few days, one of my campaigns that have been working pretty well experienced some problems. I set the daily budget at $1,000 a day, but in the first 30 minutes of that day, it spent over $300 without a sale. So I had to pause it.

It’s never stable. The strategy that works today might not work again tomorrow.

That’s the nature of Facebook ads.

Move fast and break (user’s) things, huh? LOL

Anyway, we can’t deny, however, that Facebook is one of the top traffic sources. We need to learn how to live with this volatility.

So in this article, I’m going to show you the automated system behind my CBO campaigns.

This is the automated system that helps me make my Facebook campaigns work better, even in bad situations.

I divide what we can control into three parts: the campaign level, the ad set level, and the ad level.

The Campaign Level

At the campaign level, we can control costs using the bid strategy.

There are four bid strategies for the campaign budget optimization; the Lowest Cost, Cost Cap, Bid Cap, and Target Cost.

I normally use only two bid strategies, which are Lowest Cost and Cost Cap.

The Lowest Cost will be used when I’m confident that the ad sets and ads inside the campaign are working great. It’s usually when I start scaling the campaign. I’ll let Facebook spend all of my daily budget.

In contrast, I will use the Cost Cap when I’m not sure about the performance of my campaign.

For example, after I have scaled up my campaign for a while the performance might drop, so I need to use the Cost Cap strategy to control the cost.

If there is no sale or the cost for a sale is too high, Facebook will slowly spend the budget instead.

The Cost Cap is good when I see some strange situations from Facebook as well.

For example, I recently found that Facebook spends 30% of the daily budget in the first 30 minutes of the day. So the next day, I paused the old campaign and duplicated it to the new campaign and use the Cost Cap to control the cost.

The Ad Set Level

At the ad set level, I normally create multiple ad sets with different Facebook Interests inside each ad set for the test phase.

But for the scaling phase I create multiple ad sets (8-10 ad sets). Each ad set will have the same set of interests, but I will differentiate them by age, gender, or device (mobile or desktop).

Like this:

Ad Set #1 – Set of Interests – Men – 25-34 – Mobile
Ad Set #2 – Set of Interests – Men – 35-44 – Mobile
Ad Set #3 – Set of Interests – Men – 45-54 – Mobile
Ad Set #4 – Set of Interests – Men – 55-64 – Mobile
Ad Set #5 – Set of Interests – Men – 65+ – Mobile
Ad Set #6 – Set of Interests – Women – 25-34 – Mobile
Ad Set #7 – Set of Interests – Women – 35-44 – Mobile
Ad Set #8 – Set of Interests – Women – 45-54 – Mobile
Ad Set #9 – Set of Interests – Women – 55-64 – Mobile
Ad Set #10 – Set of Interests – Women – 65+ – Mobile

The reason to do this is to avoid the audience overlap problem between each ad set. If we don’t do this, there is the chance that the overlapped audience will see the same ads quite often and they won’t click the ads.

So, dividing them by age, gender, or device will help the frequency rate stay low while keeping ad performance at a good level.

Apart from ad performance, this will help us make an easier decision because we can see clearly which demographics enjoy our products or services and which devices they mostly use.

The Ad Level

At the ad set level, I differentiate the ad sets with the demographics or devices to avoid the overlap problem. I do it the same for the ad level as well in order to avoid the ad fatigue.

At the ad level, I normally create the multiple ads (2-3 ads) inside each ad set to prevent people from seeing the same ads multiple times.

If the ad performs poorly, Facebook will automatically rotate the traffic to another ad to bring performance back.

The easiest way to make the ads different is to change the ad image. Try to find the different images so people will keep engaging with the ads.

Sometimes I can’t find new images to represent my product, so I try using the same ad copy but in the different types of ads.

For example, I will use the same ad copy and image to create the square ad like this:

Square Ads

Or I’ll modify the same image to be in the horizontal dimension and create an ad like this:

Link Click Ads

I’ll also ask my team to find images of the product in different perspectives to create the carousal ads like this:

Carousal Ads

Then I add them to the same ad set. This way it will help Facebook rotate the traffic to a better ad. When the system sees that any ad drops in performance, it will display another ad to their users.

This is the automated system behind ads.

Control the Campaign with Automated Rules

Okay, now we can let our campaign, ad sets, and ads run on autopilot and let Facebook’s system allocate the budget to different ad sets and ads automatically.

Sometimes (actually many times) Facebook’s system doesn’t allocate the budget properly and will make us run at a loss.

That happens and quite often.

Luckily, Facebook has a function called “Automated Rules” that we can set up to automatically run when a certain situation occurs.

For example, if we know that the cost per purchase for the product should not more than $15 per sale, we can create the rule to pause the ad sets that have been spent over $30 but the cost per purchase is over $15. (I add the amount spent at $30 to make sure that the ad set has enough traffic to make a decision.)

Or if we see that there is one ad that doesn’t perform well or not many people click the ad, we can create a rule to pause that ad based on the cost per click or any other metric you want.

We can create the rules to control the campaigns, ad sets, and ad levels. We can also set a rule to run at any time we want; every 30 minutes, once a day, or on any custom schedule.

Below are some of the basic rules that I usually set for my campaigns.

Stop Loss & Restart Rules

What I will check when I pause the ad sets are mainly the cost per purchase and the cost per click.

After we have run the campaign for a while, we will know how much the cost per purchase and the cost per click should be for the product we are promoting.

For example, if I’m selling the print for necklaces, I know that the base cost is around $9.90 including shipping. If I sell it for $29.90, the ad cost for a sale should not be more than $20 otherwise I won’t make any profit.

After I have run the campaign to promote this necklace for a while, I see that there a sale from every 20 people who visited my product page. The conversion rate is around 5%.

So I know that the cost per click should not higher than $1 or there would be no profit. Therefore, I set my maximum CPC at $0.8 so I could make a profit from a sale.

The calculations for this campaign look like this:

20 clicks x $0.8 CPC = $16 (ad cost for one sale)
1 sale = $20 profit (without ad cost)
Net profit = $20-$16 = $4 per sale

There are two rules for stopping loss.

Rule #1: If the cost per purchase is higher than $16 and the daily amount spent is more than $30, pause the ad set. Run this rule twice a day; at 1PM and 8PM.

This is a rule to control the budget based on cost per purchase. I add the daily amount spent at $30 to make sure that the ad set has enough traffic to make a decision.

Rule #2: If the cost per click is higher than $0.8 and the daily amount spent is more than $10, pause the ad set. Run this rule every 30 minutes.

This is the rule for checking the cost per click. We may see that yesterday the cost per click for the ad set was good, but the next day it increased significantly, so we need to pause it in order to prevent loss.

I set the daily amount spent lower than Rule #1 because it doesn’t require much traffic to check the CPC.

For Rule #1 and Rule #2, we may find that these rules may pause some ad sets that did great during the previous 2-3 days, but the overall performance at one week still looks good. So we need to get help from the next rule…

Rule #3: Turn on the paused ad sets or ad if the cost per purchase has been less than $16 for the past 7 days. Run this rule once a day at 12AM.

This is the “RESTART” rule. It will be used to turn on the ad sets at the beginning of the new day. It will be used for the good ad sets that perform well in the past but were paused for the current day.

We have to give them another chance to check whether the performance will come back or not.

Next, I’ll manually check the overall performance of the campaign once a week. If the restarted ad sets still perform poorly, I’ll permanently pause them.

Budget Adjusting Rules

Apart from stopping loss and restarting rules, there will be some other rules for adjusting the daily budget too.

Rule #4: Increase the campaign’s daily budget by 10% if the cost per purchase was lower than $16 during the past day. Run this rule once a day at 12:00AM.

Rule #5: Decrease the campaign’s daily budget by 10% if the cost per purchase was higher than $16 during the past day. Run this rule once a day at 12:00AM.

I use these rules to increase or reduce the daily budget for my campaign based on the performance.

I find that the automated rules are very useful because I don’t have to monitor the campaigns too often, especially while I’m asleep.

Anyway, this is just a guide to creating automated rules. My automated rules are a bit more complicated than these examples and the numbers are different.

You have to study your campaigns and create the rules that fit them.

To wrap up

This is the automated system behind my CBO campaigns.

At the campaign level, I use the bid strategy to control the cost of the campaign.

There are multiple ad sets inside the campaign separated by age, gender, and device in order to reduce the chance of the audience overlap and to make a better decision when we have to decide to pause or keep running the ad sets.

There are also multiple ads inside each ad set to prevent the ad fatigue or people seeing the same ad too often, which leads to poor results.

The final thing is the automated rules that I use to control the campaign.

I have been running Facebook ads for many years and have never seen it stable, so we need to have the automated rules to control the “strange” situations that might happen when Facebook updates something.

The main objective of these automations is to ensure the campaign keeps performing at a good level for a long time and help Facebook allocate the budget with the CBO strategy more efficiently.

Okay, this is how I set up everything inside my CBO campaigns and make them automated. I hope you’ll find it useful and, again, if you have any questions feel free to leave them in the comments below!

—Bank “Automated CBO” K.

P.S. Last week I wrote the first article about CBO, and it has been shared to several Internet marketing groups.

This is some of the feedback I received.

Love it!

PPS. If you know anyone who needs to read this article, it would mean the world to me if you would share this with them.

Want to stay in the loop?

Leave a Comment