Our Ongoing Analysis of Facebook’s Campaign Budget Optimization Tool (CBO)

by Andrew Krebs-Smith | September 19

Facebook’s Campaign Budget Optimization tool (CBO), moves money between ad sets within a campaign.

  • It was originally going to be required that all advertises use CBO starting 09/01/2019, but that has now been delayed to 02/01/2020 for the majority of ad accounts. This delay is something we were predicting back in March.
  • Early versions of CBO did not work well, and were consistently losing in head-to-head tests vs. Social Fulcrum’s in-house software throughout late 2018.

The good news is that CBO upgrades have been very effective, and the current version is now beating all of the things we have tested it against over the past 120 days.

What Does this Mean for Advertisers?
If you are a mainstream Facebook advertiser, you should be 100% on CBO right now, unless you have a very specific reason not to be.

Two Common Reasons Advertisers don’t want to use CBO

1. “I think I know better than CBO”

This is not a valid in our opinion. We originally thought this as well. However, our extensive control tests concluded that CBO was the better option. See diagram below.

2. “My account is divided up into all of these campaigns to make it easy to find ads, so CBO won’t work for us.”

This has also proven to be invalid. Our data suggests that you should rebuild your account with fewer campaigns, employ a logical naming system to make ads easy to find, and use CBO.

Three CBO Quirks we have Observed

1. CBO makes weird budget decisions when you look at ad set level spending.

  • It looks at marginal cost of acquisition, not average cost of acquisition.
  • Just because one tiny audience had a great cost associated with the first 3 checkouts does not mean it will repeat this for the 4th checkout).
  • CBO biases spend towards larger audiences because it focuses on marginal cost.


  • Do not look at costs at the ad set level…you will not be able to understand them.
  • Our key realization is “even though you can’t justify CBO’s decisions every day for every ad set, it is still smarter than you. Just turn it on, and don’t obsess over its ad set level decisions”

2. CBO only works well if you have very few campaigns, and lots of ads sets per campaign.

Many advertisers have tons of campaigns, because they use them to make it easy to find ads. This is not efficient. In this type of architecture, if you have 10 prospecting campaigns, with 3 ad sets each, CBO won’t be able to do much. This is because it can’t move money between the prospecting campaigns.


  • Aim for 3 to 4 total campaigns, maximum, and consolidate until you have that. You can have a ton of ad sets per campaign, however, you should aim to have 1 prospecting, 1 retargeting, and 1 retention campaign, and almost nothing else.
  • Campaigns are NOT folders to make it easy to find ads. Campaigns are a way of telling Facebook “All customers in this grouping are equally valuable.” To make it easy to find ads, have a strict naming convention so that you can still find ad sets even if you have hundreds of ad sets in one campaign.

3. CBO does weird things if it gets no conversion data.

This happens when you turn on CBO and you have zero conversions on the account (conversions take a while to show up in FB (e.g. if you are only uploading offline conversions 2x per week).

CBO will make completely irrational decisions about where to spend budget until the first batch of conversions are processed. The default behavior for ‘I have no conversions in the past 48 hours” is to put all the money in a single randomly chosen ad set. The default behavior should be to spread the spend evenly until data arrives.


  • Keep CBO turned off until you have some conversions in the campaign.
  • Or, use ad set min/max until the data shows up, but then remove the min/max.
Two Topics we are Currently Researching within CBO

1. How do you use audience level incrementality within CBO?

Our lift testing software gives us incrementality at the audience level, so we know that audience X is 37% incremental, but audience Y is 16% incremental. In other words, we know that checkouts from different audiences are “worth” different amounts, but we can’t tell that CBO.

Potential Solutions

  • We have tested dividing campaigns into sub-campaigns that are all of similar incrementality.
  • We have also testing using ad set min/max to override CBO decisions.
  • Dividing campaigns into sub-campaigns that are all of similar incrementality only marginally beats using ad set min/max to override CBO decisions. However, it’s so incredibly labor intensive that we suggest only using it in situations where the 0.1x gains in ROAS are mission critical.

  • We are currently testing just letting CBO go on its way with no override, in the hopes that overall ROAS will be high enough that its suboptimal per-audience decision making is irrelevant.

2. What is the optimal CBO campaign structure?

In order to answer this question, we are currently investigating the following:

  • Should retargeting and prospecting be mixed campaigns?
  • Is there an ad set count when it’s best to split into two campaigns?
  • Are there situations when using min/max ad set spend improves performance?
  • What is the best way to add new audiences to an existing CBO campaign?
Andrew Krebs-Smith
About the author

Andrew Krebs-Smith

Helping B2C Retail/Ecomm companies test, measure, and scale digital marketing. Trying to fix the agency model so that agencies are accountable to every client media dollar they spend.