Meta rebuilt their entire ad system in 2024-2025. If you're still running campaigns the old way, you're leaving money on the table. This playbook covers everything you need to know about the ABO → CBO → Cost Cap framework that's driving results for DTC brands.
What's Running Your Ads in 2025
Before diving into campaign structure, you need to understand the three systems powering Meta's ad delivery.
The Meta AI Trifecta
GEM (The Brain) — Watches everything on Instagram and Facebook — your ads, organic posts, what people click, what they ignore. Learns patterns and shares insights across platforms. Before: Instagram didn't talk to Facebook. Now they do.
Lattice (The Organizer) — Organizes millions of ads into one smart system. Understands that someone interested in healthy cooking might also want fitness content. Connects topics and transfers learnings across campaigns.
Andromeda (The Matchmaker) — Filters millions of ads to find the right ones for each user. 10,000x smarter than the old system. Reads your images, videos, and copy to understand what each ad is actually about.
What This Means for Your Strategy
- Run more ads (8-15 per adset) — The old "3-6 ads" rule is dead. More options = better matching.
- Strive for creative diversity — Different people, locations, formats, angles. Andromeda pattern-matches visuals.
- Same visuals = same ad to Andromeda — Same actor + same scene with different scripts? Andromeda sees one ad. But you still get conversion data per offer.
Andromeda processes visual elements first. Two ads with the same person in the same location are essentially the same ad to the algorithm, regardless of script or offer differences.
Your Key Numbers
Before running any campaigns, you need to calculate your key metrics. These numbers will drive every decision.
How to Calculate Your Break-Even ROAS
Break-even ROAS tells you the minimum return needed to not lose money on ad spend.
Break-Even ROAS Formula
Break-Even ROAS = 1 ÷ Contribution Margin
Where Contribution Margin = (Revenue - COGS - Variable Costs) ÷ Revenue
Example:- Product Price: $100
- COGS: $30
- Shipping & Fulfillment: $10
- Payment Processing (3%): $3
- Variable Costs Total: $43
- Contribution Margin: ($100 - $43) ÷ $100 = 57%
- Break-Even ROAS: 1 ÷ 0.57 = 1.75x
How to Calculate Your Target ROAS
Target ROAS is your profitability threshold—the return you need to hit your margin goals.
Target ROAS Formula
Target ROAS = Break-Even ROAS × (1 + Desired Profit Margin)
Example:- Break-Even ROAS: 1.75x
- Desired Profit Margin on Ad Spend: 30%
- Target ROAS: 1.75 × 1.30 = 2.28x (round to 2.3x)
How to Calculate Your Target CPA
Target CPA is the maximum you should pay to acquire a customer while staying profitable.
Target CPA Formula
Target CPA = Average Order Value ÷ Target ROAS
Example:- 7-Day Average Order Value: $120
- Target ROAS: 2.3x
- Target CPA: $120 ÷ 2.3 = $52
Example Key Numbers Summary
| Metric | Formula | Example Value |
|---|---|---|
| Contribution Margin | (Revenue - Variable Costs) ÷ Revenue | 57% |
| Break-Even ROAS | 1 ÷ Contribution Margin | 1.75x |
| Target ROAS | Break-Even ROAS × (1 + Profit Margin) | 2.3x |
| Target CPA | AOV ÷ Target ROAS | $52 |
Calculate these numbers for YOUR business before proceeding. Every brand's numbers are different based on margins, AOV, and profit goals. Use a spreadsheet to model different scenarios.
Budget Allocation by Campaign Type
| Campaign | Daily Budget | Ad Count |
|---|---|---|
| Testing (ABO) | Ads × Daily Budget Per Ad (min $50) | 8-15 ads per adset |
| Scaling (CBO) | $1,000-3,000/day | 15-25 ads total |
| Cost Cap | $500-1,500/day | 10-15 ads total |
How to Calculate Your Testing Budget Per Ad
The math is based on getting enough conversions to judge an adset:
Formula: Daily Budget Per Ad = (Target CPA × 8 conversions) ÷ 7 days ÷ Number of Ads
Example with $52 Target CPA:- To judge an adset, you need ~8-10 conversions over 7 days
- At $52 Target CPA: 8 conversions × $52 = $416 spend over 7 days
- $416 ÷ 7 days = ~$60/day per adset
- With 8 ads: $60 ÷ 8 = ~$7.50/ad/day
- 8 conversions × $100 = $800 over 7 days
- $800 ÷ 7 days = ~$115/day per adset
- With 8 ads: $115 ÷ 8 = ~$14/ad/day
The 3-Campaign System
Three campaigns, three jobs. Here's how ads move through the system.
Campaign Structure Overview
| Campaign | Job | Type | Budget |
|---|---|---|---|
| 1. Testing | Find winners | ABO (CBO OFF) | Ads × $12.50/day |
| 2. Scaling | Maximize volume | CBO ON | $1,000-3,000/day |
| 3. Cost Cap | Protect CPA | Cost Cap bid | $500-1,500/day |
Testing Campaign Rules
The Testing campaign is where you discover what works. Here are the exact rules for when to graduate, keep testing, or kill an ad.
Decision Framework
| Action | Criteria |
|---|---|
| Graduate to Scaling | ALL of: ROAS ≥ Target ROAS, 4+ purchases, CPA ≤ Target CPA, 7+ days running |
| Keep Testing | ROAS between Break-Even and Target (run 7 more days) |
| Kill (Pause) | BOTH of: ROAS < 80% of Break-Even AND spent ≥ 6× Target CPA |
| Action | Example Criteria |
|---|---|
| Graduate | ROAS ≥ 2.3x, 4+ purchases, CPA ≤ $52, 7+ days |
| Keep Testing | ROAS between 1.40x - 2.29x |
| Kill | ROAS < 1.40x AND $312+ spent |
When you graduate an ad, DUPLICATE the winning adset to Scaling—don't move it. Keep the original in Testing as a safety net. After 2 weeks of solid Scaling performance, remove from Testing to free up budget for new tests.
Scaling Campaign Rules
Once ads prove themselves in Testing, they graduate to Scaling for maximum volume.
| Decision | Criteria |
|---|---|
| Eligible for Cost Cap | ROAS ≥ 90% of Target ROAS for 14+ days with consistent, stable performance |
| Pause in Scaling | ROAS < Break-Even ROAS for 7+ days (may still keep in Testing if performing there) |
| Decision | Example Criteria |
|---|---|
| Eligible for Cost Cap | ROAS ≥ 2.07x for 14+ days |
| Pause in Scaling | ROAS < 1.75x for 7+ days |
Cost Cap Campaign Rules
Cost Cap is your profitability protection layer. Only use it after you've proven your ads work.
When to Launch Cost Cap
Prerequisites:- 5+ ads that performed in Scaling for 2+ weeks
- Total spend of $1,500+/day across all campaigns
- Set your bid at your actual Target CPA (AOV ÷ Target ROAS)
- Don't bid lower hoping for a deal—Meta's auction rewards honest bids
- If CPA consistently exceeds your target bid
Step-by-Step: Your First Week
Follow these steps exactly to set up your three-campaign system.
Step 1: Create Your Testing Campaign
Campaign name: [Brand] - ABO Testing - Prospecting
Objective: Sales
Campaign budget optimization: OFF (this makes it ABO)
Adset budget: Ads × $12.50/day (example: 12 ads = $150/day)
Step 2: Create Your Scaling Campaign (Empty for Now)
Campaign name: [Brand] - CBO Scaling - Prospecting
Campaign budget optimization: ON
Campaign budget: $1,000/day (start here, scale up later)
Leave it empty — winners will graduate here
Step 3: Wait 7 Days — DO NOT TOUCH
Let Testing run 24/7 with no changes. Every change resets learning. Just wait.
Step 4: Day 7 — Review Results
Apply the rules:
- ROAS ≥ Target ROAS + 4 purchases + CPA ≤ Target CPA? → Graduate to Scaling
- ROAS between Break-Even and Target? → Keep testing 7 more days
- ROAS < 80% of Break-Even + spent ≥ 6× Target CPA? → Kill (pause adset)
Step 5: Graduate Winners
Go to winning adset → Click Duplicate → Destination: Scaling campaign
Step 6: Repeat Weekly
| Day | Action |
|---|---|
| Monday | Review results, graduate/kill |
| Tuesday | Launch new test adsets |
| Friday | Review results, graduate/kill |
| Other days | Don't touch (let it run) |
How to Organize Your Adsets
This is the most important section. The hierarchy is: Adset → Entity ID → Ad
Understanding the Structure
- Adset = Budget container, grouped by FORMAT
- Entity ID = Visual concept, defined by ACTOR + SCENE
- Ad = Individual creative with different SCRIPT + OFFER variations
Visual Example
Campaign: brand_ABO_Testing_Broad_Tier1_120624
ADSET: Video_UGC_18+_costcap-72_7dayclick_A+placements
├── EID01 = Sarah 60F + Kitchen
│ ├── EID01_video_ugc-testimonial_sku-product-a_90off_PainPointA
│ ├── EID01_video_ugc-testimonial_sku-product-a_BOGO_PainPointB
│ └── EID01_video_ugc-testimonial_sku-product-a_30off_Quality
├── EID02 = Linda 29F + Living Room
│ ├── EID02_video_ugc-unboxing_sku-product-b_90off_Transformation
│ └── EID02_video_ugc-unboxing_sku-product-b_BOGO_PainPointA
└── EID03 = Mike 48M + Office
├── EID03_video_ugc-testimonial_sku-product-c_60off_HomeDecor
└── EID03_video_ugc-testimonial_sku-product-c_90off_PainPointC
Why Format-Based Adsets (Not Demographic)?
You might think: "I should create adsets by demographic—Female 45-55, Female 55-65—so I can show each age group actors that look like them."
Here's why that's wrong:- You're using broad targeting anyway. Andromeda already knows who responds to what.
- Splitting by demographic fragments your signal.
- Andromeda is 10,000x smarter. Let it figure out which user responds to which actor.
- FORMAT actually matters for delivery. Video vs static get different placements and costs.
Critical Rule: One Adset = One Format
Do NOT mix Video + Static + Carousel in the same adset:
- Delivery mechanics differ — Video gets Reels, In-Stream, Stories. Static gets Feed, Right Column.
- Testing clarity — If you mix formats and the adset wins, you don't know which format won.
- Budget starvation — Meta's algorithm picks winners fast. Some formats might get starved.
- Andromeda processes differently — A video of Sarah in Kitchen is not the same as a static of Sarah in Kitchen.
Recommended Adset Structure
| Adset | Format | Contains |
|---|---|---|
| Adset 1 | Video - UGC Style | All UGC video Entity IDs |
| Adset 2 | Video - Polished | All polished/studio video Entity IDs |
| Adset 3 | Static - Lifestyle | All lifestyle static Entity IDs |
| Adset 4 | Static - Product | All product-focused static Entity IDs |
What You Learn at Each Level
- Adset level — Which FORMAT wins (UGC vs polished vs static)
- Entity ID level — Which VISUAL (actor + scene) wins
- Ad level — Which MESSAGE (script + offer) wins
- Andromeda learns — Which USER responds to which actor demographic—automatically
Entity ID Rules + Naming
When to create a new Entity ID vs. add an ad to an existing one.
The Rule: Entity ID = Actor + Scene
| Question | New EID? | New Ad? |
|---|---|---|
| Different PERSON/ACTOR? | YES | — |
| Same person, different SCENE/LOCATION? | YES | — |
| Same person + scene, different SCRIPT? | NO | YES |
| Same person + scene, different OFFER? | NO | YES |
| Same person + scene, different PAIN POINT? | NO | YES |
Naming Convention
Ad Name Format: [EID]_[type]-[style]_sku-[sku]_[offer]_[angle]_[a+settings]_[initials]
Example Breakdown:
EID01_video_ugc-testimonial_sku-product-a_90off_PainPointA_a+copy_pk
EID01 = Entity ID 01 (Sarah 60F + Kitchen)
video = ad type
ugc-testimonial = style
sku-product-a = product being advertised
90off = offer (90% off)
PainPointA = messaging angle
a+copy = using Advantage+ copy
pk = media buyer initials
When EID01 graduates, all ads with EID01 prefix move to Scaling together. They stay grouped.
Targeting & Retargeting
How GEM/Lattice/Andromeda changes the retargeting game.
The 2025 Reality
- Andromeda already knows who visited your site—it pattern-matches behavior across platforms
- Broad targeting naturally prioritizes high-intent users
- Excluding site visitors fragments signal
- Lattice transfers learnings across campaigns
Recommended Targeting for All 3 Campaigns
| Setting | Value |
|---|---|
| Targeting | Broad (Advantage+ Audience) |
| Exclude | Purchasers only (30-180 days) |
| Do NOT exclude | Site visitors—let Andromeda find them |
| Placements | Advantage+ (all placements) |
Exclude purchasers because these campaigns are for prospecting—acquiring new customers. Repeat purchases are a different strategy.
Second Chance Protocol
Don't kill products prematurely. Separate CREATIVE failure from PRODUCT failure.
The Problem
| What You Tested | What You Concluded | But Actually... |
|---|---|---|
| Sarah 60F + Kitchen + BOGO script for Product X | "Product X failed" | Maybe the product is fine, but the CREATIVE approach was wrong |
The Rule: Separate Creative Failure from Product Failure
When an ad fails in Testing:
- Kill the AD—not the PRODUCT
- Log the product in a "Retest Queue"
- Choose a retest path
Retest Option A: New Creative Approach
| First Test Failed | Second Test (Different Approach) |
|---|---|
| Sarah 60F + Kitchen | Try: Mike 48M + Office |
| UGC style | Try: Polished studio |
| Pain Point A | Try: Pain Point C |
Retest Option B: Cost Cap Validation
Use Cost Cap as the "final arbiter" for products that failed in Testing. Cost Cap only delivers when Meta believes it can convert at your target, making it a pure efficiency filter.
Cost Cap Retest Rules (After 14 Days)
| Result | Action |
|---|---|
| No spend / minimal delivery | Product is dead. Creative can't convert at this CPA. Consider retiring. |
| Spends + ROAS ≥ Target ROAS | Product is good! Original Testing was too competitive. Create fresh creative and scale. |
| Spends but ROAS < Target ROAS | Gray zone. Product might work with different creative. Try Option A. |
Product Death Rule
A product is only declared "dead" after:
- 2+ distinct creative approaches failed in ABO Testing
- 1 creative failed in Testing AND no Cost Cap delivery after 14 days
Killing an ad is cheap. Killing a winning product because of bad creative is expensive. Give products a fair chance before declaring them dead.
Quick Reference Cheat Sheet
Key Formulas
- Break-Even ROAS: 1 ÷ Contribution Margin
- Target ROAS: Break-Even ROAS × (1 + Desired Profit Margin)
- Target CPA: AOV ÷ Target ROAS
- Testing Budget Per Ad: (Target CPA × 8) ÷ 7 ÷ Number of Ads
Testing Decisions (Day 7+)
- Graduate: ROAS ≥ Target ROAS AND 4+ purchases AND CPA ≤ Target CPA
- Keep testing: ROAS between Break-Even and Target (run 7 more days)
- Kill: ROAS < 80% of Break-Even AND spent ≥ 6× Target CPA
When to Remove from Testing
- After ad has performed in Scaling for 2+ weeks
- This frees up Testing budget for new creative
Scaling Decisions
- Eligible for Cost Cap: ROAS ≥ 90% of Target ROAS for 14+ days
- Pause: ROAS < Break-Even ROAS for 7+ days
Weekly Rhythm
- Monday: Review Testing + Scaling, graduate/kill
- Tuesday: Launch new test adsets
- Friday: Review Testing + Scaling, graduate/kill
- Other days: Don't touch (let it run)
Frequently Asked Questions
Q: Same video, different offers (25% off vs BOGO)—same adset or different?
A: Same adset. Andromeda sees visually identical ads as one ad anyway. Put offer variations together, graduate them together. You'll still see which offer converts best at the ad level.
Q: When exactly do I remove an ad from Testing?
A: After 2 weeks of solid performance in Scaling. Not before. Keep it in Testing as a safety net while it proves itself.
Q: What if I only have budget for one campaign?
A: Start with Testing only. Add Scaling when you have winners and more budget. Cost Cap comes last—only after $1,500+/day total spend.
Q: Won't I compete with myself running the same ad in multiple campaigns?
A: No. Meta's auction picks the most efficient bid. You don't pay twice. During the 2-week proving period, keeping ads in both provides a safety net.
Q: What Cost Cap bid should I set?
A: Your actual Target CPA (calculated as AOV ÷ Target ROAS). Don't bid lower hoping for a deal. Meta's auction rewards honest bids.
Conclusion
This ABO → CBO → Cost Cap framework provides a systematic approach to Meta advertising that works with the platform's AI systems rather than against them. The key principles:
- Let the algorithm learn — Don't touch campaigns during learning periods
- Graduate winners systematically — Use clear rules, not gut feelings
- Protect profitability — Cost Cap is your safety net for proven ads
- Separate creative from product failure — Give products multiple creative chances


















