# Meta Optimization Playbook

> Use this skill when optimizing a live B2B Meta account — diagnosis order, B2B benchmarks, and the fix sequence for underperforming campaigns.

- Skill: `swan-gtm/meta-optimization-playbook` (Agent Skill)
- Install (CLI): `npx skillmds@latest add swan-gtm/meta-optimization-playbook`
- Raw SKILL.md: https://api.skillmd.com/api/skills/swan-gtm/meta-optimization-playbook/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: swan-gtm (https://skillmd.com/u/swan-gtm)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/swan-gtm/meta-optimization-playbook

---


# Meta Ads Optimization Playbook - B2B SaaS

What to do when things go right, wrong, or sideways. Decision trees, weekly cadence, thresholds, and benchmarks for managing B2B SaaS Meta accounts ($30K+ ACV).

---

## Core Rule: Meta Thinks in Weeks, Not Days

Single-day or 3-day fluctuations are normal. Meta rotates audiences, tests delivery patterns, and adjusts. Never make decisions based on less than 7 days of data. Check results weekly, not daily.

**The most common way to kill a winning campaign:** Making changes every 2-4 days because a metric dipped. Let it run.

---

## B2B SaaS Meta Benchmarks (2025-2026)

| Metric | Benchmark | Strong | Red Flag |
|--------|-----------|--------|----------|
| CTR | 1.0-1.5% | 2.0%+ | < 0.8% |
| CPM | $10-20 | < $12 | > $25 |
| CPC (leads) | $1.50-2.50 | < $1.50 | > $3.50 |
| CPL (lead form) | $20-50 | < $25 | > $75 |
| Frequency (cold) | 1.5-3.0 | < 2.5 | > 4.0 |
| Frequency (retargeting) | 2.0-4.0 | < 3.0 | > 6.0 |
| MQL-to-SQL rate (Meta) | 5-10% | 15%+ | < 5% |
| Landing page CVR | 8-12% | 15%+ | < 5% |

**Seasonal CPM swings:**
- Q1 (Jan-Mar): Lowest CPMs - scale aggressively
- Q2 (Apr-Jun): Baseline (+10-20%)
- Q3 (Jul-Sep): Moderate increase (+15-25%)
- Q4 (Oct-Dec): Spike (+60-80%) - consider pausing or reducing B2B spend

---

## Decision Tree 1: CPA Increasing

**Trigger:** CPA rises 20%+ above target for 2+ consecutive days.

```
CPA rising?
│
├─ Step 1: Check tracking
│   ├─ Pixel firing correctly? → If broken, fix immediately
│   ├─ CAPI sending events? → CAPI recovers 20-30% of lost conversions
│   └─ Attribution window correct? → B2B needs 7-day click minimum
│
├─ Step 2: Check frequency + creative fatigue
│   ├─ Frequency > 4.0? → Immediate creative refresh
│   ├─ CTR dropped 20%+ from baseline? → Creative fatigue, new concepts needed
│   └─ Frequency 3.0-4.0? → Warning zone, prepare replacement creative
│
├─ Step 3: Check learning phase
│   ├─ Made changes in last 7 days? → Learning phase reset. Wait.
│   ├─ Under 50 conversions this week? → Still in learning. Don't touch.
│   └─ Budget changed > 30%? → Learning phase reset. Roll back.
│
├─ Step 4: Check audience
│   ├─ Audience overlap between ad sets? → Consolidate or add exclusions
│   ├─ Audience saturated (small pool)? → Expand targeting or create lookalikes
│   └─ Irrelevant placements draining budget? → Check Audience Network, exclude if needed
│
├─ Step 5: Check landing page
│   ├─ Page load > 3 seconds? → 20% of clicks drop before page loads
│   ├─ Message mismatch between ad and LP? → Align copy
│   └─ Bounce rate spiked? → LP issue, not ad issue
│
└─ Step 6: External factors
    ├─ Q4 CPM spike? → Accept higher costs or reduce spend
    ├─ New competitor in auction? → CPM increase may be permanent
    └─ Seasonal demand shift? → Adjust expectations
```

**Quick action table:**

| Cause | Action | Timeline |
|-------|--------|----------|
| Tracking broken | Fix CAPI/Pixel, pause until resolved | 24-48 hrs |
| Frequency > 4.0 | Refresh creative immediately | 24 hrs |
| Learning phase reset | No changes, wait 7 days | 7 days |
| Audience saturated | Expand targeting, add lookalikes | 3-5 days |
| Landing page issue | Fix LP, don't blame ads | 48 hrs |
| Seasonal CPM spike | Reduce budget or accept | Variable |

