Building & Scaling Ad Campaigns on Facebook

This article touches on my past few years of experience building and scaling Facebook campaigns. One of the biggest challenges I have had to overcome is a repeatable process that’s not skewed by the endless number of “gurus” and information online. In many cases I see these individuals as stumbling into product market fit with limited ability to objectively repeat their process.

In turn you will find them selling “courses” on how to become wealthy selling Oberlo products on the internet. In all reality, it’s a sure shot way to lose. These courses off-set the gambling woes and help level their income roller coasters with additional revenue. The second you remove product market fit from the equation - everything falls apart and it’s a constant gamble finding that fit. This article will teach you how to structure your campaigns for growth, recover traffic based on intent and subsequently treat your marketing efforts as a profit center on your balance sheet.

Audience, Campaign & Ad Group Structure

How you structure your campaigns is imperative to scaling on Facebook. Simply put, you must organize your campaigns, ad groups, and audiences in a way that you can constantly extrapolate growth.

Starting wide is the best approach and a rough structure is below. At all times, keep the mind set of “copy paste”. Your champion ads are the ones within each ad group that will be utilized to scale your efforts. It is, in many cases as simple as copying and pasting those ad groups numerous times with the highest performing ads running. In the example below, the 5 variant ads used in a proposed test would be met with standardized performance criteria. This allows you to objectively determine what works and what does not work within each ad group.

I typically like to prefix all of these with [C] and [AG] for their respective role. It will help you navigate the Facebook ad manager quicker and clearly disambiguate what’s going on. Without this structure, a mess ensues and making decisions becomes really difficult. It also lends well to reporting at a glance.

  • [C] - Stands for campaign

  • [AG] or [AS] - Stands for Ad Group or Ad Set

Campaign Name - A brand, product, service or approach in acquisition of traffic
Ad group - Focus on singularity in the aforementioned approach, product level ad group

  1. [C] Campaign Name

    1. [AG] Ad group name

      1. Ad v1

      2. Ad v2

      3. Ad v3

      4. Ad v4

      5. Ad v5

  2. [C] Campaign Name ...

  3. [C] Campaign Name ...

Audience Models

You are guessing in cold traffic buys and you need to be ready to spend. Where time and money are the input, validation or invalidation of a hypothesis is the output. That’s the number one goal -- period. How quickly can you cycle through the validation criteria and what sort of definition do you have in your audiences? A real world example may look something like this…

Audience models should always be used at the ad group level and divided respectfully. You may have numerous [AG] Window Mount ad groups with variants in audiences for testing purposes. You will see a naming convention below that makes sense. The goal is to keep track of what you are testing along the way and prevent yourself from getting lost in the audience test data.

  • Who is potentially interested in my product?

  • Are we acquiring conversion funnel events from them (impressions, add to cart, begin checkout) within the bounding box of our automated rules?

  • How can I track the validity of my assumptions and or hypothesis within that audience?

These two fundamentals will allow you to kill off audiences that perform poorly as quickly as possible. This same methodology applies for traffic and purchase intent recovery, with the exception that you are offering that traffic an incentive to return.

Advertising Campaign

  • [COLD] Standing Desk

  • [COLD] Interior Design

  • [COLD] Small House Movement

  • [COLD] Architecture

  • [COLD] SMB

  • [WARM] Website Visitors - Standing Desk Desk - No Purchase

Saved Audience Model

  1. [C] Standing Desk

    1. [AG] Window Mount - SMB's

      1. Ad v1

      2. Ad v2

      3. Ad v3

      4. Ad v4

      5. Ad v5

    2. [AG] Window Mount - Architects

    3. [AG] Window Mount - Tiny House

    4. [AG] Window Mount - Website Visitors - Standing Desk Desk - No Purchase

Replicating these testing scenarios quickly can be done by copying an ad group, creating a new audience model and changing the respective ad groups audience usage to your new test audience. Within the audiences you will now have a cascading effect of control over each ad group utilizing the audience. This gives you a top down performance management across demographics and geolocations. Simply put, if I change the values inside of my “[COLD] Standing Desk” audience to hone in on major markets that are performing -- it could look something like this….

