
Figma Ui Design
- 42 installs
- 82 repo stars
- Updated August 2, 2026
- aaaaqwq/claude-code-skills
This skill (SKILL.md name 'ads') is a Claude Code skill that runs multi-platform paid advertising audits and optimization across Google, Meta, LinkedIn, TikTok, and Microsoft Ads.
About
Despite the listing name, this skill's SKILL.md is an 'ads' skill for multi-platform paid advertising audit and optimization. It audits Google, Meta, LinkedIn, TikTok, and Microsoft ad accounts, checks conversion tracking and creative quality, and reviews budget and bidding. A marketer uses it to score ad accounts and get a prioritized action plan. It orchestrates 12 sub-skills and 6 subagents and detects the business type before auditing.
- Multi-platform paid-ads audit across Google, Meta, LinkedIn, TikTok, and Microsoft
- Produces an Ads Health Score (0-100) with A-F grading and prioritized fixes
- Orchestrates 12 sub-skills and 6 subagents with industry detection
Figma Ui Design by the numbers
- 42 all-time installs (skills.sh)
- Ranked #1,359 of 1,879 Marketing & SEO skills by installs in the Skillselion catalog
- Data as of Aug 3, 2026 (Skillselion catalog sync)
figma-ui-design capabilities & compatibility
Free skill; you supply your own ad account data or API access.
- Capabilities
- ads audit · conversion tracking check · creative audit · budget optimization · bidding review
- Use cases
- marketing · data analysis
- Pricing
- Free
What figma-ui-design says it does
Comprehensive paid advertising audit and optimization for any business type.
Orchestrates 12 specialized sub-skills and 6 subagents.
npx skills add https://github.com/aaaaqwq/claude-code-skills --skill figma-ui-designAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 42 |
|---|---|
| repo stars | ★ 82 |
| Last updated | August 2, 2026 |
| Repository | aaaaqwq/claude-code-skills ↗ |
What it does
A marketer audits paid ad accounts across platforms and gets an Ads Health Score with prioritized optimization actions.
Who is it for?
Marketers and agencies auditing paid ad accounts across multiple platforms and wanting a scored action plan.
Skip if: Figma or UI design work, despite the listing name; the SKILL.md content is entirely about paid-ads auditing.
When should I use this skill?
When you need a PPC or paid-advertising audit, ROAS review, conversion-tracking check, or bidding-strategy evaluation.
What you get
A per-platform and aggregate Ads Health Score with graded, prioritized quick wins and fixes.
- Ads Health Score report
- Prioritized action plan with quick wins
By the numbers
- Orchestrates 12 sub-skills and 6 subagents
- 74-check Google Ads audit checklist
- 46-check Meta Ads audit checklist
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, each with a dedicated audit checklist.
What does the audit output?
An Ads Health Score from 0-100 with A-F grading and a prioritized action plan of quick wins.