---

## Decision Tree 2: CTR Dropping

**Trigger:** CTR drops 20%+ from established baseline.

```
CTR dropping?
│
├─ Creative fatigue (most common cause)
│   ├─ Frequency > 2.5 (cold)? → Fatigue likely. Rotate creative.
│   ├─ Same ads running 14+ days? → B2B creative loses efficiency in 14-21 days
│   └─ Only 1-2 creative concepts? → Algorithm needs variety. Add 3-4 new concepts.
│
├─ Audience exhaustion
│   ├─ Small audience + high frequency? → Expand or pause
│   └─ Same audience running 30+ days? → Refresh or create new segments
│
├─ Ad format stale
│   ├─ All static images? → Test video (9:16 vertical with audio = 12% higher conversions)
│   └─ All video? → Test static carousels or single image
│
└─ Messaging misalignment
    ├─ Offer still relevant? → Check if market/season shifted
    └─ Copy too generic? → Add specificity, urgency, ICP callouts
```

**Fix priority:** Creative refresh (highest impact) → New ad formats → Audience expansion → Copy rewrite

---

## Decision Tree 3: Lead Quality Bad

**Trigger:** Leads have wrong job titles, wrong company sizes, personal emails, or say "I don't remember signing up."

```
Bad lead quality?
│
├─ Form issues
│   ├─ Work email required? → If no, enable immediately
│   ├─ Custom qualification questions? → Add 1-3 (role, company size, budget)
│   ├─ Using "More Volume" form type? → Switch to "Higher Intent"
│   └─ Social amnesia reports? → Add friction (questions + confirmation screen)
│
├─ Targeting issues
│   ├─ Running broad targeting? → Add job title + interest stacking
│   ├─ Advantage+ expanding too wide? → Switch to Original Audience or add "Further Limit Reach"
│   └─ Audience Network enabled? → Disable - often low-quality traffic for B2B
│
├─ Creative issues
│   ├─ Ad copy too generic? → Add ICP specificity ("For B2B SaaS teams with 50+ employees")
│   ├─ Missing "mosquito repellent"? → Creative must filter OUT non-ICP
│   └─ Offer too low-friction? → Move from ebook to calculator/assessment (higher quality)
│
├─ Optimization issues
│   ├─ Optimizing for leads (volume)? → Try optimizing for qualified leads via CAPI
│   ├─ Sending qualified lead events back to Meta? → If no, set up CRM → CAPI pipeline
│   └─ Only counting form fills? → Send MQL/SQL events for better algorithm training
│
└─ Placement issues
    ├─ Check placement breakdown → Which placements drive low quality?
    └─ Feed placements typically higher quality than Stories/Reels for B2B
```

**The nuclear option:** If quality is consistently bad across all changes, the offer is wrong. Go back to offer-strategy.md and redesign.

---

## Decision Tree 4: Kill vs Optimize vs Scale

### KILL (Pause Immediately)

- Zero conversions after spending 5-10x target CPA
- Frequency > 6.0 with declining performance
- Relevance score "Below Average" in all 3 diagnostic metrics
- ROI < -30% after 7 full days
- Failed to exit learning phase after 14 days

### OPTIMIZE (Adjust and Monitor)

- CPA within 20-30% of target but inconsistent
- CTR 0.8-1.5% (room for improvement)
- Learning phase exited but plateaued
- Frequency 2.5-4.0 (creative refresh needed)
- Lead quality mixed (some good, some bad)

**Optimization priority:** Creative refresh → Audience refinement → Bid/budget adjustment → Landing page → Offer change

### SCALE (Increase Budget)

All must be true:
- 50+ conversions/week for 2+ consecutive weeks
- CPA at or below target for 3+ consecutive days
- Frequency < 3.0 (audience not saturated)
- Lead quality confirmed in CRM (not just volume)

---

## Scaling Protocol

**The 15-20% rule:** Increase budget 15-20% every 3-5 days. Never increase > 30% at once (resets learning phase).

### Phase 1: Validation (Week 1-2)
- Wait for 50+ conversions in learning phase
- Establish baseline CPA over 7 days
- Verify lead quality in CRM
- Do NOT touch anything

### Phase 2: Conservative Scaling (Week 3-4)
- Increase budget 15% every 3 days
- Monitor CPA daily: if increases > 15%, pause scaling
- Continue if CPA stable or improving

### Phase 3: Aggressive Scaling (Week 5+)
- Increase budget 20% every 3 days (if performance holds)
- Stop if: frequency > 3.5, CPA increases 2 consecutive days, CTR drops > 15%