Example Audience 1:

Audience Name: [COLD] Standing Desk

Location - Living In: United Arab Emirates, Netherlands Antilles, Australia, Canada, Switzerland, Germany, Spain, France, United Kingdom, French Guiana, Ireland (country), Italy, Japan, South Korea, Mexico, Netherlands, Norway, New Zealand, French Polynesia, Russia, Singapore, United States

Age: 18 - 65+

People Who Match: Interests: Standing desk

Example Audience 2:

Audience Name: [COLD] Magazines, Blogs & Readership

Location - Living In: New York New York, San Francisco California, Austin Texas, Dallas Texas

Age: 25- 45+

People Who Match: Interests: ThinkGeek, GQ, TechRadar, Dwell (magazine), Wired (magazine), Uncrate, Architectural Digest, Engadget, Smart Technologies, Domino (magazine), Coolhunting, Wallpaper (magazine), Business Insider, Slate (magazine), Gizmodo, CNET, Lifehacker, TechCrunch,, Designboom or INSIDE OUTSIDE Magazine, GQ, Uncrate, Slate, Domino (magazine), Coolhunting, Business Insider or Gizmodo

The biggest difference between these two audiences is simply the targeting method. Audience 1 is really wide with an extremely specific interest. Audience 2 is narrow in geolocation scope but wide in interest definition. These are great variants in testing and think of them as nearly inverse of each other within the same potential purchasing demographic.

As the campaign scales, I may have 20-30 ad groups utilizing this audience. The architecture / design of its use cascading into those ad groups allows me to reach in and refine based on reporting data. At the end of the day, your product market fit will determine performance. Your just using your audiences to align yourself as best as possible with that opportunity.


Facebook not only does a great job at giving you a way to target individuals by a plethora of interest but within highly specific regions of the world. Each audience model should encapsulate markets you think you can open up, or no perform. I typically start with a saved list of geolocations that allow me to create a number of audience by interest or personality attributes quickly. You can see my standard list above “Location - Living In:”

Ad variance testing

  • How do you determine what types of ads are performing quickly?

    • This is a byproduct of understanding your input costs and margins on the item you are offering, selling or lead you are generating. Basically you dont spend on ads that cost you more to acquire the sale than the profit margin you make on the item.

  • How many ads do I create within an ad group?

    • I typically stay with 3-5 variants ads within the ad group there's no need to create more and you need to give the ad variants within the group room to breath on impression volume.  Your budget / spend is a factor in performance here and if it’s low - having a lot of ads inside the ad group does no good.

  • What type of ads do I create within the ad group?

    • Video is performing best right now

    • The templates Facebook offers to utilize images as videos are working very well

    • Single image ads work for impressions and driving traffic volume when you don't have conversion data, but I typically move away from these quickly. They serve a purpose of “time to market” consideration. Getting a campaign live fast and testing response is sometimes more important that creating video ads.

    • Videos with captions are also working incredibly well

  • Long form or short form text in the ad?

    • Test both variants. Long form text are extremely long and verbose ads, sometimes you will see them with a large number of emojis. It’s an engagement driver but the verbose nature of the ad needs to be highly relevant and value added for this to work well.

  • Why do my shitiest ads perform the best?

    • I simply dont know. People want REAL and unfiltered. You may find that a short 3-5 second clip of the most obscure photos / use / or concept outperforms every possible ad. Take off the pretentious brand hat, leave all assumptions behind - try things you would literally never expect to work and objectively measure results.

  • What is a champion variant?

    • This is by far the most powerful tool in the ad group. Each ad that statistically performs well is a candidate for what is know as a champion variant. Your objective with these ads that are performing well is to replicate them with slight variations.

  • How long should it take me to stand up a test?

    • You should be able to create a new landing page, test campaign and audience models with ads and ad groups in under 3 hours. Keep a boiler plate landing page or site on hand that you can easily transition from idea to idea. At a minimum it should have a Privacy Policy, Shipping Policy, Contact Page and the ability for you to swap content and assets in a de-branded domain scenario. Grab an inexpensive generic domain, stand up your basic needs on policies and contacts - then start throwing darts at product market fit.

  • Placements

    • Aside from controlling your audience models and geolocations you can take it a step further by controlling placements. Facebook does a reasonably good job of managing this for you but as you become more advanced and gain experience you will see right away the areas that perform within your given market or product. Right out of the gate you can control the device type, internet connection type, and ad inventory location (display location) purchased. Desktop News Feed, Instagram, etc...

