
Defi Yield Strategies
- 24 installs
- 82 repo stars
- Updated August 2, 2026
- aaaaqwq/claude-code-skills
This skill is a Claude Code paid-advertising audit tool that analyzes Google, Meta, LinkedIn, TikTok, and Microsoft ad accounts and outputs an Ads Health Score with a prioritized action plan.
About
Despite the listing name, the bundled SKILL.md and reference files describe a paid-advertising audit and optimization skill. It analyzes Google, Meta, LinkedIn, TikTok, and Microsoft ad accounts, orchestrates sub-skills and subagents, detects the business type, and outputs an Ads Health Score with a prioritized action plan. A marketer uses it to audit and optimize campaigns.
- Multi-platform paid-advertising audit across Google, Meta, LinkedIn, TikTok, and Microsoft Ads
- Produces an Ads Health Score (0-100) with A-F grading and a prioritized action plan
- Industry detection for SaaS, e-commerce, local service, B2B, and more, with per-platform audit checklists
Defi Yield Strategies by the numbers
- 24 all-time installs (skills.sh)
- Ranked #1,461 of 1,879 Marketing & SEO skills by installs in the Skillselion catalog
- Data as of Aug 3, 2026 (Skillselion catalog sync)
defi-yield-strategies capabilities & compatibility
Free; works from account exports, screenshots, or API access you provide
- Capabilities
- ads audit · conversion tracking audit · creative quality audit · budget optimization · bidding strategy review
- Works with
- Use cases
- marketing · seo
- Pricing
- Free
What defi-yield-strategies says it does
Comprehensive ad account analysis across all major platforms (Google, Meta, LinkedIn, TikTok, Microsoft). Orchestrates 12 specialized sub-skills and 6 subagents.
When the user invokes `/ads audit`, delegate to subagents in parallel:
npx skills add https://github.com/aaaaqwq/claude-code-skills --skill defi-yield-strategiesAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 24 |
|---|---|
| repo stars | ★ 82 |
| Last updated | August 2, 2026 |
| Repository | aaaaqwq/claude-code-skills ↗ |
What it does
Audit and optimize paid ad accounts across Google, Meta, LinkedIn, TikTok, and Microsoft and produce a scored, prioritized action plan.
Who is it for?
Marketers and agencies auditing and optimizing multi-platform paid ad accounts
Skip if: DeFi or yield-farming analysis; despite the listing name the actual content is about paid ads
When should I use this skill?
You need a paid-advertising audit or single-platform deep analysis of Google, Meta, LinkedIn, TikTok, or Microsoft Ads
What you get
A scored, cross-platform ads audit with prioritized quick wins and an action plan
- Ads Health Score (0-100)
- Per-platform audit findings
- Prioritized action plan with quick wins
By the numbers
- 5 ad platforms audited (Google, Meta, LinkedIn, TikTok, Microsoft)
- 74-check Google Ads audit checklist
- Ads Health Score 0-100 with A-F grading
Files
Ads — Multi-Platform Paid Advertising Audit & Optimization
Comprehensive ad account analysis across all major platforms (Google, Meta, LinkedIn, TikTok, Microsoft). Orchestrates 12 specialized sub-skills and 6 subagents.
Quick Reference
| Command | What it does |
|---|---|
/ads audit | Full multi-platform audit with parallel subagent delegation |
/ads google | Google Ads deep analysis (Search, PMax, YouTube) |
/ads meta | Meta Ads deep analysis (FB, IG, Advantage+) |
/ads youtube | YouTube Ads specific analysis |
/ads linkedin | LinkedIn Ads deep analysis (B2B, Lead Gen) |
/ads tiktok | TikTok Ads deep analysis (Creative, Shop, Smart+) |
/ads microsoft | Microsoft/Bing Ads deep analysis (Copilot, Import) |
/ads creative | Cross-platform creative quality audit |
/ads landing | Landing page quality assessment for ad campaigns |
/ads budget | Budget allocation and bidding strategy review |
/ads plan <business-type> | Strategic ad plan with industry templates |
/ads competitor | Competitor ad intelligence analysis |
Orchestration Logic
When the user invokes /ads audit, delegate to subagents in parallel: 1. Collect account data (exports, screenshots, or API access details) 2. Detect business type and identify active platforms 3. Spawn subagents: audit-google, audit-meta, audit-creative, audit-tracking, audit-budget, audit-compliance 4. Collect results and generate unified report with Ads Health Score (0-100) 5. Create prioritized action plan with Quick Wins
For individual commands (/ads google, /ads meta, etc.), load the relevant sub-skill directly.
Industry Detection
Detect business type from ad account signals:
- SaaS: trial_start/demo_request events, pricing page targeting, long attribution windows
- E-commerce: purchase events, product catalog/feed, Shopping/PMax campaigns
- Local Service: call extensions, location targeting, store visits, directions events
- B2B Enterprise: LinkedIn Ads active, ABM lists, high CPA tolerance ($50+), long sales cycle
- Info Products: webinar/course funnels, lead gen forms, low-ticket offers
- Mobile App: app install campaigns, in-app events, deep linking
- Real Estate: listing feeds, property-specific landing pages, geo-heavy targeting
- Healthcare: HIPAA compliance flags, healthcare-specific ad policies
- Finance: Special Ad Categories declared, financial products compliance
- Agency: multiple client accounts, white-label reporting needs
Quality Gates
Hard rules — never violate these:
- Never recommend Broad Match without Smart Bidding (Google)
- 3x Kill Rule: flag any ad group/campaign with CPA >3x target for pause
- Budget sufficiency: Meta ≥5x CPA per ad set, TikTok ≥50x CPA per ad group
- Learning phase: never recommend edits during active learning phase
- Compliance: always check Special Ad Categories for housing/employment/credit/finance
- Creative: never run silent video ads on TikTok (sound-on platform)
- Attribution: default to 7-day click / 1-day view (Meta), data-driven (Google)
Reference Files
Load these on-demand as needed — do NOT load all at startup.
Path resolution: All references are installed at ~/.claude/skills/ads/references/. When sub-skills or agents reference ads/references/*.md, resolve to ~/.claude/skills/ads/references/*.md.
references/scoring-system.md— Weighted scoring algorithm and grading thresholdsreferences/benchmarks.md— Industry benchmarks by platform (CPC, CTR, CVR, ROAS)references/bidding-strategies.md— Bidding decision trees per platformreferences/budget-allocation.md— Platform selection matrix, scaling rules, MERreferences/platform-specs.md— Creative specifications across all platformsreferences/conversion-tracking.md— Pixel, CAPI, EMQ, ttclid implementationreferences/compliance.md— Regulatory requirements, ad policies, privacyreferences/google-audit.md— 74-check Google Ads audit checklistreferences/meta-audit.md— 46-check Meta Ads audit checklistreferences/linkedin-audit.md— 25-check LinkedIn Ads audit checklistreferences/tiktok-audit.md— 25-check TikTok Ads audit checklistreferences/microsoft-audit.md— 20-check Microsoft Ads audit checklist
Scoring Methodology
Ads Health Score (0-100)
Per-platform score using weighted algorithm from references/scoring-system.md. Cross-platform aggregate weighted by budget share:
Aggregate = Sum(Platform_Score x Platform_Budget_Share)Grading
| Grade | Score | Action Required |
|---|---|---|
| A | 90-100 | Minor optimizations only |
| B | 75-89 | Some improvement opportunities |
| C | 60-74 | Notable issues need attention |
| D | 40-59 | Significant problems present |
| F | <40 | Urgent intervention required |
Priority Levels
- Critical: Revenue/data loss risk (fix immediately)
- High: Significant performance drag (fix within 7 days)
- Medium: Optimization opportunity (fix within 30 days)
- Low: Best practice, minor impact (backlog)
Sub-Skills
This skill orchestrates 12 specialized sub-skills:
1. ads-audit — Full multi-platform audit with parallel delegation 2. ads-google — Google Ads deep analysis (Search, PMax, YouTube) 3. ads-meta — Meta Ads deep analysis (FB, IG, Advantage+) 4. ads-youtube — YouTube Ads specific analysis 5. ads-linkedin — LinkedIn Ads deep analysis 6. ads-tiktok — TikTok Ads deep analysis 7. ads-microsoft — Microsoft/Bing Ads deep analysis 8. ads-creative — Cross-platform creative quality audit 9. ads-landing — Landing page quality for ad campaigns 10. ads-budget — Budget allocation and bidding strategy 11. ads-plan — Strategic ad planning with industry templates 12. ads-competitor — Competitor ad intelligence
Subagents
For parallel analysis during full audits:
audit-google— Google Ads checks (G01-G74)audit-meta— Meta Ads checks (M01-M46)audit-creative— Creative quality for LinkedIn, TikTok, Microsoftaudit-tracking— Conversion tracking health across all platformsaudit-budget— Budget, bidding, structure for LinkedIn, TikTok, Microsoftaudit-compliance— Compliance, settings, performance across all platforms
Industry Benchmarks 2026
<!-- Updated: 2026-02-10 --> <!-- Sources: Claude Research (WordStream/LocaliQ 16K campaigns, Triple Whale 2025), Gemini Research -->
Google Ads — Search Benchmarks
All Industries Average (WordStream/LocaliQ 2025, 16K campaigns)
| Metric | Average | YoY Change |
|---|---|---|
| CTR | 6.66% | +3.74% |
| CPC | $5.26 | Up for 87% of industries (fifth consecutive year of increases) |
| CVR | 7.52% | Up for 65% of industries |
| CPL | ~$70 | +5% |
By Industry (Search)
| Industry | CPC | CTR | CVR | CPL |
|---|---|---|---|---|
| Arts & Entertainment | $1.60 | 13.10% | — | — |
| Travel | $2.12 | — | — | — |
| Restaurants | $2.05 | — | — | — |
| E-commerce | $1.15 | 4.13% | 2.81% | — |
| B2B SaaS | $4.50-$8.00 | 4.28% | 1.65% | $100-$200 |
| Education | $6.23 | — | — | — |
| Local Services | $7.85-$15.00 | 5.50%-6.37% | 7.33%-15.0% | $90.92 |
| Dental | $7.85 | 5.44% | — | — |
| Healthcare | $40+ | 4.90% | 3.10% | — |
| Legal | $8.58-$9.21 | 5.20%-5.97% | 4.60%-5.09% | — |
| Finance | $3.46-$3.77 | 4.65%-8.33% | 2.55%-3.50% | — |
| Real Estate | $1.55-$2.53 | 8.43% | 3.28% | — |
E-commerce Specific (Triple Whale 2025)
| Metric | Median | YoY Change |
|---|---|---|
| CPA | $23.74 | +12.35% |
| CPM | $12.79 | +10.01% |
| ROAS | 3.68 | -10.03% |
Note: CTR improved across all 14 tracked industries while CVR declined in 13 of 14.
Meta Ads Benchmarks
By Objective (WordStream 2025, 1K campaigns)
| Objective | CTR | CPC | CVR | CPL |
|---|---|---|---|---|
| Traffic (all) | 1.71% | $0.70 | — | — |
| Leads (all) | 2.59% | $1.92 | 7.72% | $27.66 |
ROAS Benchmarks
| Segment | ROAS |
|---|---|
| All industries median | 2.19:1 |
| Retargeting | 3.61:1 |
| Advantage+ Sales | 4.52:1 |
CPM by Industry
| Industry | CPM |
|---|---|
| Arts & Entertainment | $5.82 (lowest) |
| Most industries | $6-$8 |
| E-commerce | $12.50 |
| Local Services | $18.00 |
| Healthcare | $28.00 |
| B2B SaaS | $35.00 |
| Healthcare (highest) | $36.82 |
| Legal | $45.00 |
| Finance | $50.00 |
CPC Trend
- January 2026: $0.85 (24% below prior January)
- November 2025 peak: $1.32 (Q4 surge)
Creative Fatigue Thresholds
| Signal | Warning | Fail |
|---|---|---|
| Frequency (prospecting) | >3 | >5 |
| Frequency (retargeting) | >8 | >12 |
| CTR decline over 14 days | — | >20% |
| Exposures before conversion drop (~45%) | 4 | — |
| TOF creative lifespan | 3-4 weeks | — |
| BOF creative lifespan | 6-7 weeks | — |
LinkedIn Ads Benchmarks
| Metric | Benchmark |
|---|---|
| Average CPC | $5-$7 globally; median $3.94 |
| Average CPM | $31-$38 |
| CTR (Sponsored Content) | 0.44%-0.65% |
| CTR (exceptional) | >1.0% |
| Average CPL | $60-$150+ |
| Lead Gen Form CVR | 13% (3.25× higher than landing pages) |
| Message Ads CTR | 3% (30% open rate) |
| Conversation Ads | 50% open rate, 10-12% CTR |
| B2B ROAS | 113% ($1.13 per $1) |
| TLA CPC | $2.29-$4.14 (vs $13.23 standard) |
| TLA CTR | 1.7× higher than standard |
| Min daily budget | $10/day |
CPL by Industry
| Industry | CPL |
|---|---|
| Education | $64 |
| Media | $65 |
| Retail | $80 |
| Manufacturing | $100 |
| Finance | $100 |
| Software & IT | $125 |
| Healthcare | $125 |
Cost Factors
- Senior decision-makers (VP/Director/C-suite): $6.40+ CPC
- North America premium: 40-50% above global averages
- CPC YoY trend: +8% (2025)
- Q3 highest CPC ($15.72); Q4/Q1 typically lower
TikTok Ads Benchmarks
| Metric | Range | Average |
|---|---|---|
| CPM | $3.21-$10 | ~$4.26 |
| CPC | $0.20-$2.00 | ~$1.00 |
| CTR | 0.5%-1.5% | ~0.84% |
| CVR | 0.3%-1.0% | ~0.46% |
| Engagement Rate | 5-16% | Far exceeds FB 0.09%, IG 1.22% |
Format Comparison
| Format | CTR | CPA |
|---|---|---|
| Spark Ads | ~3% | ~$60 |
| Standard In-Feed | ~2% | ~$100 |
Key Thresholds
- Minimum campaign budget: $50/day
- Minimum ad group budget: $20/day
- Learning phase exit: ~50 conversions in 7 days
- TikTok Shop CVR: >10% (vs 0.46-2.4% standard)
- CPM advantage: 40-60% cheaper than Meta
Smart+ Performance
- Median ROAS: 1.41-1.67
- Adoption: 42% of US TikTok performance campaigns
Microsoft Ads Benchmarks
| Metric | Value | vs Google |
|---|---|---|
| Average CPC | $1.20-$1.55 | 20-35% discount |
| Average CTR | 2.83-3.1% | Higher than Google ~2.0% |
| Copilot CTR | 73% higher | vs traditional search |
| Copilot CVR | 16% stronger | vs traditional search |
| Users click paid ads | 25% more often | vs Google users |
| Higher ROAS reported | 37% of advertisers | vs Google |
Copilot Checkout (January 2026)
- Users discover, compare, and purchase within Copilot conversations
- 194% more likely to purchase when shopping intent is present
- Ads in Copilot must be clearly labeled
User Demographics
- ~50% in top 25% household incomes
- 34% hold degrees
- 45-64 age group: 38% of searches
- US all-devices share: 8.78% (record)
- US desktop share: 16.75-17.58%
- With Yahoo/AOL partners: ~25% US desktop
ROAS Benchmarks by Industry (Cross-Platform)
| Industry | Meta | TikTok | ||
|---|---|---|---|---|
| E-commerce | 3.68 | 2.19-4.52 (ASC) | N/A | 1.41-1.67 |
| B2B SaaS | N/A | N/A | 1.13 | N/A |
| Legal | 3.0 | — | — | — |
| Finance | 3.5 | — | — | — |
| Healthcare | 2.8 | — | — | — |
| Local Services | 5.0 | — | — | — |
Landing Page Benchmarks
| Metric | Value |
|---|---|
| Mobile traffic share | 82.9% |
| 1s load → CVR vs 5s load | 3× higher |
| 1s delay | -7% conversions |
| Median CVR across industries | 6.6% |
| Top 10% CVR | 20%+ |
| QS landing page high → CPC impact | 50% discount |
| QS landing page low → CPC impact | 400% extra |
Minimum Viable Ad Budgets
| Platform | Minimum Monthly | Rationale |
|---|---|---|
| Google Ads | $1,000+ | Need 15+ conversions/month for Smart Bidding |
| Meta Ads | $600-$800 | Need 50 conv/week per ad set for learning |
| LinkedIn Ads | $3,000+ | High CPCs ($5-$35) require scale |
| TikTok Ads | $300+ | Low CPMs but need creative volume |
| Microsoft Ads | 20-30% of Google budget | Proportional to search volume |
Bidding Strategy Decision Trees
<!-- Updated: 2026-02-10 --> <!-- Sources: Google Research PDF 2, Claude Research, Gemini Research -->
Google Ads Bidding Decision Engine
Strategy Selection Flow
START → How many conversions in last 30 days?
┌─ < 15 conversions ──────────────────────────┐
│ → Maximize Clicks (cold start) │
│ → Set Max CPC = Target_CPA / (CVR × 1.5) │
│ → Learning: 3-5 days │
│ → Monitor until 15+ conversions achieved │
│ → OR use Manual CPC if full control needed │
│ → NOTE: eCPC deprecated March 31, 2025 │
└──────────────────────────────────────────────┘
┌─ 15-29 conversions ─────────────────────────┐
│ → Maximize Conversions (uncapped) │
│ → Learning: 7-14 days │
│ → Transition when CPA SD < 20% over 14d │
│ → THEN switch to Target CPA │
└──────────────────────────────────────────────┘
┌─ 30+ conversions, NO dynamic values ────────┐
│ → Target CPA │
│ → Strict: 30+ (Google says 15, but 30+ │
│ for reliable performance, 50+ ideal) │
│ → Set at: 1.1x-1.2x historical CPA │
│ → Adjust: Max 10% change every 14 days │
│ → Never lower by more than 15% at once │
└──────────────────────────────────────────────┘
┌─ 50+ conversions WITH dynamic values ───────┐
│ → Target ROAS │
│ → Requires dynamic conversion values │
│ → Set at: EXACT historical ROAS │
│ → Formula: Bid = P(conv) × Value × 1/tROAS│
│ → Adjust: Same rules as tCPA │
└──────────────────────────────────────────────┘
### Smart Bidding Exploration (Google, 2025+)
An opt-in feature for Target ROAS campaigns that temporarily eases
ROAS targets to discover new, untapped search traffic:
- **Effect**: +18% more unique search query categories, +19% more conversions
- **How it works**: Algorithm temporarily relaxes ROAS constraints to
enter auctions it would normally skip, testing new user segments
- **When to enable**: Stable tROAS campaigns with 50+ conversions/month
seeking incremental growth beyond current query coverage
- **When to avoid**: Tight-margin accounts or campaigns already spending
full budget (exploration adds volume, not just efficiency)
- **Available on**: Target ROAS bid strategies only
┌─ Brand Protection campaigns ────────────────┐
│ → Target Impression Share │
│ → Target: 95-100% on brand keywords │
│ → No conversion data requirement │
│ → Search only (not available elsewhere) │
└──────────────────────────────────────────────┘
SPECIAL CASES:
- PMax: Always uses Maximize Conversions or Maximize Conv Value
- Demand Gen: Supports Target CPC (new), tCPA, tROAS, Max Clicks
- Display Pay per Conversion: Eligibility requiredAttribution Model (Google)
- DDA (Data-Driven Attribution) is now MANDATORY default (September 2025)
- Only two models remain: DDA and Last Click
- All rule-based models deprecated (first-click, linear, time decay, position-based)
- No minimum data threshold for DDA
- Impact on bidding: DDA distributes conversion credit across touchpoints, affecting Smart Bidding signals
Portfolio Bid Strategies
When to use portfolios:
- Multiple campaigns each with <15 conv, but combined >30
- Need cross-campaign budget optimization
- CPC Cap Hack: Only way to set max CPC bid on tCPA/tROAS
Rules:
- Minimum 3 campaigns per portfolio for meaningful data
- Group campaigns with similar target CPAs/ROAS
- Never mix brand and non-brand in same portfolio
Transition Triggers (Google)
| From | To | Trigger |
|---|---|---|
| Maximize Clicks | Maximize Conversions | 15+ conversions in 30 days |
| Maximize Conversions | Target CPA | CPA SD <20% over 14 days + 30+ conv |
| Target CPA | Target ROAS | 50+ conv + dynamic values available |
| Manual CPC | Maximize Clicks | Ready to test automation |
| Any | Target Impression Share | Brand protection need identified |
---
Meta Ads Bidding Decision Engine
Auction Formula
Total Value = Bid × Estimated Action Rate + User ValueStrategy Selection
DEFAULT (90% of campaigns):
→ Lowest Cost (no cap)
→ Best for: Most campaigns, volume maximization
→ Risk: CPA can spike during high-competition (Q4)
IF need cost predictability:
→ Cost Cap
→ Set at: 1.2x - 1.5x target CPA
→ Best for: Scaling with margin protection
→ Risk: Under-delivery if cap too aggressive
IF need strict cost control:
→ Bid Cap
→ Set at: 2x - 3x target CPA
→ Best for: Experienced advertisers with clear unit economics
→ Risk: Significant under-delivery if too low
IF e-commerce with revenue tracking:
→ ROAS Goal
→ Best for: Advantage+ Sales Campaigns
→ Requires: Purchase event + dynamic values
IF high-value diverse products:
→ Highest Value
→ Prioritizes high-value conversions
→ Best for: Wide AOV rangeCBO vs ABO Decision
IF daily_budget < $100:
→ ABO (manual control for testing)
IF daily_budget $100-$500:
→ Test both; CBO if similar audiences, ABO if diverse
IF daily_budget > $500:
→ CBO (Advantage+ Campaign Budget)
→ Let Meta optimize distribution
NOTE: Advantage+ Sales/Leads auto-enable CBOLearning Phase Rules
Exit criteria: 50 conversions per week per ad set
Reset triggers (avoid during learning):
- Budget change >20%
- Any targeting change
- Creative edit (even text)
- Bid strategy change
- Pausing >7 days
If "Learning Limited": 1. Broaden audience 2. Increase budget 3. Switch to higher-funnel event (AddToCart instead of Purchase) 4. Consolidate ad sets 5. Ensure daily budget ≥5× target CPA
---
LinkedIn Ads Bidding
Strategy Selection
Sponsored Content:
→ Maximum Delivery (recommended default)
→ Manual Bidding (for CPC control, experienced only)
→ Minimum daily budget: $10/day (recommend $50+)
Message Ads:
→ CPS (Cost Per Send) — bid aggressively
→ Frequency cap: 1 per 30-45 days per user
→ Win the auction for limited inbox slot
Lead Gen Forms:
→ Lowest Cost or Manual CPC
→ 13% CVR benchmark (3.25× landing pages)
Conversation Ads:
→ CPS — similar to Message Ads
→ 10-12% CTR benchmark
TLA (Thought Leader Ads):
→ Allocate ≥30% budget
→ CPC $2.29-$4.14 (vs $13.23 standard)
Accelerate Campaigns:
→ AI-powered end-to-end
→ 42% lower CPA, 21% lower CPL---
TikTok Ads Bidding
Strategy Selection
DEFAULT:
→ Lowest Cost (volume maximization)
→ Most common, good starting point
IF margin protection needed:
→ Cost Cap
→ Set target CPA, system tries to stay near
IF strict cost control needed:
→ Bid Cap
→ Controls maximum bid per auction (not average CPA)
→ Set at 2-3x target CPA initially
→ Best for: retargeting, competitive niches (Q4/BFCM)
→ Risk: significant under-delivery if set too aggressively
IF Smart+ campaign:
→ Modular automation (choose per module)
→ Up to 30 ad groups, 50 creatives per asset group
GMV Max (TikTok Shop):
→ Default/only for Shop campaigns (July 2025)
→ Optimizes for Gross Merchandise ValueBudget Rules
- Campaign minimum: $50/day
- Ad group minimum: $20/day
- Budget should be ≥50× target CPA per ad group (provides sufficient learning room)
- Learning phase: ~50 conversions in 7 days
---
Microsoft Ads Bidding
Strategy Selection
IF importing from Google:
→ Match Google bid strategy
→ Validate settings transferred correctly
→ Adjust targets (typically 20-35% lower CPC on Bing)
IF native campaign:
→ Same strategy framework as Google
→ Lower CPC targets (expect $1.20-$1.55 avg)
→ Enable Copilot placement for PMax
PMax on Microsoft:
→ Enable "Target New Customers" (Beta 2026)
→ Copilot chat placement: 73% higher CTR
→ LinkedIn profile targeting (unique)---
Cross-Platform Bidding Red Flags
| Red Flag | Severity | Platform | Action |
|---|---|---|---|
| Broad Match + Manual CPC | Critical | Switch to Smart Bidding or Exact Match | |
| tCPA <50% of actual CPA | Critical | Unrealistic target; set at 1.1-1.2× historical | |
| Smart Bidding with <15 conv/month | High | Use Manual CPC or Maximize Clicks | |
| >50% ad sets "Learning Limited" | Critical | Meta | Consolidate, broaden audience, increase budget |
| Cost Cap below historical CPA | High | Meta | Set at 1.2-1.5× target, not below |
| Daily budget <5× CPA | High | Meta | Increase budget or switch to higher-funnel event |
| Budget < $50/day campaign | High | TikTok | Increase to minimum or consolidate |
| No negative keywords with Broad Match | Critical | Add themed negative lists immediately | |
| No Portfolio strategy for low-vol campaigns | Medium | Group <15 conv campaigns into portfolio |
Budget Allocation & Scaling Framework
<!-- Updated: 2026-02-10 --> <!-- Sources: Google Research PDF 2, Claude Research, Gemini Research -->
Platform Selection Matrix by Business Type
| Business Type | Platform 1 | Platform 2 | Platform 3 | Other | Min Monthly | Primary KPI | Time to Profit |
|---|---|---|---|---|---|---|---|
| SaaS B2B | Google 35-45% | LinkedIn 30-40% | Meta 15-25% | YouTube 10% | $5,000 | Pipeline ROI, LTV:CAC | 3-6 months |
| E-commerce DTC | Meta 50-68% | Google PMax 23-30% | TikTok 5-15% | Email 5% | $3,000 | ROAS, MER, POAS | 0-2 months |
| Local Service | Google LSA/Search 60% | Meta 30% | Bing 10% | — | $1,500 | Cost Per Lead/Booking | 1 month |
| B2B Enterprise | LinkedIn 39-60% | Google 20-35% | ABM Display 15-20% | Programmatic 11% | $10,000 | Pipeline, SQLs | 6-12 months |
| Info Products | YouTube 40% | Meta 40% | Email 20% | — | $2,000 | ROAS, Webinar CPL | 1-3 months |
| Mobile App | Apple Search 30% | Google App 30% | Meta/TikTok 40% | — | $5,000 | CPI, LTV, D7 Retention | 3-6 months |
| Real Estate | Meta Lead Forms 50% | Google Search 40% | LinkedIn 10% | — | $2,500 | Cost Per Lead | 2-4 months |
| Healthcare | Google Search 55% | Meta 20% | Microsoft 10% | YouTube/Display 15% | $4,000 | Cost Per Patient | 2-5 months |
| Finance/Fintech | Google Search 40-50% | LinkedIn 20-30% | Meta 15% | YouTube/Display 10% | $8,000 | CAC, LTV:CAC | 4-8 months |
| Agency (Own) | LinkedIn 50% | Meta 30% | Google 20% | — | $1,500 | Cost Per Lead | 1-3 months |
| B2C / DTC | Meta 50% | Google 20% | TikTok 30% | — | $2,000 | ROAS, CAC | 1-3 months |
Budget Distribution Rule: 70/20/10
70% → Proven performers (campaigns with established positive ROAS/CPA)
20% → Promising growth (campaigns showing traction, need scale)
10% → Experiments (new platforms, audiences, formats)Scaling Decision Tree
20% Rule (Scale Up)
IF actual_CPA < target_CPA by > 10%
AND conversions_last_7d >= learning_threshold
AND campaign NOT in learning phase
THEN increase budget by 20%
→ Wait 3-5 days before next increase
→ Never increase more than 20% at once on Meta (triggers learning reset)3× Kill Rule (Pause)
IF spend > 3× target_CPA
AND conversions == 0
THEN pause ad/ad set/campaign immediately
→ Review: creative, targeting, landing page, tracking
→ Don't restart without changesDecreasing Returns Detection
IF CPA increased > 15% after last budget increase
THEN roll back to previous budget level
→ Wait 7 days
→ Try horizontal scaling instead (new audiences, platforms)Saturation Signals
| Platform | Signal | Threshold | Action |
|---|---|---|---|
| Impression Share | >80% | Diminishing returns; diversify | |
| Meta | Frequency (7-day) | >4.0 | Audience exhausted; refresh creative or expand |
| TikTok | Frequency | >3.0 | Creative fatigue; replace assets |
| Audience penetration | >50% | Audience exhausted; expand targeting |
Marketing Efficiency Ratio (MER)
MER = Total Revenue / Total Ad Spend (all platforms combined)| Business Type | Healthy MER | Excellent MER | Danger Zone |
|---|---|---|---|
| E-commerce | 3.0-5.0 | >5.0 | <2.0 |
| SaaS | Use LTV:CAC (3:1 target) | >4:1 | <2:1 |
| Lead Gen | Revenue/Lead × CVR / CPL | — | <1.5 |
Why MER over ROAS:
- ROAS is platform-reported (overclaims by 20-40%)
- MER captures true business economics
- Cross-platform; not inflated by attribution overlap
Seasonality Adjustments
Q4 (October-December)
- CPMs increase 30-50%
- Reduce ROAS targets by 20%
- Front-load creative testing in September
- Increase budgets 40-60% for Black Friday / Cyber Monday
- Meta: Advantage+ Sales performs best during peaks
Q1 (January-March)
- CPMs decrease 20-30% post-holiday
- Best time for new campaign testing
- Aggressive customer acquisition (lower competition)
- Meta Jan 2026 CPC: $0.85 (24% below prior January)
Q2 (April-June)
- Steady CPMs, good testing window
- Mother's Day / Father's Day spikes for retail
Q3 (July-September)
- LinkedIn CPC peaks in Q3 ($15.72 average)
- Back-to-school surge for education
- Good time to build retargeting pools for Q4
Incrementality Testing (Geo-Lift)
Setup
- Duration: 2-4 weeks minimum
- Holdout: 10% of geographic regions (matched pairs)
- Method: Compare conversion rates exposed vs holdout
- Statistical significance: p < 0.05
Tools
- Meta: Robyn (R-based, open source) — best for ~80% of orgs
- Google: Meridian (Python, Bayesian, geo-level)
- Advanced: PyMC-Marketing (fully customizable)
- Budget: Significant — allocate 10% of monthly spend for testing
Post-Purchase Surveys
- Fill ~30% of attribution gap that digital tracking misses
- Question: "How did you first hear about us?"
- Implement on order confirmation page
- Weight responses against platform-reported data
Minimum Viable Budgets
| Platform | Minimum Monthly | Rationale |
|---|---|---|
| Google Ads | $1,000 | 15+ conv/month minimum for Smart Bidding |
| Meta Ads | $600-$800 | 50 conv/week/ad set × $CPA |
| LinkedIn Ads | $3,000 | High CPCs; $10/day minimum × multiple campaigns |
| TikTok Ads | $300 | $50/day campaign min × creative testing needs |
| Microsoft Ads | $200-$300 | 20-30% of Google budget |
Cross-Platform Attribution Hierarchy
Source of Truth (best → worst):
1. CRM Data (actual revenue, closed deals, LTV)
2. MER (total revenue / total ad spend)
3. Post-Purchase Surveys ("How did you hear about us?")
4. Google Analytics 4 (cross-channel, multi-touch)
5. Platform-Reported Data (always overclaims 20-40%)
RULE: Never trust platform-reported ROAS alone.
Always cross-reference with ≥2 other data sources.Advertising Compliance & Privacy Reference
<!-- Updated: 2026-02-10 --> <!-- Sources: Claude Research, Gemini Research -->
Google Ads Policies
Enforcement System: Three-Strike Policy
| Strike | Consequence | Duration |
|---|---|---|
| Strike 1 | 90-day probation | Warning period |
| Strike 2 | 90-day restriction | Limited functionality |
| Strike 3 | Permanent suspension | Account terminated |
Prohibited Content (Immediate Disapproval)
- Counterfeit goods
- Dangerous products or services
- Dishonest behavior enablement
- Inappropriate content (hate speech, violence, shocking content)
Restricted Categories (Certification Required)
| Category | Requirement |
|---|---|
| Online pharmacies | Google certification + LegitScript |
| Telemedicine | Platform certification |
| Health insurance | Certification in applicable regions |
| Gambling | State/country-specific licensing |
| Political ads | Identity verification + disclosures |
| Cryptocurrency | Certification required |
| Financial services | Clear APR/fee/terms disclosures |
| Alcohol | Age-gating + regional restrictions |
| Adult content | Age restriction + limited placements |
Common Disapprovals
- Misleading claims (superlatives without evidence)
- Missing landing page content (404s, under construction)
- Destination mismatch (ad promise ≠ landing page)
- Prohibited content in ad text
- Trademark infringement
- Restricted healthcare claims
Recommendations Tab — What to Accept/Reject
Safe to accept:
- Optimized ad rotation
- Relevant extensions
- Fix disapproved ads
Usually reject:
- "Raise your budget"
- "Add broad match keywords"
- "Add new keywords" (auto-suggested)
- Auto-created RSAs
- Bidding strategy switches
- Turn off Optimization Score auto-apply
---
Meta Ads Policies
Special Ad Categories (Restricted Targeting)
| Category | Restrictions |
|---|---|
| Housing | No ZIP code, age must be 18-65+, no lookalike |
| Employment | Same restrictions as Housing |
| Credit | Same restrictions as Housing |
| Financial Products | New Jan 2025 — enforced as Special Category |
All Special Ad Categories:
- Cannot target by age (18-65+ only range)
- Cannot target by ZIP code / postal code
- Cannot use Lookalike Audiences
- Must declare category before campaign creation
Enforcement Scale
- Over 1.3 billion ads rejected or removed in 2024
- Account restrictions escalate with repeated violations
- Appeal process available but slow
Detailed Targeting Exclusions (Removed)
- Removed from new ad sets: March 31, 2025
- Removed from boosted posts: June 10, 2025
- Existing campaigns with old exclusions stopped: January 15, 2026
- Meta cites 22.6% lower median cost per conversion without exclusions
Content Rules
- No misleading health/weight loss claims
- Before/after images: heavily restricted
- Cryptocurrency: certification required
- Political ads: "Paid for by" disclosure required
- Personal attributes: cannot imply user has specific condition
- Sensational content: no clickbait tactics
---
LinkedIn Ads Policies
Restricted Industries
- Gambling and betting
- Tobacco and related products
- Weapons and ammunition
- Adult content
- Multi-level marketing
- Cryptocurrency (restricted, not prohibited)
Professional Standards
- B2B focus expected; casual/misleading content penalized
- Thought Leader Ads must come from genuine employees
- Lead Gen Forms must have clear privacy policy
- Job postings must comply with employment laws
---
TikTok Ads Policies
Platform Requirements
- Content must feel native (not overly polished/corporate)
- Audio required (TikTok is sound-on)
- Must comply with music licensing for commercial use
- Creator content (Spark Ads) requires creator approval
Restricted Categories
- Age-restricted products (alcohol, gambling): geo-gated
- Health claims: evidence required
- Financial products: risk disclosures required
- Political ads: banned in many markets
TikTok Shop Policies
- Products must meet marketplace standards
- No counterfeit or restricted goods
- Seller verification required
- Available in 11 countries (US, UK, key Asian/European markets)
---
Microsoft Ads Policies
Import Considerations
- Google Ads policy approvals don't transfer
- Microsoft has separate review process
- Some Google-approved ads may be disapproved on Microsoft
- Bing audience skews older/more conservative — creative should match
Copilot Placement Policies
- Ads in Copilot must be clearly labeled
- Copilot Checkout (Jan 2026): commerce within conversations
- Higher quality standards for conversational context
---
Privacy Regulations (February 2026)
Global Privacy Landscape
| Regulation | Region | Status | Key Requirement |
|---|---|---|---|
| GDPR | EU/EEA | Active | Consent before tracking; data minimization |
| UK GDPR | UK | Active | Similar to EU GDPR |
| CCPA/CPRA | California | Active | Right to opt out; mandatory audits |
| 20 State Laws | US (various) | Active Jan 2026 | Indiana, Kentucky, Rhode Island newest |
| LGPD | Brazil | Active | Consent and transparency |
| PIPL | China | Active | Consent and data localization |
Key Privacy Facts (2026)
Privacy Sandbox is DEAD:
- Google officially retired October 2025
- Third-party cookies remain in Chrome (~67% browser share)
- Safari and Firefox already block third-party cookies
- No separate consent prompt coming
iOS App Tracking Transparency (ATT):
- Average opt-in rate: ~35% (Q2 2025, up from 29% in 2022)
- Gaming highest: 37-50%
- Education lowest: 7-14%
- Apps with <30% opt-in lose 58% of ad revenue on average
Consent Mode v2 (Mandatory for EU/EEA):
- Enforcement tightened July 2025
- Without: 90-95% metric drops
- Advanced mode recovers 30-50% of lost conversions
- ~31% of users globally accept tracking cookies
US State Privacy:
- 20 state laws active by January 2026
- Texas AG: $1.4 billion settlement for tracking violations
- California CPPA: mandatory cybersecurity audits + data processing risk assessments
- Server-side tracking now architecturally necessary for compliance
Compliance Decision Tree
IF serving_region INCLUDES "EU/EEA":
→ Consent Mode v2 = MANDATORY
→ Cookie consent banner = MANDATORY
→ Data Processing Agreement = MANDATORY
→ Enhanced Conversions with consent = RECOMMENDED
IF serving_region INCLUDES "California":
→ CCPA/CPRA compliance = MANDATORY
→ "Do Not Sell" link = MANDATORY
→ Data processing risk assessment = MANDATORY (2026)
IF serving_region INCLUDES any US state:
→ Check specific state law requirements
→ 20 states have active laws as of Jan 2026
FOR ALL REGIONS:
→ Server-side tracking = RECOMMENDED (bypasses most client-side issues)
→ First-party data strategy = ESSENTIAL
→ Privacy policy on landing pages = MANDATORYHealthcare-Specific Compliance
| Rule | Enforcement |
|---|---|
| No remarketing/retargeting for health services | Google policy — account suspension risk |
| No targeting by health conditions | Google, Meta, all platforms |
| Online pharmacy certification | Google: LegitScript required |
| Telemedicine certification | Google: platform certification |
| HIPAA considerations | US: no PHI in tracking pixels |
| Use contextual targeting | Instead of audience targeting |
Financial Services Compliance
| Rule | Enforcement |
|---|---|
| Clear APR/fee/terms disclosures | Google, Meta — ad disapproval |
| Lending certification | Google — account level |
| Crypto certification | Google — account level |
| Risk disclosures | All platforms |
| Financial Products Special Category | Meta (Jan 2025) — restricted targeting |
| No misleading income claims | All platforms — account suspension |
Conversion Tracking Setup & Requirements
<!-- Updated: 2026-02-10 --> <!-- Sources: Google Research PDF 2, Claude Research, Gemini Research -->
Google Ads Conversion Tracking
Required Stack
1. Global Site Tag (gtag.js) → all pages
2. Enhanced Conversions → hashed first-party data (email, phone, address, name)
3. Consent Mode v2 → MANDATORY for EU/EEA since March 2024
4. Server-Side GTM → recommended for data durability
5. Offline Conversion Import → for lead gen (CRM → Google Ads)Enhanced Conversions
- Sends SHA-256 hashed first-party data
- Improves measurement by ~10% more measured conversions
- Required for smart bidding accuracy in cookie-degraded environments
- Setup via gtag.js or Google Tag Manager
- Works alongside standard conversion tracking
Consent Mode v2
// Default (before consent)
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied'
});
// After user grants consent
gtag('consent', 'update', {
'ad_storage': 'granted',
'ad_user_data': 'granted',
'ad_personalization': 'granted',
'analytics_storage': 'granted'
});- Enables conversion modeling for unconsented users
- Advanced mode recovers 30-50% of lost conversions
- Without implementation: 90-95% metric drops (enforcement tightened July 2025)
- ~31% of users accept tracking cookies globally
Attribution
- DDA (Data-Driven Attribution) is now MANDATORY default (September 2025)
- Only two models remain: DDA and Last Click
- All rule-based models deprecated (first-click, linear, time decay, position-based)
- No minimum data threshold for DDA
- Windows: Click 1/3/7/30(default)/60/90 days; Engaged-view 3d; View-through 1d
Customer Match
- Requires 90 days of account history and $50,000+ lifetime spend for full access
- Maximum membership duration: 540 days (changed April 7, 2025; previously infinite)
- Use for RLSA, similar audiences, and Customer Match lists
- First-party data source: CRM emails, phone numbers, addresses
Conversion Setup Rules
- Use Google Ads native tracking as PRIMARY for bidding (real-time data)
- Import GA4 conversions for observation only
- Never count both (double-counting)
- Separate micro (AddToCart, TimeOnSite) from macro (Purchase, Lead) conversions
- Only macro conversions as "Primary" for bidding optimization
---
Meta Ads Conversion Tracking
Required Stack
1. Meta Pixel → base code on all pages + standard events
2. Conversions API (CAPI) → server-side event forwarding
3. Event Deduplication → event_id matching between Pixel and CAPI
4. EMQ Optimization → pass email, phone, fbp, fbc, external_idEvent Match Quality (EMQ) Scoring
| Score | Rating | Action |
|---|---|---|
| <4.0 | Critical | Severe data loss; urgent fix needed |
| 4.0-5.9 | Warning | Significant signal gaps |
| 6.0-7.9 | Acceptable | Some optimization possible |
| 8.0-10.0 | Excellent | Maximum signal strength |
Key parameters by impact:
- Email: +4.0 points
- Phone: +3.0 points
- External ID: significant
- fbp (browser ID): important
- fbc (click ID): important
87% of advertisers have poor EMQ — fixing it improves performance 20-40%.
Event Deduplication
Same event_id + same event_name = deduplicated (correct)
Missing event_id = potential double-counting (broken)
Check: Events Manager > Overview > Deduplication Rate
Target: 90%+ deduplication rateCAPI Performance Impact
- Without CAPI: 30-40% data loss post-iOS 14.5 (pixel-only tracking is critically insufficient)
- With CAPI: 15-20% performance increase over pixel-only
- Bypasses ad blockers and iOS ATT limitations
- 87% of advertisers have poor Event Match Quality — fixing CAPI improves performance 20-40%
- Offline Conversions API deprecated May 2025 → CAPI replaces
Standard Events (Use These, Not Custom)
Purchase, AddToCart, InitiateCheckout, AddPaymentInfo,
Lead, CompleteRegistration, Subscribe, ViewContent,
Search, AddToWishlist, Contact, CustomizeProduct,
FindLocation, Schedule, StartTrial, SubmitApplicationAttribution
- 7-day click / 1-day view (default and recommended)
- Top 8 events configured in AEM (Aggregated Event Measurement)
- Domain verification required in Business Manager
- Financial Products & Services = new Special Ad Category (Jan 2025)
---
TikTok Ads Conversion Tracking
Required Stack
1. TikTok Pixel → base code + standard events on all pages
2. Events API → server-side event forwarding
3. ttclid Passback → capture from URL params, send with events
4. Advanced Matching → hashed email/phoneKey Difference: ttclid
- TikTok Click ID (ttclid) comes in landing page URL parameters
- MUST be captured and stored on first page load
- MUST be sent back with all conversion events
- Without ttclid: attribution breaks for many conversions
Learning Phase
- ~50 conversions in 7 days to exit learning
- Budget ≥50× target CPA per ad group (provides sufficient learning room)
---
LinkedIn Ads Conversion Tracking
Required Stack
1. LinkedIn Insight Tag → all pages
2. Conversions API (CAPI) → server-side events (launched 2025)
3. Offline Conversion Import → CRM data (opportunity, deal closed)Best Practice: Track Full Funnel
Stage 1: Lead (form submit, content download)
Stage 2: MQL (marketing qualified)
Stage 3: SQL (sales qualified)
Stage 4: Opportunity Created
Stage 5: Deal Closed-Won- Import offline conversions within 90 days of click
- Use for lead quality optimization (bid for SQLs not just leads)
- Lead Gen Forms: 13% CVR (3.25× landing pages) but lower SQL rates
Attribution
- 30-day click / 7-day view window
- Last touch model default
---
Microsoft Ads Conversion Tracking
Required Stack
1. UET (Universal Event Tracking) tag → all pages
2. Enhanced Conversions → improved matching
3. Offline Conversion Import → CRM integration
4. Auto-tagging (MSCLKID) → ensure CMS doesn't stripImport Validation
- If importing from Google: verify conversion goals transferred
- Google-imported goals often break during import
- Always validate conversion tracking after import
---
Cross-Platform Tracking Health Audit
Critical Checks (Run for All Platforms)
| Check | Severity | Pass Criteria |
|---|---|---|
| Primary conversion action exists | Critical | ≥1 active conversion per platform |
| Server-side tracking active | Critical | CAPI/Server GTM/Events API configured |
| Event deduplication | Critical | event_id matching (Meta), no double-counting |
| Consent Mode v2 (EU) | Critical | Implemented if serving EU/EEA |
| Enhanced Conversions / EMQ | High | Google: enabled; Meta: EMQ ≥6.0 |
| Micro vs macro separation | High | Only macro conversions set as Primary |
| Attribution model appropriate | Medium | DDA (Google), 7d/1d (Meta) |
| Conversion window matches cycle | Medium | 7d (ecom), 30-90d (B2B), 30d (lead gen) |
| Offline conversion import | Medium | Active for lead gen / B2B accounts |
| First-party data utilization | High | Customer Match / Custom Audiences from CRM |
Server-Side Tracking Priority
IF business_type IN [ecommerce, lead_gen, saas]:
server_side_tracking = CRITICAL
IF platform == "Meta":
CAPI = CRITICAL (30-40% data loss without post-iOS 14.5)
IF region == "EU/EEA":
consent_mode_v2 = CRITICAL (90-95% metric drops without)
server_side_recovery = 10-30% accuracy improvementGoogle Ads Audit Checklist
<!-- Updated: 2026-02-11 --> <!-- Sources: Google Research PDF 1 (G01-G61), Claude Research (74-item extended), Gemini Research --> <!-- Total Checks: 74 | Categories: 7 | See scoring-system.md for weights and algorithm -->
Quick Reference
| Category | Weight | Check Count |
|---|---|---|
| Conversion Tracking | 25% | G42-G49 (8 checks) + G-CT1 through G-CT3 (3 extended) |
| Wasted Spend / Negatives | 20% | G13-G19 (7 checks) + G-WS1 (1 extended) |
| Account Structure | 15% | G01-G12 (12 checks) |
| Keywords & Quality Score | 15% | G20-G25 (6 checks) + G-KW1, G-KW2 (2 extended) |
| Ads & Assets | 15% | G26-G35 (10 checks) + G-AD1, G-AD2 (2 extended) |
| Settings & Targeting | 10% | G50-G61 (12 checks) |
| Performance Max | — | G-PM1 through G-PM5 (5 checks, scored within Ads & Assets) |
---
Conversion Tracking (25% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| G42 | Conversion actions defined | Critical | ≥1 primary conversion action configured | — | No active conversion actions |
| G43 | Enhanced conversions enabled | Critical | Enhanced conversions active for primary conversions | Enabled but not verified | Not enabled |
| G44 | Server-side tracking | High | Server-side GTM or Google Ads API conversion import active | Planned but not deployed | No server-side tracking |
| G45 | Consent Mode v2 (EU/EEA) | Critical | Consent Mode v2 implemented with Advanced mode | Basic mode only | Not implemented (if serving EU/EEA) |
| G46 | Conversion window appropriate | Medium | Window matches sales cycle (7d ecom, 30-90d B2B, 30d lead gen) | Default 30d without validation | Window mismatched to sales cycle |
| G47 | Micro vs macro separation | High | Only macro conversions (Purchase, Lead) set as "Primary" for bidding | Some micro events as Primary | All events including micro (AddToCart, TimeOnSite) as Primary |
| G48 | Attribution model | Medium | Data-driven attribution (DDA) selected | Last Click (intentional) | Rule-based model still active (deprecated Sep 2025) |
| G49 | Conversion value assignment | High | Dynamic values for ecom; value rules for lead gen | Static values assigned | No conversion values |
| G-CT1 | No duplicate counting | Critical | GA4 + Google Ads not double-counting same conversion | — | Both GA4 import and native tag counting same action |
| G-CT2 | GA4 linked and flowing | High | GA4 property linked, data flowing correctly | Linked but data discrepancies | Not linked |
| G-CT3 | Google Tag firing | Critical | gtag.js or GTM firing correctly on all pages | Firing on most pages (>90%) | Tag missing or broken on key pages |
---
Wasted Spend / Negatives (20% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| G13 | Search term audit recency | Critical | Search terms reviewed within last 14 days | Reviewed within 30 days | Not reviewed in >30 days |
| G14 | Negative keyword lists exist | Critical | ≥3 theme-based lists (Competitor, Jobs, Free, Irrelevant) | 1-2 lists exist | No negative keyword lists |
| G15 | Account-level negatives applied | High | Negative lists applied at account or all-campaign level | Applied to some campaigns only | Not applied |
| G16 | Wasted spend on irrelevant terms | Critical | <5% of spend on irrelevant search terms (last 30d) | 5-15% on irrelevant terms | >15% on irrelevant terms |
| G17 | Broad match + smart bidding pairing | Critical | No Broad Match keywords running on Manual CPC | — | Broad Match + Manual CPC active |
| G18 | Close variant pollution | High | Exact/Phrase match not triggering irrelevant close variants | Minor close variant issues | Significant irrelevant close variant spend |
| G19 | Search term visibility | Medium | >60% of search term spend is visible (not hidden) | 40-60% visible | <40% visible |
| G-WS1 | Zero-conversion keywords | High | No keywords with >100 clicks and 0 conversions | 1-3 such keywords | >3 keywords with >100 clicks, 0 conversions |
---
Account Structure (15% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| G01 | Campaign naming convention | Medium | Consistent pattern (e.g., [Brand]_[Type]_[Geo]_[Target]) | Partially consistent | No naming convention |
| G02 | Ad group naming convention | Medium | Matches campaign naming pattern | Partially consistent | No naming convention |
| G03 | Single theme ad groups | High | Each ad group targets 1 keyword theme (≤10 keywords) | 11-20 keywords with consistent theme | Ad groups with 20+ unrelated keywords (theme drift) |
| G04 | Campaign count per objective | High | ≤5 campaigns per funnel stage/objective | 6-8 campaigns per objective | >8 campaigns per objective (fragmented) |
| G05 | Brand vs Non-Brand separation | Critical | Brand and non-brand in separate campaigns | — | Brand and non-brand mixed in same campaign |
| G06 | PMax present for eligible accounts | Medium | PMax active for accounts with conversion history | PMax tested but paused | No PMax tested despite eligibility |
| G07 | Search + PMax overlap | High | Brand exclusions configured in PMax when Search brand campaign exists | Partial brand exclusions | No brand exclusions in PMax alongside brand Search |
| G08 | Budget allocation matches priority | High | Top-performing campaigns not budget-limited | Minor budget constraints on top performers | Top performers severely budget-limited |
| G09 | Campaign daily budget vs spend | Medium | No campaigns hitting budget cap before 6PM | 1-2 campaigns hitting cap early | Multiple campaigns capped before noon |
| G10 | Ad schedule configured | Low | Ad schedule set if business has operating hours | — | No schedule despite clear business hours |
| G11 | Geographic targeting accuracy | High | "People in" (not "People in or interested in") for local | — | "People in or interested in" for local business |
| G12 | Network settings | High | Search Partners and Display Network disabled for Search (unless intentional) | Search Partners ON (monitored) | Display Network ON for Search campaign |
---
Keywords & Quality Score (15% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| G20 | Average Quality Score | High | Account-wide impression-weighted QS ≥7 | QS 5-6 | QS ≤4 |
| G21 | Critical QS keywords | Critical | <10% of keywords with QS ≤3 | 10-25% with QS ≤3 | >25% with QS ≤4 |
| G22 | Expected CTR component | High | <20% of keywords with "Below Average" expected CTR | 20-35% Below Average | >35% Below Average |
| G23 | Ad relevance component | High | <20% of keywords with "Below Average" ad relevance | 20-35% Below Average | >35% Below Average |
| G24 | Landing page experience | High | <15% of keywords with "Below Average" landing page exp. | 15-30% Below Average | >30% Below Average |
| G25 | Top keyword QS | Medium | Top 20 spend keywords all have QS ≥7 | Some top keywords at QS 5-6 | Top keywords with QS ≤4 |
| G-KW1 | Zero-impression keywords | Medium | No keywords with 0 impressions in last 30 days | <10% zero-impression | >10% of keywords with 0 impressions |
| G-KW2 | Keyword-to-ad relevance | High | Headlines contain primary keyword variants | Partial keyword inclusion | No keyword variants in ad headlines |
---
Ads & Assets (15% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| G26 | RSA per ad group | High | ≥1 RSA per ad group (≥2 recommended) | 1 RSA per ad group | Ad groups without any RSA |
| G27 | RSA headline count | High | ≥8 unique headlines per RSA (ideal: 12-15) | 3-7 headlines | <3 headlines |
| G28 | RSA description count | Medium | ≥3 descriptions per RSA (ideal: 4) | 2 descriptions | <2 descriptions |
| G29 | RSA Ad Strength | High | All RSAs "Good" or "Excellent" | Some "Average" | Any RSA with "Poor" Ad Strength |
| G30 | RSA pinning strategy | Medium | Strategic pinning (1-2 positions, 2-3 variants each) | Over-pinned (all positions) | — |
| G31 | PMax asset group density | Critical | ≥20 images, ≥5 logos, ≥5 videos per group (maximum density) | 5-19 images, 1-4 logos, or 1-4 videos | <5 images OR 0 logos OR 0 video |
| G32 | PMax video assets present | High | Native video in all formats (16:9, 1:1, 9:16) | 1-2 formats only | No native video (auto-generated only) |
| G33 | PMax asset group count | Medium | ≥2 asset groups per PMax (intent-segmented) | 1 asset group | — |
| G34 | PMax final URL expansion | High | Configured intentionally (ON for discovery, OFF for control) | — | Default ON without review |
| G35 | Ad copy relevance to keywords | High | Headlines contain primary keyword variants | Partial keyword inclusion | No keyword relevance in headlines |
| G-AD1 | Ad freshness | Medium | New ad copy tested within last 90 days | — | No new ads in >90 days |
| G-AD2 | CTR vs industry benchmark | High | CTR ≥ industry average | CTR 50-100% of industry average | CTR <50% of industry average |
---
Settings & Targeting (10% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| G50 | Sitelink extensions | High | ≥4 sitelinks per campaign | 1-3 sitelinks | No sitelinks |
| G51 | Callout extensions | Medium | ≥4 callouts per campaign | 1-3 callouts | No callouts |
| G52 | Structured snippets | Medium | ≥1 structured snippet set | — | No structured snippets |
| G53 | Image extensions | Medium | Image extensions active for search campaigns | — | No image extensions |
| G54 | Call extensions (if applicable) | Medium | Call extensions with call tracking for phone-based businesses | Call extension without tracking | No call extension for phone-based business |
| G55 | Lead form extensions | Low | Lead form tested for lead gen accounts | — | Not tested |
| G56 | Audience segments applied | High | Remarketing + in-market audiences in Observation mode | Some audiences applied | No audience signals |
| G57 | Customer Match lists | High | Customer Match list uploaded, refreshed <30 days | List >30 days old | No Customer Match lists |
| G58 | Placement exclusions | High | Account-level placement exclusions (games, apps, MFA sites) | Campaign-level only | No placement exclusions |
| G59 | Landing page mobile speed | High | Mobile LCP <2.5s (ideal <2.0s) | LCP 2.5-4.0s | LCP >4.0s |
| G60 | Landing page relevance | High | Landing page H1/title matches ad group theme | Partial relevance | No relevance to ad group |
| G61 | Landing page schema markup | Medium | Product/FAQ/Service schema present | — | No schema markup |
---
Performance Max Extended (scored within Ads & Assets)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| G-PM1 | Audience signals configured | High | Custom audience signals per asset group | Generic signals only | No audience signals |
| G-PM2 | PMax Ad Strength | High | "Good" or "Excellent" | "Average" | "Poor" |
| G-PM3 | Brand cannibalization | High | <15% of PMax conversions from brand terms | 15-30% from brand terms | >30% from brand terms |
| G-PM4 | Search themes | Medium | Search themes configured (up to 50 per asset group) | <5 search themes | No search themes |
| G-PM5 | Negative keywords | High | Brand + irrelevant negatives applied (up to 10,000) | Some negatives applied | No negative keywords in PMax |
---
Context Notes
- ECPC deprecation (March 2025): Enhanced CPC is no longer available for new campaigns. Existing ECPC campaigns should migrate to Target CPA, Target ROAS, or Maximize Conversions.
- Call Campaigns sunset (Feb 2026): Google stopped allowing creation of new Call campaigns in February 2026; existing Call campaigns continue serving until February 2027. Migrate to Search campaigns with call assets (call extensions, call-only ad format) before the serving deadline.
- Power Pack framework: Google recommends running PMax + Demand Gen + AI Max for Search as a unified campaign stack for maximum coverage across all inventory.
- AI Max for Search (2025): Extends broad match and automated creative to Search campaigns. Evaluate adoption if account has sufficient conversion data.
---
Bidding & Budget (scored within Settings & Targeting)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| G36 | Smart bidding strategy active | High | All campaigns with ≥15 conv/30d use automated bidding | Partially automated | Manual CPC on campaigns with sufficient data |
| G37 | Target CPA/ROAS reasonableness | Critical | Targets within 20% of historical performance | Targets 20-50% off historical | Target CPA <50% of actual CPA |
| G38 | Learning phase status | High | <25% of campaigns in "Learning" or "Learning Limited" | 25-40% in learning | >40% in learning |
| G39 | Budget constrained campaigns | High | Top performers show "Eligible" not "Limited by Budget" | Minor budget limitation | Top performers severely budget-limited |
| G40 | Manual CPC justification | Medium | Manual CPC only on campaigns with <15 conv/month | Manual CPC with 15-30 conv/month | Manual CPC with >30 conv/month |
| G41 | Portfolio bid strategies | Medium | Low-volume campaigns grouped into portfolios | — | Multiple <15 conv campaigns running independently |
---
Quick Wins (Google)
Items flagged as Quick Win when severity is Critical or High AND fix takes <15 minutes:
| Check | Fix | Time |
|---|---|---|
| G43 — Enhanced conversions | Enable in Google Ads conversion settings | 5 min |
| G11 — Location targeting | Switch to "People in" your targeted locations | 2 min |
| G14 — Negative keyword lists | Create initial themed negative lists | 10 min |
| G17 — Broad match + Manual CPC | Switch to Smart Bidding or Exact Match | 5 min |
| G12 — Network settings | Disable Display Network on Search campaigns | 2 min |
| G05 — Brand separation | Split brand keywords into separate campaign | 10 min |
| G50 — Sitelink extensions | Add 4+ sitelinks to campaigns | 10 min |
LinkedIn Ads Audit Checklist
<!-- Updated: 2026-02-11 --> <!-- Sources: Google Research PDF 1 (L01-L25), Claude Research, Gemini Research --> <!-- Total Checks: 25 | Categories: 5 | See scoring-system.md for weights and algorithm -->
Quick Reference
| Category | Weight | Check Count |
|---|---|---|
| Technical Setup | 25% | L01-L02 (2 checks) |
| Audience Quality | 25% | L03-L09 (7 checks) |
| Creative & Formats | 20% | L10-L13 (4 checks) |
| Lead Gen Forms | 15% | L14-L15 (2 checks) |
| Bidding & Budget | 15% | L16-L17 (2 checks) |
| Structure & Performance | — | L18-L25 (8 checks, scored across categories) |
---
Technical Setup (25% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| L01 | Insight Tag installed | Critical | LinkedIn Insight Tag firing on all pages | Firing on most pages (>90%) | Tag not installed or broken |
| L02 | Conversions API (CAPI) | High | Server-side conversion tracking active (launched 2025) | Planned but not deployed | No server-side tracking |
---
Audience Quality (25% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| L03 | Job title targeting precision | High | Specific job titles matching ICP (not just functions) | Broad function targeting only | No job title targeting |
| L04 | Company size filtering | Medium | Company size matches ICP | Includes all sizes | — |
| L05 | Seniority level targeting | High | Seniority appropriate for offer (C-suite for enterprise, Manager for mid-market) | Broad seniority targeting | Mismatched seniority level |
| L06 | Matched Audiences | High | Website retargeting + contact list audiences active | One type active | No matched audiences |
| L07 | ABM company lists | Medium | Target company lists uploaded (up to 300,000) for ABM | Partial list uploaded | No ABM lists for enterprise campaigns |
| L08 | Audience expansion setting | Medium | OFF for precise targeting, ON for scale (intentional) | — | Default ON without review |
| L09 | Predictive audiences | Medium | Predictive audiences tested (replaced Lookalikes Feb 2024) | — | Not tested for eligible campaigns |
---
Creative & Formats (20% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| L10 | Thought Leader Ads (TLAs) | High | TLAs active, receiving ≥30% of budget for B2B | TLAs tested but <30% budget | No TLAs (CPC $2.29-4.14 vs $13.23 standard) |
| L11 | Ad format diversity | High | ≥2 formats tested (single image, video, document, carousel) | 1 format only | — |
| L12 | Video ads present | Medium | Video ads tested | — | No video tested |
| L13 | Creative refresh cadence | Medium | Creative refreshed every 4-6 weeks | Refreshed every 6-10 weeks | Same creative >10 weeks |
---
Lead Gen Forms (15% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| L14 | Lead Gen Form optimization | High | ≤5 fields (reduce friction); 13% CVR benchmark | 6-8 fields | >8 fields (high friction) |
| L15 | Lead Gen Form CRM integration | High | Form synced to CRM in real-time | Synced within 24hrs | Manual CSV download only |
---
Bidding & Budget (15% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| L16 | Bid strategy appropriate | High | CPS for Message Ads; Maximum Delivery or Manual for Sponsored Content | — | Manual CPC without experience to manage |
| L17 | Budget sufficiency | High | Daily budget ≥$50 for Sponsored Content | $25-$50/day | <$25/day ($10 minimum, insufficient for learning) |
---
Structure & Performance (scored across categories)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| L18 | Campaign objective alignment | High | Objective matches funnel stage | — | Objective mismatched to goal |
| L19 | A/B testing active | Medium | Active A/B test on creative or audience | Test planned | No testing |
| L20 | Frequency monitoring | High | Message frequency ≤1 per 30-45 days per user | 1 per 20-30 days | >1 per 20 days (inbox fatigue) |
| L21 | CTR benchmark | High | Sponsored Content CTR ≥0.44% | CTR 0.30-0.44% | CTR <0.30% |
| L22 | CPC benchmark | Medium | CPC within industry benchmark ($5-7 avg, senior $6.40+) | CPC 20-50% above benchmark | CPC >50% above benchmark |
| L23 | Lead quality tracking | High | Lead-to-opportunity rate tracked (not just CPL) | CPL tracked only | No lead quality metrics |
| L24 | Conversion tracking attribution | Medium | 30-day click / 7-day view window configured | Default window without review | Attribution not configured |
| L25 | Demographics report review | Medium | Job title and company breakdown reviewed monthly | Reviewed quarterly | Never reviewed |
---
Quick Wins (LinkedIn)
| Check | Fix | Time |
|---|---|---|
| L01 — Insight Tag | Install/verify Insight Tag on all pages | 10 min |
| L10 — Thought Leader Ads | Create TLA using employee organic posts | 10 min |
| L14 — Lead Gen Form fields | Reduce form to ≤5 fields | 5 min |
| L08 — Audience expansion | Review and set intentionally (OFF for precision) | 2 min |
| L20 — Message frequency | Set frequency cap to 1 per 30-45 days | 2 min |
| L24 — Attribution window | Configure 30-day click / 7-day view | 2 min |
---
Context Notes
- Connected TV Ads (2025): LinkedIn extended reach to CTV inventory via partnerships, allowing B2B brand campaigns on streaming platforms.
- BrandLink (2025): Premium video placement alongside trusted publisher content on LinkedIn. Ideal for awareness-stage B2B campaigns.
- Live Event Ads (2025): Sponsored LinkedIn Live events with built-in registration and reminder flows. Effective for webinar-driven lead gen.
- Accelerate campaigns: LinkedIn's AI-optimized campaign type delivers 42% lower CPA and 21% lower CPL on average. Recommended for advertisers with sufficient conversion history.
---
LinkedIn-Specific Context
| Fact | Value |
|---|---|
| Minimum audience for delivery | 500 members |
| Recommended audience size | 50,000-300,000 |
| Predictive Audiences seed | 300+ members |
| Company list upload limit | 300,000 |
| Lookalike audiences | Discontinued Feb 29, 2024 |
| Lead Gen Form CVR benchmark | 13% (3.25x landing pages) |
| B2B ROAS benchmark | 113% ($1.13 per $1 spent) |
| Accelerate campaigns | 42% lower CPA, 21% lower CPL |
| TLA CPC advantage | $2.29-4.14 vs $13.23 standard |
| Campaign hierarchy (Oct 2025) | "Campaign Groups" → "Campaigns"; "Campaigns" → "Ad Sets" |
Meta Ads Audit Checklist
<!-- Updated: 2026-02-11 --> <!-- Sources: Google Research PDF 1 (M01-M40), Claude Research (42-item extended), Gemini Research --> <!-- Total Checks: 46 | Categories: 4 | See scoring-system.md for weights and algorithm -->
Quick Reference
| Category | Weight | Check Count |
|---|---|---|
| Pixel / CAPI Health | 30% | M01-M10 (10 checks) |
| Creative (Diversity & Fatigue) | 30% | M25-M32 (8 checks) + M-CR1 through M-CR4 (4 extended) |
| Account Structure | 20% | M11-M18 + M33-M40 (16 checks) + M-ST1, M-ST2 (2 extended) |
| Audience & Targeting | 20% | M19-M24 (6 checks) |
---
Pixel / CAPI Health (30% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| M01 | Meta Pixel installed | Critical | Pixel firing on all pages | Firing on most pages (>90%) | Pixel not firing |
| M02 | Conversions API (CAPI) active | Critical | Server-side events sending alongside pixel | CAPI planned but not deployed | No CAPI (30-40% data loss post-iOS 14.5) |
| M03 | Event deduplication | Critical | event_id matching between pixel and CAPI events; ≥90% dedup rate | event_id present but <90% dedup rate | Missing event_id (double-counting) |
| M04 | Event Match Quality (EMQ) | Critical | EMQ ≥8.0 for Purchase event | EMQ 6.0-7.9 | EMQ <6.0 |
| M05 | Domain verification | High | Business domain verified in Business Manager | — | Domain not verified |
| M06 | Aggregated Event Measurement (AEM) | High | Top 8 events configured and prioritized correctly | Events configured but not prioritized | AEM not configured |
| M07 | Standard events vs custom | High | Using standard events (Purchase, AddToCart, Lead, etc.) | Mix of standard and custom | Custom events replacing standard events |
| M08 | CAPI Gateway | Medium | CAPI Gateway deployed for simplified server-side | Direct CAPI integration active | — |
| M09 | iOS attribution window | High | 7-day click / 1-day view configured | 1-day click only | Attribution not configured |
| M10 | Data freshness | Medium | Events firing in real-time (no >1hr lag in Events Manager) | <4hr lag | >4hr lag or intermittent firing |
---
Creative — Diversity & Fatigue (30% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| M25 | Creative format diversity | Critical | ≥3 formats active (static image, video, carousel) | 2 formats | Only 1 format used |
| M26 | Creative volume per ad set | High | ≥5 creatives per ad set (ideal: 5-8 for Andromeda) | 3-4 creatives | <3 creatives per ad set |
| M27 | Video aspect ratios | High | 9:16 vertical video present for Reels/Stories | Only 1:1 or 4:5 video | No video assets |
| M28 | Creative fatigue detection | Critical | No creatives with CTR drop >20% over 14 days while active | CTR drop 10-20% | CTR drop >20% + frequency >3 (fatigue confirmed) |
| M29 | Hook rate (video) | High | Video ads: <50% skip rate in first 3 seconds | 50-70% skip rate | >70% skip rate in first 3s |
| M30 | Social proof utilization | Medium | Top organic posts boosted as partnership/Spark ads | Some organic boosting | No organic content leveraged |
| M31 | UGC / social-native content | High | ≥30% of creative assets are UGC or social-native | 10-30% UGC content | <10% UGC (all polished/corporate) |
| M32 | Advantage+ Creative | Medium | Advantage+ enhancements enabled (test vs control) | — | Not tested |
| M-CR1 | Creative freshness | High | New creative tested within last 30 days | New creative 30-60 days ago | No new creative in >60 days |
| M-CR2 | Frequency — Prospecting (ad set) | High | Ad set frequency <3.0 in last 7 days | Frequency 3.0-5.0 | Frequency >5.0 (audience exhausted) |
| M-CR3 | Frequency — Retargeting | Medium | Ad set frequency <8.0 in last 7 days | Frequency 8.0-12.0 | Frequency >12.0 |
| M-CR4 | CTR benchmark | High | CTR ≥1.0% | CTR 0.5-1.0% | CTR <0.5% |
---
Account Structure (20% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| M11 | Campaign count | High | ≤5 active campaigns per country/funnel stage | 6-8 campaigns per segment | >8 campaigns (over-fragmented) |
| M12 | CBO vs ABO appropriateness | High | CBO for >$500/day; ABO for testing <$100/day | Mismatched but functional | CBO on <$100/day OR ABO on >$500/day |
| M13 | Learning phase status | Critical | <30% of ad sets in "Learning Limited" | 30-50% Learning Limited | >50% ad sets "Learning Limited" |
| M14 | Learning phase resets | High | No unnecessary edits during learning phase | 1-2 minor resets | Frequent resets from edits during learning |
| M15 | Advantage+ Sales campaign | Medium | ASC active for e-commerce with catalog | ASC tested but paused | Not tested despite eligible catalog |
| M16 | Ad set consolidation | High | No overlapping ad sets targeting same audience | Minor overlap (<20%) | Significant audience overlap (>30%) |
| M17 | Budget distribution | High | All ad sets getting ≥$10/day | Some ad sets $5-$10/day | Ad sets getting <$5/day |
| M18 | Campaign objective alignment | High | Objective matches actual business goal | — | Objective mismatched (e.g., Traffic for Sales) |
| M33 | Advantage+ Placements | Medium | Advantage+ Placements enabled (unless exclusion needed) | Manual placements (justified) | Manual placements limiting delivery without reason |
| M34 | Placement performance review | Medium | Breakdown reviewed monthly; underperformers excluded | Reviewed quarterly | Never reviewed |
| M35 | Attribution setting | High | 7-day click / 1-day view attribution | 1-day click only | Attribution not configured |
| M36 | Bid strategy appropriateness | High | Cost Cap for margin protection; Lowest Cost for volume | — | Bid Cap set below historical CPA |
| M37 | Frequency cap monitoring (campaign) | High | Campaign-level prospecting frequency <4.0 (7-day) | Frequency 4.0-6.0 | Frequency >6.0 |
| M38 | Breakdown reporting | Medium | Age, gender, placement, platform reviewed monthly | Reviewed quarterly | Never reviewed |
| M39 | UTM parameters | Medium | UTM parameters on all ad URLs for GA4 attribution | UTMs on some ads | No UTM parameters |
| M40 | A/B testing active | Medium | At least 1 active A/B test (Experiments) | Test planned | No testing infrastructure |
| M-ST1 | Budget adequacy | High | Daily budget ≥5× target CPA per ad set | Budget 2-5× CPA | Budget <2× target CPA |
| M-ST2 | Budget utilization | Medium | >80% of daily budget being utilized | 60-80% utilization | <60% utilization |
---
Audience & Targeting (20% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| M19 | Audience overlap | High | <20% overlap between active ad sets | 20-40% overlap | >40% overlap between ad sets |
| M20 | Custom Audience freshness | High | Website Custom Audiences refreshed within 180 days | 180-365 days old | >365 days old or not created |
| M21 | Lookalike source quality | Medium | Lookalike source ≥1,000 users from high-value events | 500-1,000 users | <500 users or low-value source |
| M22 | Advantage+ Audience testing | Medium | Advantage+ Audience tested vs manual | — | Not tested |
| M23 | Exclusion audiences | High | Purchasers/converters excluded from prospecting | Partial exclusions | No purchaser exclusions from prospecting |
| M24 | First-party data utilization | High | Customer list uploaded for Custom Audience + Lookalike | List uploaded but not refreshed | No first-party data uploaded |
---
Context Notes
- Detailed targeting exclusions removal (2025-2026): Meta phased out detailed targeting exclusions starting March 2025, with full removal by January 2026. Advertisers must now use Custom Audience exclusions or Advantage+ Audience instead.
- Flexible Ads (2024): Format launched mid-2024 that automatically optimizes creative elements (headline, image, video) per placement. Evaluate adoption alongside Advantage+ Creative enhancements.
- Financial Products Special Ad Category (Jan 2025): Financial products (loans, insurance, credit cards, investment services) are now enforced as a Special Ad Category with the same targeting restrictions as Housing/Employment/Credit.
---
Quick Wins (Meta)
| Check | Fix | Time |
|---|---|---|
| M02 — CAPI setup | Deploy via CAPI Gateway (simplified) or direct integration | 15 min (Gateway) |
| M05 — Domain verification | Verify domain in Business Manager | 5 min |
| M09 — Attribution window | Set to 7-day click / 1-day view in ad set settings | 2 min |
| M23 — Exclusion audiences | Create Custom Audience of purchasers, exclude from prospecting | 10 min |
| M25 — Format diversity | Add video or carousel to single-image-only ad sets | 15 min |
| M39 — UTM parameters | Add UTM template at campaign level | 5 min |
| M35 — Attribution setting | Switch from 1-day click to 7-day click / 1-day view | 2 min |
---
Special Ad Categories Compliance
If running ads in restricted categories, these ADDITIONAL checks apply:
| Category | Requirement | Enforcement |
|---|---|---|
| Housing | No ZIP code targeting, age 18-65+ only, no Lookalike | Campaign disapproval |
| Employment | Same as Housing | Campaign disapproval |
| Credit | Same as Housing | Campaign disapproval |
| Financial Products | New Jan 2025 — enforced as Special Category | Campaign disapproval |
Must declare Special Ad Category BEFORE campaign creation. See compliance.md for full details.
Microsoft Ads Audit Checklist
<!-- Updated: 2026-02-11 --> <!-- Sources: Google Research PDF 1 (MS01-MS20), Claude Research, Gemini Research --> <!-- Total Checks: 20 | Categories: 5 | See scoring-system.md for weights and algorithm -->
Quick Reference
| Category | Weight | Check Count |
|---|---|---|
| Technical Setup | 25% | MS01-MS03 (3 checks) |
| Syndication & Bidding | 20% | MS04-MS07 (4 checks) |
| Structure & Audience | 20% | MS08-MS10 (3 checks) |
| Creative & Extensions | 20% | MS11-MS13 + MS19-MS20 (5 checks) |
| Settings & Performance | 15% | MS14-MS18 (5 checks) |
---
Technical Setup (25% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| MS01 | UET tag installed | Critical | Universal Event Tracking tag firing on all pages | Firing on most pages (>90%) | UET tag not installed or broken |
| MS02 | Enhanced conversions | High | Enhanced conversions enabled for improved matching | — | Not enabled |
| MS03 | Google Ads import validation | High | If imported: all settings verified (URLs, extensions, bids) | Minor discrepancies found | Import errors not resolved (broken URLs, missing goals) |
Import Validation Critical Note
Google Ads imports are the most common Microsoft Ads setup method. Common import issues:
- Conversion goals often break during import
- Tracking templates may not transfer
- Extensions may be partially imported
- Bid adjustments may not match
- ALWAYS validate conversion tracking after import
---
Syndication & Bidding (20% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| MS04 | Brand syndication control | Critical | Brand campaigns excluded from syndicated partners OR low-performers excluded | Partners enabled, monitored regularly | Brand campaigns on syndicated partners, never reviewed (massive budget waste risk) |
| MS05 | Audience Network settings | Medium | Audience Network enabled only if testing intentionally | — | Audience Network ON by default without review |
| MS06 | Bid strategy alignment | High | Strategy matches goal + conversion volume; targets 20-35% lower than Google | Strategy matches but targets not adjusted for Bing | Mismatched strategy for conversion volume |
| MS07 | Target New Customers (PMax) | Medium | "Target New Customers" enabled for growth campaigns (Beta 2026) | — | Not tested for eligible PMax campaigns |
---
Structure & Audience (20% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| MS08 | Campaign structure | High | Mirrors Google structure (if imported) or follows best practices | Minor structural issues | Disorganized structure, no naming convention |
| MS09 | Budget allocation | Medium | Budget proportional to Bing search volume (typically 20-30% of Google) | Slightly over/under-allocated | Budget >50% of Google budget (over-investment) |
| MS10 | LinkedIn profile targeting | High | LinkedIn targeting utilized for B2B (company, industry, job function) | Partial LinkedIn targeting | No LinkedIn targeting for B2B campaigns (unique advantage missed) |
---
Creative & Extensions (20% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| MS11 | RSA asset count | High | ≥8 headlines, ≥3 descriptions per RSA | 3-7 headlines, 2 descriptions | <3 headlines (minimum) |
| MS12 | Multimedia Ads | Medium | Multimedia Ads tested (unique rich visual format) | — | Not tested |
| MS13 | Ad copy uniqueness | Medium | Ad copy optimized for Bing demographics (older, affluent, educated) | Same copy as Google, untested | — |
| MS19 | Action Extension | Medium | Action Extension utilized (unique to Microsoft) | — | Not tested |
| MS20 | Filter Link Extension | Medium | Filter Link Extension tested for product/service categories | — | Not tested |
Microsoft-Unique Formats
These extensions are ONLY available on Microsoft Ads:
- Action Extension: Predefined action buttons (clickable CTAs)
- Filter Link Extension: Category-based deep links (product filters)
- Multimedia Ads: Rich visual search ads (image + headline + description)
- Review Extension: Third-party review quotes in ads
---
Settings & Performance (15% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| MS14 | Copilot placement | Medium | Copilot chat placement enabled for PMax campaigns | — | Not enabled (73% higher CTR opportunity) |
| MS15 | Conversion goals | High | Goals configured natively (not relying on Google-imported goals) | Imported goals verified and working | Imported goals not verified |
| MS16 | CPC vs Google comparison | Medium | Microsoft CPC 20-40% lower than Google for same keywords | CPC within 0-20% of Google | CPC equal to or higher than Google |
| MS17 | Conversion rate comparison | Medium | Microsoft CVR comparable to Google | CVR 25-50% lower | CVR >50% lower than Google |
| MS18 | Impression share | Medium | IS tracked for brand and top non-brand terms | Partially tracked | Not tracked |
---
Quick Wins (Microsoft)
| Check | Fix | Time |
|---|---|---|
| MS10 — LinkedIn targeting | Enable LinkedIn profile targeting for B2B campaigns | 5 min |
| MS14 — Copilot placement | Enable Copilot chat placement in PMax settings | 2 min |
| MS04 — Partner network | Review syndicated partner performance, exclude low-performers | 10 min |
| MS19 — Action Extension | Add Action Extension to campaigns | 5 min |
| MS12 — Multimedia Ads | Create Multimedia Ad from existing assets | 10 min |
| MS03 — Import validation | Verify conversion goals and tracking post-import | 10 min |
---
Microsoft-Specific Context
| Fact | Value |
|---|---|
| Average CPC | $1.20-$1.55 (20-35% discount vs Google) |
| Average CTR | 2.83-3.1% (higher than Google's ~2.0%) |
| US desktop share | 16.75-17.58%; with partners ~25% |
| Copilot CTR lift | 73% higher than traditional search |
| Copilot CVR lift | 16% stronger conversion rates |
| Copilot journey | 33% shorter customer journeys |
| Purchase intent | 194% more likely to purchase in Copilot |
| Copilot Checkout | Launched Jan 2026 (in-conversation commerce) |
| 37% of advertisers | Report higher ROAS vs Google |
| Bing users click paid ads | 25% more often than Google users |
| Audience skew | Affluent (~50% top 25% HHI), educated (34% degrees), older (45-64: 38%) |
| Import options | Quick Import, Smart Import, Advanced Import (Feb 2025) |
| API version | v13 stable, SOAP-based with REST emerging |
---
Copilot Integration (2026)
Microsoft's Copilot represents the biggest unique advantage:
1. Copilot Chat Placement — Ads appear within conversational search 2. Copilot Checkout (Jan 2026) — Full commerce within conversations 3. Higher engagement — 73% CTR lift, 16% CVR lift, 33% shorter journeys 4. Shopping intent — Users 194% more likely to purchase 5. Launch partners — Urban Outfitters, Etsy, Ashley Furniture
Ensure PMax campaigns have Copilot placement enabled to capture this growing channel.
Platform Creative Specifications
<!-- Updated: 2026-02-10 --> <!-- Sources: Google Research PDF 3, Claude Research -->
Google Ads
Responsive Search Ads (RSA)
| Component | Min | Max | Char Limit |
|---|---|---|---|
| Headlines | 3 | 15 | 30 chars each |
| Descriptions | 2 | 4 | 90 chars each |
| Display Paths | — | 2 | 15 chars each |
| Final URL | 1 | 1 | Required |
Best practice: 8-10 headlines, 2-3 descriptions (Claude), 12-15 for Excellent (Google).
Pinning Rules:
- Pin 1 headline to Position 1 (brand/main keyword)
- Pin 1 headline to Position 2 (secondary angle)
- Each pinned position: provide 2-3 variants
- Leave Position 3 unpinned
- Never pin all positions (kills Ad Strength)
Dynamic Insertion:
{KeyWord:Default Text} # Keyword insertion
{COUNTDOWN(YYYY/MM/DD HH:MM:SS)} # Countdown timer
{LOCATION(City)} # Location insertion
{CUSTOMIZER.attribute:default} # Ad customizerPerformance Max Asset Groups
| Asset Type | Spec | Max Per Group |
|---|---|---|
| Marketing Image | 1200×628 (1.91:1) | 20 total |
| Square Image | 1200×1200 (1:1) | (in 20) |
| Portrait Image | 960×1200 (4:5) | (in 20) |
| Logo (landscape) | 1200×300 (4:1) | 5 total |
| Logo (square) | 1200×1200 (1:1) | (in 5) |
| Video (landscape) | 1920×1080 (16:9) | 5 total |
| Video (square) | 1080×1080 (1:1) | (in 5) |
| Video (vertical) | 1080×1920 (9:16) | 5 vertical |
| Headlines | 30 chars | 5 |
| Long Headlines | 90 chars | 5 |
| Descriptions | 90 chars | 5 |
| Short Description | 60 chars | 1 |
| Business Name | 25 chars | 1 |
Image: Min 128×128, max 5120×5120, max 5MB, JPG/PNG Video: Min 10s, rec 60s, min 480p, rec 1080p+, MP4/MOV, max 256MB
YouTube Ad Formats
| Format | Ratio | Resolution | Duration | Skip |
|---|---|---|---|---|
| Skippable In-Stream | 16:9 | 1920×1080 | 12s-3min (rec 15-30s) | After 5s |
| Non-Skippable | 16:9 | 1920×1080 | 15-60s (expanded 2025) | No |
| Bumper | 16:9 | 1920×1080 | ≤6s | No |
| In-Feed | 16:9 | 1920×1080 | Any | N/A |
| YouTube Shorts | 9:16 | 1080×1920 | ≤60s | Swipe |
YouTube Shorts Safe Zone: Center 1080×1420px. Bottom 480px = UI overlay.
Google Extensions / Assets
| Type | Char Limit | Max Count | Notes |
|---|---|---|---|
| Sitelink | 25 text, 35 desc ×2 | 20 | Min 4 rec; +3.5% conv with 6 |
| Callout | 25 chars | 20 | Min 4 rec |
| Structured Snippet | 25 chars | 2 sets | Predefined headers |
| Image | 1:1 or 1.91:1 | 20 | Min 1MB |
| Call | Phone number | 1 | With call tracking |
| Lead Form | 30 headline, 200 desc | 1 | Privacy URL required |
| Price | 25 header, 25 desc | 8 items | Min 3 |
| Promotion | 20 item | 1 | Schedulable |
Ad Strength Scoring
- Headline uniqueness (Levenshtein distance)
- Keyword inclusion in headlines
- 3-7 headlines = Poor/Average, 8-10 = Good, 11-15 = Excellent
- "Excellent" → ~12-15% more conversions (diagnostic, not direct factor)
---
Meta Ads
Image Specs
| Placement | Ratio | Size | Max |
|---|---|---|---|
| Feed (preferred) | 4:5 | 1080×1350 | 30MB |
| Feed (supported) | 1:1 | 1080×1080 | 30MB |
| Stories/Reels | 9:16 | 1080×1920 | 30MB |
| Right Column | 1:1 | 1080×1080 | 30MB |
| Min width: 600px (1080px rec). No hard 20% text rule but AI penalizes heavy text. |
Video Specs
| Placement | Ratio | Resolution | Max Duration | Max Size |
|---|---|---|---|---|
| Feed | 4:5 (pref) | 1080×1350 | 241 min | 4GB |
| Feed | 1:1 | 1080×1080 | 241 min | 4GB |
| Stories | 9:16 | 1080×1920 | 120s | 4GB |
| Reels | 9:16 | 1080×1920 | 90s (rec 15-30s) | 4GB |
| In-Stream | 16:9 | 1920×1080 | 15 min | 4GB |
Reels Safe Zone: Center 1080×1300px. Bottom 35% (~670px) = CTA, caption, reactions.
Text Limits
| Component | Recommended | Max |
|---|---|---|
| Primary Text | 125 chars | 2200 |
| Headline | 27-40 chars | — |
| Description | 20 chars (carousel) | — |
| Reels Primary | 72 chars | — |
Carousel
- 2-10 cards, all 1:1 (1080×1080)
- Per card: Headline 40 chars, Description 20 chars
- Unique URL per card supported
Advantage+ Creative Enhancements
Auto-adjustments when enabled: brightness/contrast, art filters, aspect ratio crops, music addition, text variations, video from static images. Test via A/B split.
Quality Rankings
Three signals: Quality Ranking, Engagement Rate Ranking, Conversion Rate Ranking. Rated: Above Average / Average / Below Average (10th, 35th, 55th percentile).
---
TikTok Ads
Video Specs
| Type | Min Resolution | Duration | Max Size | Min Bitrate |
|---|---|---|---|---|
| In-Feed (Non-Spark) | 540×960 (9:16) | 5-60s | 500MB | 516kbps |
| Spark Ads | Organic specs | Organic | N/A | N/A |
| TopView | 720×1280 (9:16) | 5-60s | 500MB | 2500kbps |
| Brand Takeover | 720×1280 | 3-5s | 2MB img / 500MB vid | — |
Recommended: 1080×1920, MP4/MOV, H.264, audio required, captions required.
TikTok Safe Zone
Top: 0-150px → Status bar, account info
Right: 0-140px → Like, comment, share, profile
Bottom: 0-450px → Caption, music, CTA, nav bar
SAFE BOX: X:40-940px, Y:150-1470px (900×1320px)All critical text, logos, CTAs MUST be within safe box.
Smart+ Specs
- Up to 30 ad groups per campaign
- Up to 50 creatives per asset group
- Symphony AI auto-generates variations
---
LinkedIn Ads
Single Image
| Component | Spec |
|---|---|
| Image (landscape) | 1200×627 (1.91:1) |
| Image (square) | 1080×1080 (1:1) — better engagement |
| Max file | 5MB, PNG/JPG |
| Intro text | 150 chars rec / 600 max |
| Headline | 70 chars rec / 200 max |
| Description | 100 chars (desktop only) |
| CTA Button | Predefined list |
Video
| Component | Spec |
|---|---|
| Format | MP4 required |
| Size | 75KB - 500MB |
| Duration | 3s - 30min (rec 15-30s) |
| Resolution | 360p min (720p+ rec) |
| Aspect Ratios | 16:9 (landscape), 1:1 (square), 9:16 (mobile only) |
Document Ads
- PDF, DOC, DOCX, PPT, PPTX
- 100MB max, 300 pages max (10-20 rec)
Messaging
| Type | Component | Limit |
|---|---|---|
| Message Ad | Subject | 60 chars |
| Message Ad | Body | 1,500 chars |
| Message Ad | CTA | 20 chars |
| Conversation Ad | Intro | 500 chars |
| Conversation Ad | CTA buttons | 5 max, 25 chars each |
Audience Requirements
- Minimum: 500 members for delivery
- Recommended: 50,000-300,000
- Predictive Audiences seed: 300+ members
- Company list upload: up to 300,000
---
Microsoft Ads
RSA (mirrors Google)
| Component | Limit |
|---|---|
| Headlines | 3-15, 30 chars each |
| Descriptions | 2-4, 90 chars each |
| Display Paths | 2, 15 chars each |
Multimedia Ads (unique)
| Component | Spec |
|---|---|
| Image | 1200×628 (1.91:1) |
| Short Headline | 30 chars |
| Long Headline | 90 chars |
| Description | 90 chars |
| Business Name | 25 chars |
Microsoft-Unique Extensions
| Extension | Description |
|---|---|
| Action Extension | Predefined action buttons |
| Filter Link Extension | Category-based deep links |
| Review Extension | Third-party review quotes |
---
Cross-Platform Standards
Universal Safe Zone (Vertical Video)
For content running across TikTok + Reels + Shorts + Stories:
Safe intersection: 900×1000px center
X: 40-940px (900px wide)
Y: 450-1450px (1000px tall)Character Normalization
| Component | Safe Limit | Strictest Platform |
|---|---|---|
| Short headline | 30 chars | Google/Microsoft RSA |
| Long headline | 70 chars | LinkedIn recommended |
| Primary description | 90 chars | Google/Microsoft RSA |
| Short description | 25 chars | Extension callouts |
Video Encoding Standard
| Component | Recommended |
|---|---|
| Video codec | H.264 High Profile |
| Audio codec | AAC |
| Audio level | -14 LUFS |
| Container | MP4 |
| Frame rate | 30fps |
| Color space | Rec. 709 |
| Bitrate (1080p) | 8-12 Mbps |
Aspect Ratio Master Chart
| Ratio | Dimensions | Used By |
|---|---|---|
| 16:9 | 1920×1080 | YouTube, Google Display, LinkedIn Landscape |
| 9:16 | 1080×1920 | TikTok, Reels, Shorts, Stories |
| 4:5 | 1080×1350 | Meta Feed (preferred) |
| 1:1 | 1080×1080 | Meta Feed, LinkedIn, Carousel |
| 1.91:1 | 1200×628 | Google PMax, LinkedIn Single Image |
| 4:1 | 1200×300 | Google Logo (landscape) |
Ad Account Audit Scoring System
<!-- Updated: 2026-02-10 --> <!-- Sources: Google Research PDF 1, Claude Research, Gemini Research -->
Weighted Scoring Algorithm
S_total = Σ(C_pass × W_sev × W_cat) / Σ(C_total × W_sev × W_cat) × 100C_pass= check passed (1) or failed (0); WARNING = 0.5W_sev= severity multiplier of the individual checkW_cat= category weight for that platform- Result: 0-100 Health Score
Severity Multipliers
| Severity | Multiplier | Criteria |
|---|---|---|
| Critical | 5.0 | Immediate revenue/data loss risk. Remediation urgent. |
| High | 3.0 | Significant performance drag. Fix within 7 days. |
| Medium | 1.5 | Optimization opportunity. Fix within 30 days. |
| Low | 0.5 | Best practice, minor impact. Nice to have. |
Scoring Per Check Item
| Result | Points Earned |
|---|---|
| PASS | Full severity × category weight |
| WARNING | 50% of full points |
| FAIL | 0 points |
| N/A | Excluded from total possible |
Category Weights by Platform
Google Ads
| Category | Weight | Rationale |
|---|---|---|
| Conversion Tracking | 25% | Foundation for all optimization; Enhanced Conv + Consent Mode |
| Wasted Spend / Negatives | 20% | Direct money leak; search terms, negative lists |
| Account Structure | 15% | Campaign organization, brand/non-brand separation |
| Keywords & Quality Score | 15% | QS directly impacts CPC; average QS ≥7 target |
| Ads & Assets | 15% | RSA strength, PMax asset completeness, extensions |
| Settings & Targeting | 10% | Location, network, audiences, landing pages |
Meta Ads
| Category | Weight | Rationale |
|---|---|---|
| Pixel / CAPI Health | 30% | 87% of advertisers have poor EMQ; foundational signal |
| Creative (Diversity & Fatigue) | 30% | Creative = 70% of campaign results per Meta |
| Account Structure | 20% | Learning phase, CBO/ABO, campaign consolidation |
| Audience & Targeting | 20% | Overlap, exclusions, Advantage+ testing |
LinkedIn Ads
| Category | Weight | Rationale |
|---|---|---|
| Technical Setup | 25% | Insight Tag + CAPI essential for B2B attribution |
| Audience Quality | 25% | LinkedIn's targeting precision is its differentiator |
| Creative & Formats | 20% | TLA + format diversity; video efficiency varies |
| Lead Gen Forms | 15% | 13% CVR (3.25× landing pages); CRM integration |
| Bidding & Budget | 15% | High CPCs ($5-$35) require careful management |
TikTok Ads
| Category | Weight | Rationale |
|---|---|---|
| Creative Quality | 30% | Native-feel content is #1 success factor |
| Technical Setup | 25% | Pixel + Events API + ttclid passback |
| Bidding & Learning | 20% | 50 conv/week to exit learning; budget sufficiency |
| Structure & Settings | 15% | Smart+, Search Toggle, Shop integration |
| Performance | 10% | CTR, CPA, completion rate benchmarks |
Microsoft Ads
| Category | Weight | Rationale |
|---|---|---|
| Technical Setup | 25% | UET tag, import validation, Enhanced Conv |
| Syndication & Bidding | 20% | Partner network control, Copilot placement |
| Structure & Audience | 20% | LinkedIn targeting (unique), campaign structure |
| Creative & Extensions | 20% | Multimedia Ads, Action/Filter Link Extensions (unique) |
| Settings & Performance | 15% | CPC advantage tracking, conversion rate comparison |
Grading Thresholds
| Grade | Score | Label | Action Required |
|---|---|---|---|
| A | 90-100 | Excellent | Minor optimizations only |
| B | 75-89 | Good | Some improvement opportunities |
| C | 60-74 | Needs Improvement | Notable issues need attention |
| D | 40-59 | Poor | Significant problems present |
| F | <40 | Critical | Urgent intervention required |
Quick Wins Logic
IF severity == "Critical" OR severity == "High"
AND estimated_remediation_time < 15 minutes
THEN flag as "Quick Win"
PRIORITY: Quick Wins sorted by (severity × estimated_impact) DESCQuick Win examples:
- Enable Enhanced Conversions (Critical, 5 min)
- Turn on Search Ads Toggle in TikTok (High, 2 min)
- Add negative keyword lists (Critical, 10 min)
- Fix location targeting method (Critical, 2 min)
- Enable Advantage+ Placements (Medium, 2 min)
Weighting Rationale
Category weights are calibrated for paid advertising accounts where conversion tracking infrastructure is the highest-impact factor (25-30% weight across platforms). This differs from generic scoring systems because:
- Broken tracking invalidates all optimization decisions downstream
- Creative and targeting quality follow tracking in priority
- Settings and compliance are important but have lower direct revenue impact
- Weights sum to 100% per platform, enabling direct cross-platform comparison
The grading thresholds (A=90-100, B=75-89, C=60-74, D=40-59, F=<40) use wider bands than academic-style scoring because ad account health is typically distributed lower — a score of 75+ represents genuinely well-managed accounts.
---
Cross-Platform Aggregate Score
When auditing multiple platforms, calculate per-platform scores then aggregate:
Aggregate Score = Σ(Platform_Score × Platform_Budget_Share)
Example: Google (82) × 40% + Meta (71) × 35% + LinkedIn (90) × 25%
= 32.8 + 24.85 + 22.5 = 80.15 → Grade BTikTok Ads Audit Checklist
<!-- Updated: 2026-02-11 --> <!-- Sources: Google Research PDF 1 (T01-T25), Claude Research, Gemini Research --> <!-- Total Checks: 25 | Categories: 5 | See scoring-system.md for weights and algorithm -->
Quick Reference
| Category | Weight | Check Count |
|---|---|---|
| Creative Quality | 30% | T05-T10 + T20-T25 (12 checks) |
| Technical Setup | 25% | T01-T02 (2 checks) |
| Bidding & Learning | 20% | T11-T13 (3 checks) |
| Structure & Settings | 15% | T03-T04 + T14-T16 (5 checks) |
| Performance | 10% | T17-T19 (3 checks) |
---
Creative Quality (30% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| T05 | Creative volume | Critical | ≥6 creative assets per ad group | 3-5 creatives | <3 creatives per ad group |
| T06 | Vertical video format | Critical | All video assets 9:16 (1080x1920) | Mixed ratios with some vertical | No vertical video (landscape only) |
| T07 | Native-looking content | High | Ads look organic / creator-style (not polished corporate) | Semi-native style | Clearly corporate/polished ads |
| T08 | Hook strategy | High | First 1-2 seconds have attention-grabbing hook | Decent hook but not optimized | No clear hook in opening |
| T09 | Creative lifespan | High | No creative active >7 days with declining CTR | 7-14 days with minor decline | >14 days with significant CTR decline |
| T10 | Spark Ads utilization | High | Spark Ads (creator content) tested and active | Tested but paused | No Spark Ads tested (~3% CTR vs ~2% standard) |
| T20 | TikTok Shop integration | Medium | Shop catalog connected (for e-commerce) | — | Eligible but not connected |
| T21 | Video Shopping Ads (VSA) | Medium | VSA tested for product catalog accounts | — | Not tested despite eligible catalog |
| T22 | Caption SEO | High | Captions include high-intent keywords for search discovery | Some keywords in captions | No keyword optimization in captions |
| T23 | Sound/music usage | Medium | Trending or engaging audio used | Licensed audio but not trending | Silent ads (TikTok is sound-on platform) |
| T24 | CTA button | Medium | Appropriate CTA button selected (not default) | — | Default CTA without customization |
| T25 | Safe zone compliance | High | Key content within safe zone (X:40-940, Y:150-1470) | Minor elements outside safe zone | Key text/CTA in UI overlay zones |
---
Technical Setup (25% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| T01 | TikTok Pixel installed | Critical | Pixel firing on all relevant pages | Firing on most pages (>90%) | Pixel not installed or broken |
| T02 | Events API + ttclid | High | Server-side events via Events API with ttclid passback | Events API active but no ttclid passback | No server-side tracking |
ttclid Critical Note
The TikTok Click ID (ttclid) comes in landing page URL parameters and MUST be: 1. Captured on first page load 2. Stored in session/cookie 3. Sent back with ALL conversion events
Without ttclid, attribution breaks for many conversions. This is TikTok's key technical difference from other platforms.
---
Bidding & Learning (20% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| T11 | Bid strategy | High | Lowest Cost for volume; Cost Cap for efficiency | — | Bid Cap set too aggressively (severe under-delivery) |
| T12 | Budget sufficiency | High | Daily budget ≥50x target CPA per ad group | 20-49x CPA | <20x CPA per ad group |
| T13 | Learning phase | High | Ad groups achieving ≥50 conversions/week | 25-50 conversions/week | <25 conversions/week (stuck in learning) |
Learning Phase Rules
- Exit criteria: ~50 conversions in 7 days per ad group
- Campaign minimum budget: $50/day
- Ad group minimum budget: $20/day
- Daily budget should be ≥50x target CPA for sufficient learning room
- Avoid changes during learning (resets the phase)
---
Structure & Settings (15% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| T03 | Campaign structure | High | Separate campaigns for prospecting vs retargeting | — | Prospecting and retargeting mixed |
| T04 | Smart+ utilization | Medium | Smart+ campaigns tested with modular automation (per-module: targeting, budget, creative, placement) | — | Not tested (42% adoption, 1.41-1.67 median ROAS; modular since Oct 2025) |
| T14 | Search Ads Toggle | High | Search Ads Toggle enabled for all campaigns | — | Search Ads Toggle OFF |
| T15 | Placement selection | Medium | Appropriate placements selected (TikTok, Pangle, etc.) | Default placements without review | — |
| T16 | Dayparting | Low | Ad schedule aligned with target audience activity | — | No schedule despite clear patterns |
---
Performance (10% weight)
| ID | Check | Severity | Pass | Warning | Fail |
|---|---|---|---|---|---|
| T17 | CTR benchmark | High | CTR ≥1.0% for in-feed ads | CTR 0.5-1.0% | CTR <0.5% |
| T18 | CPA target | High | CPA within target range | CPA 1.5-3x target | CPA >3x target (trigger 3x Kill Rule) |
| T19 | Video completion rate | Medium | Average video watch time ≥6 seconds | 3-6 seconds | <3 seconds average watch time |
---
Quick Wins (TikTok)
| Check | Fix | Time |
|---|---|---|
| T14 — Search Ads Toggle | Enable Search Ads Toggle in campaign settings | 2 min |
| T06 — Vertical video | Convert existing assets to 9:16 format | 10 min |
| T24 — CTA button | Select appropriate CTA (not default) | 2 min |
| T10 — Spark Ads | Whitelist top creator/organic content as Spark Ads | 10 min |
| T22 — Caption SEO | Add high-intent keywords to ad captions | 5 min |
| T25 — Safe zone | Verify key content within X:40-940, Y:150-1470 | 5 min |
---
TikTok-Specific Context
| Fact | Value |
|---|---|
| Smart+ adoption | 42% of US TikTok performance campaigns (surged from 9% in early 2025) |
| Smart+ capacity | 30 ad groups/campaign, 50 creatives/asset group |
| GMV Max | Default for TikTok Shop Ads (July 2025) |
| TikTok Shop CVR | >10% (vs 0.46-2.4% standard) |
| CPM advantage | 40-60% cheaper than Meta |
| Spark Ads CTR | ~3% vs ~2% standard In-Feed |
| Spark Ads CPA | ~$60 vs ~$100 standard |
| Engagement rate | 5-16% (far exceeds FB 0.09%, IG 1.22%) |
| Search Ads | Launched 2025 for Web Conversion + Traffic |
| Safe zone | X:40-940px, Y:150-1470px (900x1320px usable) |
| Available markets | 11 countries (US, UK, key Asian/European) |
---
TikTok Safe Zone Diagram
┌──────────────────────────────┐
│ 0-150px: Status bar, account│ ← TOP UNSAFE
├──────────────────────────────┤
│ │ │
│ SAFE ZONE │140 │ ← RIGHT: Like, comment,
│ X: 40-940px │ px │ share, profile icons
│ Y: 150-1470px │ │
│ (900×1320px) │ │
│ │ │
├──────────────────────────────┤
│ 0-450px: Caption, music, │ ← BOTTOM UNSAFE
│ CTA, navigation bar │
└──────────────────────────────┘All critical text, logos, and CTAs MUST be within the safe box.
Claude Deep Research — The Definitive Paid Advertising Reference for 2026
Source: Claude Deep Research, February 2026
Original: ~/Documents/Ads Documentation & Research/
492 lines — Most comprehensive and up-to-date source
Key Unique Data Points (Not in Other Sources)
Google Ads
- Average Search CPC now $5.26 (up 5th consecutive year)
- Search CTR 6.66% (up 3.74% YoY) — WordStream/LocaliQ 16K campaigns
- Search CVR 7.52% (up for 65% of industries)
- "Power Pack" framework: PMax + Demand Gen + AI Max (replaces "Power Pair")
- AI Max for Search: LLM-based text customization + final URL expansion
- Demand Gen: 3B monthly users, 58% higher ROAS than Video Action Campaigns
- PMax negative keywords expanded to 10,000 (from 100)
- Search themes: 50 per asset group
- Call Campaigns stop new creation Feb 2026, sunset Feb 2027
- Smart Bidding Exploration: 18% more unique queries, 19% more conversions
- Customer Match: $50K+ lifetime spend required, 540-day max duration (changed April 2025)
- DDA mandatory default (Sep 2025), only DDA + Last Click remain
- Asset Studio with Nano Banana Pro (Nov 2025, Gemini 3): images in <10s with people
- API v23 released January 27, 2026
Meta Ads
- Advantage+ Shopping renamed to Advantage+ Sales (2025)
- Advantage+ ROAS $4.52 (22% higher than manual), CPA reduced up to 32%
- 35% of US retail ad spend on Advantage+, $60B annualized run rate
- Detailed targeting exclusions removed (March-June 2025, existing stopped Jan 15, 2026)
- Andromeda: 10,000× more ad variants in parallel
- Flexible Ads: new 2025 format, auto-tests up to 10 images/videos
- GEM AI model (Nov 2025): Instagram conversions +5%, Facebook Feed +3%
- Offline Conversions API deprecated May 2025 → CAPI replaces
- 87% of advertisers have poor EMQ
- Global CPC trend: Jan 2026 at $0.85 (24% below prior January)
TikTok
- Smart+ adoption surged 9% → 42% of US TikTok performance campaigns
- Smart+: up to 30 ad groups/campaign, 50 creatives/asset group
- GMV Max = default for TikTok Shop Ads (July 2025)
- TikTok Shop CVR >10% (vs 0.46-2.4% standard)
- Search Ads launched 2025 for Web Conversion and Traffic
- CPM 40-60% cheaper than Meta
- Lookalike audiences discontinued Feb 29, 2024 → Predictive Audiences (300+ seed)
- Connected TV Ads (US/Canada, 60M+ households)
- Campaign hierarchy renamed Oct 2025
- Lead Gen Form CVR 13% (3.25× higher than landing pages)
- ROAS 113% ($1.13 per $1)
- Accelerate campaigns: 42% lower CPA, 21% lower CPL
- Cost per company influenced €154 (25% cheaper than Google, 70% cheaper than Meta for B2B)
Microsoft
- Copilot: 73% higher CTR, 16% stronger CVR, journeys 33% shorter
- Copilot Checkout launched Jan 2026 (in-conversation commerce)
- Users 194% more likely to purchase with shopping intent in Copilot
- CPC $1.20-$1.55 (20-35% discount vs Google)
- US desktop share 16.75-17.58%, with partners ~25%
- 37% of advertisers report higher ROAS vs Google
Cross-Platform
- Triple Whale 2025: Median CPA $23.74 (up 12.35%), median ROAS 3.68 (down 10.03%)
- 82.9% of landing page traffic is mobile
- Pages loading 1s = 3× higher CVR vs 5s
- Median landing page CVR 6.6%, top 10% achieve 20%+
- QS landing page component: 50% CPC discount (high) vs 400% extra CPC (low)
Privacy & Compliance
- Privacy Sandbox officially dead (October 2025)
- 20 US state privacy laws in effect by Jan 2026
- Texas AG: $1.4B settlement for tracking violations
- iOS ATT opt-in: ~35% average (Q2 2025)
- ~31% of users accept tracking cookies globally
- Consent Mode v2 enforcement tightened July 2025 (90-95% metric drops without)
API Details
- Google: GAQL query language, v23 Jan 2026, Test/Basic 15K ops/day
- Meta: v22.0/Marketing v24.0, v25.0 Q1 2026 deprecates legacy ASC/AAC APIs
- LinkedIn: Versioned monthly (202601), dev access read-only unlimited accounts
- TikTok: 600 req/min default
- Microsoft: v13 stable, SOAP-based with REST emerging
Full document preserved at original location.
Gemini Deep Research — The State of Paid Advertising 2026
Source: Gemini Deep Research, February 2026
Original file: ~/Downloads/the state of paid advertising 2026.txt344 lines, 36 cited sources
Executive Summary
The 2026 advertising ecosystem operates under a signal-based paradigm — transition from keyword-centric targeting to signal-based intent modeling. Key shifts:
1. Privacy Sandbox is dead — Google retired it October 2025 (CMA pressure + performance issues) 2. Third-party cookies persist in Chrome but signal fidelity is degraded 3. Server-side integrations (CAPI) are the standard — pixel-only = vulnerability 4. AI Max for Search — LLMs match landing page content to conversational queries, bypassing keyword matching 5. Media Mix Modeling (MMM) renaissance — Google Meridian, Meta Robyn for budget allocation 6. Platform "black boxes" dominate — PMax, Advantage+, Smart+ are the norm
---
Section 1: Macro-Environment & Privacy
Post-Sandbox Reality
- Privacy Sandbox APIs (Topics, Protected Audience, Attribution Reporting) shut down on Chrome AND Android
- Third-party cookies remain but with browser-level protections + iOS ATT
- Audit implication: Penalize accounts lacking dual-tagging (Pixel + Server-Side)
- Must verify Enhanced Conversions (Google) and EMQ (Meta)
AI Max & Generative Search
- Ads now appear in AI Overviews (AIO) via "AI Max"
- Landing pages need machine-interpretability: Schema markup (FAQPage, Product), semantic hierarchy
- Keyword density less relevant than structured data
MMM Renaissance
- Hybrid strategy: MTA for tactical optimization + MMM for strategic budget setting
- Platform-reported ROAS often overclaims — weight down by ~30% based on MMM incrementality
- Tools: Google Meridian, Meta Robyn (Bayesian methods)
---
Section 2: Google Ads Architecture
Broad Match + Smart Bidding = "Power Pairing"
- Exact Match now captures "same meaning"
- Broad Match captures "intent" from user history + landing page context
- Critical error: Broad Match + Manual CPC = unrestricted spend on irrelevant queries
- Negative keyword lists mandatory: "Competitor," "Cheap/Free," "Jobs" themes
- Brand Guidelines must be configured in PMax/Search
Performance Max (PMax) Maturity
- Now a "grey box" — campaign-level negatives, brand exclusions, improved reporting
- Share of Voice reporting + Search Term Insights available
- Structure Asset Groups by User Intent not Product Category
- Asset requirements: Max 15 headlines, 5 descriptions, 20 images per group
- Missing video assets → PMax generates low-quality robotic videos (High Risk)
- New Customer Acquisition (NCA) rules essential for prospecting
Quality Score 2026
- Ad Rank = CPC Bid × Quality Score (unchanged formula)
- Priority: Expected CTR (heaviest) > Landing Page Experience > Ad Relevance
- Score < 5 = Critical, 5-7 = Warning, 8-10 = Healthy
- Actual CPC = (Ad Rank Below / Your QS) + $0.01
Google Ads API v23 (January 2026)
- InvoiceService: campaign-level cost breakdowns
- PMax Share of Voice: impression share lost to budget/rank
- Ad Strength Diagnostic: "Good"/"Excellent" ratings for RSA assets
- Campaign scheduling: start/end down to the minute
---
Section 3: Meta Ads — Andromeda Engine
Andromeda Algorithm Update (2025/2026)
- AI-driven matching system, not simple auction
- Optimizes for "creative portfolios" not single ads
- Requires larger creative volume (old "3-5 ads per ad set" = obsolete)
- Creative IS the targeting — broad targeting + specific creative angles
3-Stage Account Structure
1. Testing Campaign (ABO): Test new concepts, multiple batches per ad set 2. Challenger ASC: Graduate winners, prevents budget starvation 3. Core/Evergreen Campaign (CBO): Proven, scalable assets
Red Flags
- >5 active campaigns targeting same country/funnel stage = fragmentation
- High auction overlap rates = bidding against yourself
Creative Signals
- Social-native content rewarded: 9:16, handheld, selfie POV, lo-fi
- Hook Rate: first 3 seconds critical, >50% skip rate = flag for refresh
- Organic boosting (Reels → partnership ads) most effective strategy
Meta API
- Rate limits: rolling 1-hour window, check X-Business-Use-Case-Usage header
- >75% usage = pause 5 min, error 613/80004 = exponential backoff
- EMQ score < 7.0 = severe data loss = high-priority alert
---
Section 4: TikTok Ads
TikTok as Search Engine
- Primary search for Gen Z by 2026
- "Search Ads Toggle" ON → 70% stronger CPA
- Captions = SEO meta descriptions (high-intent keywords in text overlays)
Smart+ Campaigns
- Automates targeting, bidding, creative selection
- Creative fatigue: >7 days + declining CTR = flag for replacement
- Minimum 6 creative assets per ad group
TikTok Shop
- Primary e-commerce conversion engine
- Video Shopping Ads (VSA) = in-app purchase
- Spark Ads outperform non-Spark (creator authority + profile linkage)
API
- Rate limit: 600 req/min for core endpoints
- Implement queuing for multi-client, respect Retry-After on 429s
---
Section 5: LinkedIn Ads
Thought Leader Ads (TLA) — Dominant B2B Format
- 1.7x higher CTR, 1.6x more engagement vs standard
- CPC: $4.14 (TLA) vs $22+ (standard brand)
- Allocate 30% budget to TLAs for trust-building
Conversation Ads vs Message Ads
- Conversation Ads: 12% CTR, choose-your-own-path, for complex offers
- Message Ads: Linear, single CTA, for direct invites
- Frequency cap: 1 message per 30-45 days per user
Benchmarks
- CPC: $13.23 (single image), $2.29 (TLA)
- CTR benchmark: 0.44%-0.65%, >1% = exceptional
- Video ads lowest efficiency (1.5), TLAs highest (9.5)
---
Section 6: Microsoft Ads & Copilot
- PMax inventory includes Copilot chat sessions → 63% conversion rate increase
- "Target New Customers" goal in PMax (Beta 2026)
- Google Ads PMax import available — validate URL settings transfer
---
Section 7: Cross-Platform Benchmarks 2026
| Metric | E-Commerce | B2B SaaS | Legal | Finance | Healthcare | Local Services |
|---|---|---|---|---|---|---|
| Google Search CTR | 4.13% | 4.28% | 5.20% | 4.65% | 4.90% | 5.50% |
| Google Search CPC | $1.15 | $4.50 | $750+ | $900+ | $40+ | $15-$30 |
| Google Search CVR | 2.81% | 1.65% | 4.60% | 3.50% | 3.10% | 15.0% |
| Meta Ads CTR | 1.38% | 0.90% | 0.85% | 0.70% | 1.10% | 1.50% |
| Meta Ads CPM | $12.50 | $35.00 | $45.00 | $50.00 | $28.00 | $18.00 |
| LinkedIn CPC | N/A | $13.23 | $25.00 | $35.00 | N/A | N/A |
| LinkedIn CTR | N/A | 0.56% | 0.45% | 0.40% | N/A | N/A |
| TikTok Ads CPM | $3.21 | $8.00 | N/A | N/A | N/A | $5.00 |
| ROAS Benchmark | 4.0x-7.5x | N/A | 3.0x | 3.5x | 2.8x | 5.0x |
---
Section 8: Universal Audit Framework
Category A: Conversion Data Hygiene (25%)
1. Enhanced Conversions enabled? (Pass/Fail) 2. Server-Side Tracking (CAPI/OCI) active? (Pass/Fail) 3. Micro vs Primary conversions separated in bidding? (Pass/Fail) 4. New Customer value rule applied? (Pass/Fail)
Category B: Account Structure & Bidding (20%)
1. Broad Match only with Smart Bidding? (Pass/Fail) 2. Portfolio Bid Strategies used? (Pass/Fail) 3. <5 active campaigns per funnel stage? (Pass/Fail) 4. Brand vs Non-Brand traffic separated? (Pass/Fail)
Category C: Creative Diversity & Health (25%)
1. (Meta) >3 distinct formats active? (Pass/Fail) 2. (Google) PMax has 9:16 video assets? (Pass/Fail) 3. <10% ads with "Poor" Ad Strength? (Pass/Fail) 4. No CTR drop >30% in last 14 days? (Pass/Fail)
Category D: Targeting & Exclusions (15%)
1. Account-level placement exclusions applied? (Pass/Fail) 2. Customer Match lists refreshed <30 days? (Pass/Fail) 3. (Meta) Advantage+ Audience enabled? (Pass/Fail)
Category E: Landing Page Experience (15%)
1. Mobile LCP < 2.0s? (Pass/Fail) 2. Valid Schema markup present? (Pass/Fail) 3. H1 matches Ad Headline? (Semantic similarity)
---
Section 9: Industry Playbooks
B2B SaaS — "SME Engine"
- TOFU: LinkedIn TLAs + Meta Video Views (ungated value)
- MOFU: Conversation Ads / Lead Forms (calculators, audits)
- BOFU: Google Search retargeting (brand + competitor keywords)
- Key metric: Pipeline ROI via Offline Conversion Import
E-Commerce DTC — "Four Peaks" Theory
- Plan quarterly peaks to reset algorithmic fatigue
- Acquisition: PMax + ASC + TikTok Shop (1 hero campaign per platform)
- Retention: Email/SMS + Customer Match cross-sells
- Key metric: MER (Marketing Efficiency Ratio), POAS
Local Services
- Google LSA (pay-per-lead) + Google Guaranteed badge
- Geo-fenced Meta/YouTube retargeting (+5 miles)
- Key metric: Cost Per Booked Appointment
- Dispute invalid LSA leads weekly, sync CRM for Smart Bidding
Info Products — "Selfie-Style" Authority
- Founder-led video on Meta/YouTube
- Funnel: Short video → VSL/Webinar → Low-ticket tripwire ($27-$97) → High-ticket upsell
- Monitor Hook Rate (<30% = rewrite intro) and Hold Rate (ThruPlay)
---
Section 10: API Engineering
Rate Limits
| Platform | Limit | Strategy |
|---|---|---|
| Google Ads API | 15,000 ops/day (Basic) | Batch up to 5,000 ops, partial_failure=true |
| Meta Marketing API | Rolling 1-hour window (spend-based) | Check X-Business-Use-Case-Usage, pause at 75% |
| TikTok Ads API | 600 req/min | Client-side throttling, respect Retry-After |
Authentication
- Google: Refresh Token → short-lived Access Token (1hr), handle invalid_grant
- Meta: Short-lived → Long-lived tokens (60 days), warn if <7 days remain
Critical Audit Endpoints
| Platform | Goal | Endpoint | Field |
|---|---|---|---|
| Budget | CampaignBudgetService | recommended_budget_amount | |
| Quality Score | KeywordView | quality_score | |
| Ad Strength | AdGroupAdService | ad_strength | |
| Meta | Ad Quality | Insights | quality_ranking, engagement_rate_ranking |
| Meta | Creative Fatigue | Insights (time series) | ctr (7d vs 30d) |
| TikTok | Account Health | Account Health | is_restricted, policy_violations |
| Audience Quality | AdAnalytics | demographic_metrics |
Safe Write Operations
- All write ops = "Dry Run" or explicit user confirmation
- Log every change to claude-ads.log with timestamps + previous values
- Generative copy must use platform character limits as strict constraints
Research Sources — claude-ads
Raw processed research documents used to build the claude-ads reference database. These preserve the full context from each research source for future reference.
Sources
| File | Source | Date | Pages/Words |
|---|---|---|---|
gemini-research.md | Gemini Deep Research | Feb 2026 | ~340 lines |
google-audit-checklists.md | Google Deep Research PDF 1 | Feb 2026 | 29 pages |
google-optimization-logic.md | Google Deep Research PDF 2 | Feb 2026 | 18 pages |
google-platform-specs.md | Google Deep Research PDF 3 | Feb 2026 | 20 pages |
claude-research.md | Claude Deep Research | Feb 2026 | Pending |
How These Feed Into References
Research sources → extracted into structured ads/references/ files → loaded on-demand by agents. Each reference file cites which research source(s) it draws from.
Related skills
FAQ
Which ad platforms does it cover?
Google, Meta, LinkedIn, TikTok, and Microsoft/Bing Ads, with per-platform audit checklists.
What does it output?
An Ads Health Score from 0-100 with A-F grading and a prioritized action plan of quick wins.