### If You Break It (Recovery Protocol)
1. Roll back budget 20-30% immediately
2. Let stabilize for 3-5 days
3. Resume scaling at slower pace (10% every 5 days)

---

## Learning Phase Rules

### What It Is
Meta needs 50 conversion events per ad set per week to optimize properly. Until then, performance is volatile.

### Budget Formula
```
Daily Budget = (Target CPA × 50 conversions) ÷ 7 days

Examples:
- $20 CPA → $143/day minimum
- $50 CPA → $357/day minimum
- $100 CPA → $714/day minimum
```

### What Resets Learning Phase (Avoid)
- Changing audience targeting
- Budget increase > 30% at once
- Changing ad creative (new image/video)
- Changing optimization event
- Changing bid strategy

### What Doesn't Reset Learning Phase
- Small budget adjustments (< 10%)
- Ad copy tweaks (headline, description)
- Pausing ad for < 24 hours

### If Stuck in Learning Phase
- Not getting 7+ conversions per day? → Increase budget OR optimize for upper-funnel event (landing page views, form starts)
- Consolidate ad sets (1 ad set with $500/day > 5 ad sets with $100/day)
- Ensure CAPI + Pixel both firing (recovers missed conversions)

---

## Weekly Optimization Cadence

### Monday - Performance Review
- Review past 7 days: CPA, CTR, CPM, frequency, lead volume
- Check CRM: lead quality from last week's ads (job titles, companies, MQL rate)
- Identify top 3 performing ads → why are they winning?
- Flag creative fatigue signals (CTR drop, frequency > 3.0)

### Wednesday - Creative + Targeting
- Launch new creative variations based on Monday's analysis
- Apply 50/30/20 budget allocation:
  - 50% → Proven winners
  - 30% → Iterative improvements (new hooks on winning concepts)
  - 20% → New concepts (completely different angles)
- Review learning phase status on new ad sets

### Friday - Budget + Scaling Decisions
- Scale winners (15-20% budget increase if criteria met)
- Pause underperformers (see Kill criteria above)
- Check budget pacing (spent evenly through week?)
- Prepare next week's creative pipeline

### Monthly
- Full account audit (structure, targeting, tracking, budgets)
- CRM deep dive: MQL-to-SQL rates, cost per opportunity, cost per closed-won
- Refresh audience lists (CRM re-exports, new retargeting segments)
- Review offers: still relevant? Market shifted?

### Quarterly
- Campaign structure review (consolidation opportunities)
- CAPI + Pixel health check (Event Match Quality score)
- Competitive analysis (new entrants, CPM trends)
- Budget reallocation across channels based on pipeline ROI

---

## The 80/20 Rule for Campaign Management

20% of your campaigns yield 80% of results. Apply this ruthlessly:

1. **Identify your 20%** - Which campaigns/ad sets/ads actually drive qualified pipeline?
2. **Kill the 80%** - Not "reduce budget" - pause them entirely
3. **Reinvest in winners** - Double down on what works
4. **Test in controlled batches** - 20% of budget goes to new concepts, not scatter-shot launches

**Real example:** An account needed to 3-5x ROI in 30 days. Solution: paused everything that wasn't driving revenue. The 80/20 applied, and cutting the waste was enough.

---

## Automatic Placements vs Manual for B2B

### Recommended B2B Placement Strategy

| Campaign Type | Placement | Reasoning |
|--------------|-----------|-----------|
| Cold prospecting | Advantage+ (auto) OK | Let Meta find where your ICP responds. Review placement report after 7 days. |
| Retargeting | Manual: Feed priority | Users need to read, click, engage - Feed is best for consideration. |
| ABM | Manual: Feed only | Precise messaging, no waste on low-quality placements. |
| Brand awareness | Advantage+ (auto) OK | Maximize reach across surfaces. |

### Placements to Watch / Exclude
- **Audience Network** - Often low-quality traffic for B2B. Test, but exclude if lead quality drops.
- **Stories/Reels** - Works for awareness, poor for complex B2B messaging. Only use with dedicated 9:16 creative.
- **Facebook Feed** - Primary B2B placement. Most engagement, best for long copy.
- **Instagram Feed** - Secondary. Good for visual credibility, decision-maker presence.

---

## Related Files

- **campaign-structure.md** - ABO/CBO/Advantage+ setup, campaign architecture
- **creative-strategy.md** - What to build when creative refresh is needed
- **creative-fatigue-detection.md** - Frequency thresholds, rotation timing
- **message-validation.md** - How to identify your true top-performing ads
- **lead-form-optimization.md** - Fixing lead quality at the form level