Warm vs. Cold traffic division

Clearly divide all of your traffic at the audience and ad group level. Use this as a means of not only disambiguating your strategy in approach - but also the organization of your ad groups and campaigns. If you look back to the “Advertising Campaign & Saved Audience Model” table you will see a very tight correlation. Warm traffic has a function that cold traffic does not. Its purpose is for you to test different recovery methods. Whereas cold traffic is purely for introduction of a product, service etc. I like to divide this traffic up in a way that is instantly discernible while managing ad groups.

  • [WARM] Retargeting, interacted with a post but did not make a purchase, or possibly serving thank you ads or retargeting for up-sell opportunities post purchase

  • [WARM] Post interactions, people that interact with your posts but don't make a purchase are also strong candidates to serve offers to

  • [COLD] Impressions, This is traffic you are buying with no prior interaction at the brand, product or ad level

Warm traffic recovery

Warm traffic is someone who’s engaged with your products and or services, but not yet converted You have to offer these individuals something -- figuring out what sort of offer helps you close the deal is the hard part. In the e-commerce world it  can be as simple as a product price reduction, coupon or BOGO. The offer is the driving force in the return and in the same way you would optimize for funnel events - warm traffic recovery should be done the same way. You want to serve ads at the product / url or service level. For example, if I am selling wallets online and have 5 different products im going to want to serve ads to the most relevant product the user was interested in. It’s this alignment that helps with purchase process, or conversion funnel optimization. An ad group designed to recover lost intent might look something like this…

In this scenario, the user visited a iPhone X Wallet page.

Audience --- [WARM] Website Visitors - Wallet - No Purchase

Campaign -- [C] Wally

Ad Group --- [AG] Wally iPhone X -  [WARM] Website Visitors - Wallet - No Purchase

Ad’s ---------------- Ad v1 - Bogo

Ad’s ---------------- Ad v2 - 10% off

Ad’s ---------------- Ad v3 - 20% off

Ad’s ---------------- Ad v4 - Free Shipping

Ad’s ---------------- Ad v5 - No offer, Reposition Product

Ad’s ---------------- Ad v6 - Additional Product Education

Each respective ad within this group could be a test variation of offer types.Those offers stand as a means of validating where that sweet spot is in your ROAS. Your input costs here have to be taken into consideration -- did you purchase the original [COLD] traffic and see abandonment? It’s likely so - your cost’s are now compounded and ROAS data can be sku’d so tread carefully in that recovery. One possible way to mitigate the potential loss in ROAS is something like OneClickUpsell. As you surface the ads that are performing the best (the best offer for recovering that traffic) you can correlate post purchase opportunities and drive average order values up.

Funnel event optimization

In the mentality of optimizing for conversions or CRO (conversion rate optimization) you have to treat ads and their events as stages. People begin at upper funnel interactions by viewing an ad -- known as an impression. This impression turns into a click, which turns into subsequent cascading checkout events. In the instance of using Shopify, your events are clearly defined by Shopify’s postback data to your existing Facebook Pixel. You’d expect your customers funnel experience to look something like…

Version 1

  • Ad impression

  • Ad click

  • Page view

  • Abandonment

  • Customer Recovery (retargeting opportunity, email, sms - general marcoms)

Version 2

  • Ad impression

  • Ad click

  • Page view

  • Add to cart

  • Purchase

There are many possible variations of this journey, but your goal in upper funnel events is to take into consideration the reporting data and interactions being made by your users. Your pixel is your source of tell all truth in making decisions on how to spend. You can easily identify underperformant ads by looking at the entire gamut of purchase intent related events. Note that the CPA below is an arbitrarily chosen value.

Ad v1

  • > $10 CPM > $100 spend

  • Low click through rate

  • No ads to cart

  • Never began checkout

Kill this ad, high cost, low number of funnel events

Ad V2

  • < $10 CPM < $100 spend

  • Great click through rate

  • Ads to cart

  • No purchases (yet)

Let it run, ads to cart show intent

Champion Ad V3

  • < $10 CPM > $100

  • Great click through rate

  • Ads to cart

  • > 100 purchases

  • CPA < $25

Great performance, candidate for ad group replication and champion variant replication

Standardized rules for ROAS

Simply put, while taking into account performance metrics through your users journey - you can use things like Automated Rules to ensure your campaigns are not running sideways. It’s a means of cost and performance control. Some basic examples would align with your expected customer journey.

You shouldn't be spending on ads that are getting low conversions - and by conversions this can be anything you define within the conversion funnel. It’s something like Adding to cart. This has value to you and your store. Subsequently, you want to box off for performance across each of the events nurturing purchase intent while mitigating cost or at the end of the day - a positive balance sheet in your ad spend. I prefer to run this ad the ad level while others propose to do this at the ad group level. It is a much more granular approach.

Some basic standardized rules examples:

  • Disable ad > than 1000 impressions and > $100 spend w/no conversions

  • Disable ad if CPA > $25.00

  • Pause ad > 2000 impressions or  > $100 spend and conversions < 1

  • Pause ad if CPA > $25.00

  • Restart ads @ 12:00AM

Other rules may include…

  • Increase ad set budget if CPA < X

  • Pause ad if CPA > X

  • Unpause ad if CPA < X

  • Pause ad sets at 10 p.m.

  • Restart ad sets at 6:30 a.m.

  • Pause ad if conversions = 0 and spend > $100 and impressions > 8000

In the case of lead generation or custom pixel events, the methodology is the same. Your looking for objective performance, decision making should be handled the same way. These standardized rules can also act as a check and balance for a more hands off approach. It allows you to spend your time on things like - creating ads, or creating champion variants (replicating your already performant ads in variations) of ads.

These rules can all be determined on the basis of what you are willing to spend per 1k impressions (CPM). You typically want to let ads run and fail for a duration of around $100 and 8k impressions before you decide to shut them off.

  • Product Price: $68.95

  • Product Cost (FOB): $12.00

  • Gross Profit: $56.95

  • Break even CPA: $56.95

  • Break Even ROAS: 1.21


In some markets this is difficult to determine. Outside of the norm -- Shopify, BigCommerce there is another world -- the mortgage market. It’s by far been one of the most challenging I have ever worked in. Below is a basic ROAS calculator used for determining your max customer acquisition costs. You can get as creative as you’d like. Include every possible P&L line item deduction at the product level to ensure accuracy in your automation rules.

In this case, my ROAS inflection point is 1.21x. I have to acquire that customer without factoring in credit card fees and other ancillary business costs at less than $56.95 for a break even scenario. WIth audiences > 3m total available customers and > 2x return on ad spend, you should be able to confidently scale your campaign.

Scaling methods

  1. What if I don't have any conversions on my pixel yet?

    1. Buy impressions with your ads. Work from the top of the funnel downward. Impressions first, click through second, add to cart events, begin checkout events… start working through optimization efforts at the AD level to ensure you are heading in the right direction. Trust in Facebook's algorithm and slowly create new ad groups that support the data you have acquired in your initial optimization efforts. As you acquire those more valuable down the funnel events (add to cart, begin checkout) in volume, you can create and ad group that's conversion centric on those events until you start seeing checkouts. Limit yourself to spending and don't gable - stay within the bounds of your “Standardized Rules”. If you are shooting wide on the initial impressions and clicks be sure to also start weeding out countries, DMA’s or other variables that demonstrate low return on investment. If India is giving you a ton of clicks but no events - stop serving ad impressions there. Etc…

  2. Budget & ad management with standardized rules

    1. Cycle times on scaling automation events. There’s a recency and frequency method here that can be used to your advantage. If you are spending a lot of money up front in impressions and seeing conversions - scaling in this method is as simple as creating an automated rule that monitors your cost per acquisition at the interval you desire -- while increasing budget at a specified frequency. This means every day at 12:00PM PST you increase your spend by 10% on an ad group until the inflection point of ROAS sees diminishing returns. This usually only happens when you have exacerbated the size of the audience or the frequency of display on your ad is more than 2. Simply create new ads and repeat the process.

  3. Ad group replication

    1. Manual replication of the ad groups

    2. Leveraging the ads within ad groups that perform

  4. Localization

    1. A commonly overlooked method of scaling your campaigns, as you grow you can offer ads in the markets by locale. I prefer to use Google Analytics for the source of truth on how I invest in the locales. If I see a lot of upper funnel events in France for a product I am selling, but low conversions I will typically split this ad group off in to a localized version and start testing ads within. These ads will run in French until we find out what French people are looking for in the purchase decision process. Sometimes it’s literally as easy as using Google translate and copying and pasting language variants in your new ad group.

    2. Alternatively you may consider early on to stand up your initial ad group with the anticipation of performance in those markets. This means that as you replicate performant ad groups for scale, or budget pace for scale you are already in a localized state - preventing you from having to create new ads and send them back through the learning algorithm.

  5. Split and scale

    1. Opening new markets

      1. Your impression data and pixel data is incredibly telling in terms of potential opportunities. This process can be really difficult but is usually the only means of growing outside the scope of an exacerbated audience. If you start to see metrics in decline, or your ads hitting Standardized ROAS Rules it’s time to consider an attempt at opening new markets.

    2. Splitting audiences by geolocation

      1. This goes hand in hand with localization. Opening up new markets like Brazil or Germany can be incredibly tough. If you see strong upper funnel results in those geolocations use them as indicators as to how you would investor your time in testing and expanding. Create a new audience model “[COLD] Standing Desk - Germany” for example. This audience would focus entirely on delivering ads in Germany. In an ideal world, your ad groups that utilize this would be localized (translated) into German - you now have a clean testing ground for expanding into this market.

Interpretation of Facebook ad reports

There are a few core data points to pay attention to throughout the optimization process. All of these can be used in conjunction with automated rule definition. Early on in the launch of an ad, you’ll want to pay close attention to impressions and clicks, as impressions on that ad grow you'll want to start looking at funnel events. Your looking at the data with the intent of optimizing your ads for funnel events that matter, like add to cart, initiate checkout, add payment info, purchase, leads etc...

  • Impressions - Are your ads getting enough impressions (8-10k or greater) to make decisions with. All your trying to do here is to ensure that your cost per impression falls within a given average and you are not spending where you aren't seeing funnels after someone has received that impression and made a click through.

  • Clicks - A good indicator of interest in the ad / offer / product / service

  • Funnel Events (pixel events)

    • ViewContent - When a visitor views a page, for example a product page

    • Search - When a visitor makes a search

    • AddToCart - When a visitor adds a product to the shopping cart

    • AddToWishlist - When a visitor adds a product to a wishlist

    • InitiateCheckout - When a visitor clicks on the checkout button

    • AddPaymentInfo - When a visitor enters payment information in the checkout

    • Purchase - When a customer completes a purchase and views the thank you page in the checkout

    • Lead - When a visitor clicks a sign up, for example a click to signup for a trial

    • CompleteRegistration - When a visitor completes a registration form, for example a signup for a service

  • Cost Per Acquisition

    • This number is calculated by Facebook with instances where companies like Shopify have great integrations with Facebook ads. Pixel event level data is shared - including revenue generated. The math is -- (Campaign Cost ÷ Conversions) = Cost Per Acquisition. This CPA should not exceed your Break Even ROAS. Subsequently, to turn a profit you need it well below that number.

Tooling on the market

I highly recommend using Facebook ad-manager in conjunction with Reveal Bot Facebook’s ad manager vs working with other applications on the market is like grid paper vs blank paper. Once you learn the ins and outs, that piece of blank paper is much easier to work with. Revealbot’s purpose is solely in ad creation. These two applications work incredibly well together. Refresh your ads, constantly test new ads and do it with ease. You can also split your audiences by geolocation and demographics.

Ryan Roberts