--- name: meta-ads-deep-audit description: Expert level Meta Ads account audit with 13 Insights API query templates across 24 audit categories. Uses Pipeboard Meta Ads MCP for programmatic data pulls. ALWAYS invoke when the user says 'Meta audit', 'audit Meta', 'Facebook Ads audit', 'Instagram Ads audit', 'check my Meta account', 'Meta health check', 'why is Meta underperforming', or any request to deeply analyze a Meta Ads account. Also invoke as part of full audit orchestration. This project-level skill takes priority over any global ads skill. Use this skill when MCP data access is available. model: opus context: fork argument-hint: "[client-name] [ad-account-id]" allowed-tools: Read, Grep, Glob, Bash, Write, Agent, mcp__meta-ads__get_campaigns, mcp__meta-ads__get_campaign_details, mcp__meta-ads__get_adsets, mcp__meta-ads__get_adset_details, mcp__meta-ads__get_ads, mcp__meta-ads__get_ad_details, mcp__meta-ads__get_ad_creatives, mcp__meta-ads__get_creative_details, mcp__meta-ads__get_insights, mcp__meta-ads__get_custom_audiences, mcp__meta-ads__get_pixels, mcp__meta-ads__get_account_info, mcp__meta-ads__get_instagram_accounts, mcp__meta-ads__get_lead_gen_forms, mcp__meta-ads__list_catalogs, mcp__meta-ads__list_product_sets, mcp__meta-ads__estimate_audience_size, mcp__meta-ads__compare_performance, mcp__google-analytics__run_report, mcp__google-analytics__get_account_summaries --- # Meta Ads Deep Audit Expert level account audit that goes far beyond Ads Manager surface metrics. This skill produces findings and strategies that a senior Meta Ads practitioner with 20 years of platform experience would find genuinely useful and time saving. ## MCP Tool Strategy **Primary: Pipeboard Meta Ads MCP (mcp__meta-ads__*)** 60+ tools with full CRUD. Use for all data pulls. Key read tools for auditing: | Tool | Use For | |---|---| | `get_campaigns` | Campaign inventory, objectives, status, budget type, special ad categories | | `get_campaign_details` | Deep campaign config including advantage_state, optimization goal | | `get_adsets` | Ad set targeting, placements, bid strategy, budget, optimization event | | `get_adset_details` | Full ad set config including audience, effective_status, learning phase | | `get_ads` | Ad inventory with creative references and effective_status | | `get_ad_details` | Full ad config including issues_info for delivery diagnostics | | `get_ad_creatives` | Creative format, copy, media, CTA | | `get_creative_details` | Full creative spec including degrees_of_freedom_spec (Advantage+ controls) | | `get_insights` | Performance metrics with breakdowns, date ranges, attribution windows | | `get_custom_audiences` | Custom and Lookalike audience inventory, sizes, types | | `get_pixels` | Pixel config, CAPI status, event setup, EMQ indicators | | `get_account_info` | Account level config, timezone, currency, business info | | `get_lead_gen_forms` | Lead form inventory and configuration (lead gen clients) | | `list_catalogs` / `list_product_sets` | Product catalog structure (ecommerce clients) | | `estimate_audience_size` | Audience reach estimation for targeting assessment | | `compare_performance` | Period over period comparison | **Supplementary: Direct API via scripts/meta-api.js** For capabilities not covered by Pipeboard MCP. Run via Bash tool. See `.claude/rules/meta-tool-routing.md` for the full routing rules. | Command | Use For | |---|---| | `node scripts/meta-api.js emq-scores --dataset-id {pixel_id}` | EMQ scores per event, match key feedback, data freshness | | `node scripts/meta-api.js pixel-stats --pixel-id {id}` | Pixel event volume by type, server vs browser breakdown | | `node scripts/meta-api.js catalog-products --catalog-id {id}` | Product level review status, availability, pricing | | `node scripts/meta-api.js catalog-diagnostics --catalog-id {id}` | Catalog error and warning diagnostics | | `node scripts/meta-api.js catalog-event-stats --catalog-id {id}` | Content ID match rates per event type | | `node scripts/meta-api.js catalog-feeds --catalog-id {id}` | Feed inventory, schedules, last upload | | `node scripts/meta-api.js custom-conversions --account-id {id}` | Custom conversion rules and last fired times | | `node scripts/meta-api.js activity-log --account-id {id}` | Account change history (last ~1 week) | **Fallback: Chrome Browser** Use Chrome only for: Audience Overlap tool, Business Settings verification, ad creative visual review, and Events Manager parameter coverage visual inspection. **Cross Platform: GA4 MCP** Use `mcp__google-analytics__run_report` to cross reference conversion volumes and validate Meta reported data against GA4. ## Mandatory Audit Rules (V2) Load these rules BEFORE any analysis. They apply to every agent and every finding: 1. `.claude/rules/period-comparison-protocol.md` (every metric shows 30d vs prev 30d AND 14d vs prev 14d) 2. `.claude/rules/change-history-first.md` (pull campaign/ad set creation and update timestamps BEFORE performance analysis) 3. `.claude/rules/recommendation-depth-standard.md` (from/to/rationale/impact/risk for every recommendation) 4. `.claude/rules/exact-entity-names.md` (verbatim API names for campaigns, ad sets, ads, audiences, pixels) 5. `.claude/rules/meta-ads-analysis-framework.md` (MASTER Meta methodology: Phase 0 tracking gate, lifecycle classification, diagnostic cascade, funnel classification, lever sequencing, creative analysis, architecture evaluation, cross platform reconciliation. Load the client config from `.claude/rules/client-configs/` for Meta specific fields including EMQ scores, CAPI status, funnel ROAS targets, and known tracking issues.) ## Core Principles 1. **Depth over breadth.** Every finding must include specific data, dollar impact, and actionable next steps. "Creative is fatigued" is not a finding. "Ad 'LP Sales IMG V3' has frequency 6.02 on Advantage+ broad audience (threshold 2.5) with CTR declined 22% over 14 days (1.82% to 1.42%), costing approximately $150/day in excess CPA. Replace with vertical video format targeting diesel enthusiast angle" is a finding. 2. **Data freshness awareness.** Meta data stabilizes over 48 to 72 hours. Never make optimization decisions on sub 48 hour data. Always note the date range and freshness caveat per `.claude/rules/data-freshness-awareness.md`. 3. **Outbound CTR, not All CTR.** All CTR includes engagement clicks (likes, comments, shares) that do not drive conversions. Always use outbound_clicks for CTR calculations on conversion campaigns. 4. **POAS over ROAS.** When margin data is available, calculate Profit on Ad Spend. A campaign with 8x platform ROAS on 10% margin products is worse than 3x ROAS on 60% margin products. 5. **Audience is creative.** Since Andromeda uses computer vision to match ad content to users, creative diversity IS audience strategy. Analyze them together, not separately. 6. **Cross reference everything.** Does the placement data explain the frequency data? Does the demographic data explain the creative performance data? Does the time of day data explain the budget pacing? Connected insights beat isolated findings. 7. **Campaign level optimization.** Every campaign with spend must have its own mini-audit subsection covering: settings, targeting, creative health, frequency, learning phase status, and specific recommendations per the recommendation-depth-standard. 8. **Exhaustive audience verification.** When pulling audiences via `mcp__meta-ads__get_custom_audiences`, ALWAYS paginate fully using the `after` cursor. Continue until no more pages. Never claim an audience type does not exist based on a single API call. Report exact audience names as returned by the API. 9. **Commerce Manager integration.** For ecommerce clients, invoke the `commerce-manager-audit` skill as an additional agent to audit catalog health, product sets, checkout URL config, and pixel connection via Chrome. ## Arguments $ARGUMENTS should include: - Client name (required) - Meta Ads Account ID (required, format: act_XXXXXXXXX) - Date range (optional, defaults to last 30 days for performance, last 90 days for trends) - Business model (ecommerce, lead gen, local services, SaaS) - Known CAPI implementation details (optional: Stape, CAPIG, direct, none) - Specific concerns (optional, e.g., "CPAs rising", "learning phase stuck", "creative fatigue") - Monthly ad spend (optional, helps contextualize findings) ## Instructions ### Step 1: Load Client Context Read `clients/{client-name}/` for existing profile, history, open items. Read `.claude/skills/meta-ads-deep-audit/references/insights-query-library.md` before constructing ANY Insights API calls. If no client folder exists, create one following the standard structure. ### Step 2: Account Discovery Run these calls first to understand account structure: **Account configuration:** ``` mcp__meta-ads__get_account_info ``` Capture: account name, timezone, currency, business info, funding source. **Campaign inventory:** WARNING: Meta's status=ACTIVE does NOT mean a campaign is delivering. Instagram post boosts, exhausted lifetime budgets, and past end date campaigns all show ACTIVE. ALWAYS verify by checking spend > $0 in the analysis date range before classifying a campaign as active. Step 1: Pull all campaigns with `mcp__meta-ads__get_campaigns` (do NOT filter by status alone). Step 2: Pull insights for the analysis date range (last 30 days default) at campaign level with spend field. Step 3: Only campaigns with spend > $0 in the analysis period are "currently delivering." Step 4: Campaigns with status=ACTIVE but $0 spend are "inactive despite active status." Report them separately if relevant, but do NOT include them in the active campaign analysis or make recommendations about them. Step 5: For campaigns with lifetime_budget and stop_time in the past, classify as COMPLETED regardless of status field. Capture for delivering campaigns: objective, status, budget optimization type (CBO vs ABO), special_ad_categories, created_time, spend in analysis period. **Pixel and tracking setup:** ``` mcp__meta-ads__get_pixels ``` Capture: pixel ID, CAPI connection status, configured events, domain verification. **Custom audience inventory:** ``` mcp__meta-ads__get_custom_audiences ``` Capture: all audiences with type (CUSTOM, LOOKALIKE, SAVED), size, date created, source. ### Step 3: Deploy Parallel Agents Deploy agents simultaneously using the query templates in `references/insights-query-library.md`. **Standard 5 Agent Swarm (default for most audits):** 1. **Meta Campaign Strategist Agent:** - Campaign structure: CBO vs ABO distribution, objective alignment, Advantage+ Shopping assessment - Ad set configuration: targeting breadth, placement settings, optimization events, bid strategies - Budget analysis: daily/lifetime budget distribution, spend vs budget utilization, pacing - Learning phase: effective_status for all ad sets, identify LEARNING_LIMITED - Delivery diagnostics: effective_status + issues_info for any underdelivering entities 2. **Meta Creative Analyst Agent:** Use the meta-creative-analyst agent definition. Covers: - Creative performance tiers (top 20% / middle 60% / bottom 20% by CPA/ROAS) - Hook rate, hold rate, completion rate for all video ads - Frequency analysis at creative level with fatigue detection - Entity ID diversity assessment (visual similarity grouping) - Ad quality diagnostics (quality_ranking, engagement_rate_ranking, conversion_rate_ranking) - Format diversity scoring (static, video, carousel, collection, DPA) - Advantage+ creative controls evaluation (degrees_of_freedom_spec) - Placement performance decomposition (Feed, Stories, Reels, AN, Marketplace) 3. **Meta Audience Specialist Agent:** - Custom audience inventory: types, sizes, freshness, source quality - Lookalike assessment: source audience quality, percentage, size - Audience overlap detection: identify ad sets targeting overlapping audiences - Exclusion strategy: are converters excluded from prospecting? Are retargeting and prospecting properly separated? - Advantage+ audience expansion: is expanded targeting enabled? Is it helping or hurting? - Audience size validation: use estimate_audience_size for key targeting configs 4. **Meta CAPI and Signal Quality Agent:** Use the meta-capi-auditor agent definition. Covers: - Pixel status and CAPI connection verification - EMQ assessment per event type (via `node scripts/meta-api.js emq-scores --dataset-id {pixel_id}`) - Event volume parity (Pixel vs CAPI) - Deduplication health - The 14 silent CAPI mistakes checklist - GA4 cross reference for independent volume validation - Signals Gateway readiness assessment 5. **Meta Wasted Spend Agent:** - High spend, low conversion ad sets (3x target CPA with $50+ spend) - High spend, low conversion ads (same criteria at ad level) - Audience Network spend vs performance (often high spend, low quality) - Placement level waste (which placements consume budget without converting) - Demographic waste (age/gender segments with high spend and no conversions) - Geographic waste (regions with disproportionate spend and poor returns) - Hour of day waste (time periods with spend and no conversions) - Total wasted spend quantification in dollars **Deep Audit 8 Agent Swarm (for comprehensive engagements or $50K+/month accounts):** Extends the standard 5 agents with 3 additional specialists: 6. **Meta Lead Gen Specialist Agent** (lead gen clients only): - Lead form inventory and configuration - Form completion rates by form type (MORE_VOLUME vs HIGHER_INTENT) - Cost per lead by form - Conversion Leads pipeline status (lead_id feedback loop via CAPI) - Lead quality by source (if CRM data available) 7. **Meta Catalog/DPA Specialist Agent** (ecommerce clients only): - Catalog health and feed diagnostics - Product set filter configuration - DABA (prospecting) vs DART (retargeting) performance - content_type mapping validation (product vs product_group) - Product level ROAS (top/bottom performers) 8. **Meta Competitive Intel Agent** (when Ads Library MCP available): - Competitor ad volume and creative patterns - New advertiser detection in the client's space - Creative format trends (what competitors are testing) - Seasonal creative patterns **Emergency Triage (for urgent performance drops):** Compressed 3 agent pattern for rapid diagnosis: 1. **Signal + Delivery Agent:** Pixel/CAPI status, learning phase resets, delivery diagnostics, effective_status checks 2. **Budget + Structure Agent:** Budget constraint detection, CPM spikes, frequency spikes, bid strategy health 3. **Creative + Audience Agent:** Creative fatigue signals, audience saturation, new competitor pressure ### Step 4: Synthesize Findings After all agents return: 1. Cross reference findings across agents (CAPI issues explain attribution gaps, frequency explains CPA rises, audience overlap explains delivery inconsistency) 2. Deduplicate overlapping findings 3. Calculate POAS where margin data is available 4. Quantify dollar impact for every finding 5. Apply priority tiers (Critical/High/Medium/Low) per OFM audit order: tracking > structure > bidding > audiences > creative > LP > attribution > wasted spend 6. Check every finding against `.claude/rules/data-verification.md` ### Step 5: Generate Deliverable Per `.claude/frameworks/deliverable-recipes.md`: - Executive Summary with Meta Ads health score (0 to 100) - Score Snapshot by category - Issue Inventory by Priority Tier - Detailed Findings with data tables and metric evidence - Action Plan (Immediate / Short Term / Medium Term / Ongoing) - POAS Analysis by product category (if applicable) - Andromeda Readiness Score (creative diversity, signal quality, account structure) Format as Word doc (.docx) per Michael's preferences. ## Audit Categories (24 total) ### Account Foundation (Categories 1 to 4) 1. Account configuration and business verification 2. Pixel installation and CAPI connection status 3. Event configuration and EMQ scoring 4. Deduplication health and event parity ### Campaign Structure (Categories 5 to 8) 5. Campaign objective alignment (is the right objective selected?) 6. CBO vs ABO structure assessment 7. Advantage+ Shopping campaign readiness and performance 8. Special Ad Category compliance ### Budget and Bidding (Categories 9 to 12) 9. Budget distribution across campaigns (70/20/10 assessment) 10. Bid strategy alignment (Lowest Cost, Cost Cap, Bid Cap, Min ROAS) 11. Learning phase status across all ad sets 12. Budget pacing and delivery optimization ### Audience (Categories 13 to 16) 13. Custom audience inventory, health, and freshness 14. Lookalike audience source quality and configuration 15. Audience overlap detection across ad sets 16. Exclusion strategy completeness (funnel stage separation) ### Creative (Categories 17 to 21) 17. Creative performance tiers and efficiency analysis 18. Creative fatigue detection (frequency curves, CTR decay, Entity ID diversity) 19. Format diversity scoring (image, video, carousel, collection, DPA) 20. Ad quality diagnostics (quality/engagement/conversion rankings) 21. Placement performance decomposition ### Measurement and Waste (Categories 22 to 24) 22. Attribution window configuration and cross platform comparison 23. Wasted spend quantification (by entity, placement, demo, geo, hour) 24. Cross platform Google + Meta deduplication analysis ## Expert Level Analysis Checklist Beyond the basic metrics, verify these expert areas: - [ ] Advantage+ Shopping vs manual campaign performance comparison - [ ] CBO budget allocation fairness (is one ad set starving others?) - [ ] Andromeda Entity ID diversity (are creatives too visually similar?) - [ ] First time impression ratio trend (leading indicator of audience satigue) - [ ] Conversion funnel drop off (ViewContent > AddToCart > Purchase ratios) - [ ] Frequency curves plotted over time per creative (not just current averages) - [ ] Learning phase reset history (were resets caused by unnecessary edits?) - [ ] Advantage+ Audience expansion measurement (compare narrow vs expanded reach) - [ ] Audience Network placement spend vs quality (often burns budget) - [ ] Post ID preservation (are social proof likes/comments being preserved when duplicating ads?) - [ ] Dynamic creative vs static creative performance comparison - [ ] Placement specific creative format alignment (9:16 for Stories/Reels, 1:1 for Feed) - [ ] Instagram vs Facebook performance divergence (different audience behaviors) - [ ] Cost cap vs lowest cost A/B comparison potential - [ ] Attribution window impact analysis (1d click vs 7d click differences) - [ ] Modeled vs observed conversion ratio (high modeling = weak signal) - [ ] Customer list match rates and freshness - [ ] Signals Gateway readiness assessment - [ ] Device performance divergence (iOS vs Android, mobile vs desktop) - [ ] Day of week and hour of day performance patterns - [ ] Retargeting window durations vs sales cycle alignment - [ ] Creative testing infrastructure (structured tests vs algorithmic only) - [ ] Incrementality testing recommendation (for clients spending >$10K/month on Advantage+) - [ ] v25.0 migration readiness (existing_customer_budget_percentage workaround) ## Data Freshness Caveats Always include with every data presentation: > "Meta Ads data for [date range]. Note: the most recent 3 days may shift as Meta's attribution window finalizes. Conversion lag for [vertical] means [X] additional days of data maturation expected." Default date ranges: - Performance analysis: last 30 days (ending yesterday, NOT today) - Trend analysis: last 90 days - Frequency analysis: last 14 days - Creative fatigue: last 14 days with 7 day comparison windows - Learning phase: current status plus last 30 days of changes ## Scoring Methodology **Meta Ads Health Score (0 to 100):** | Category | Weight | Scoring Criteria | |---|---|---| | Tracking and Signal Quality | 25% | Pixel active, CAPI connected, EMQ >7.0 average, dedup working, event parity >75% | | Campaign Structure | 20% | Correct objectives, appropriate CBO/ABO, learning phase exited, no delivery issues | | Creative Health | 20% | Format diversity >3 formats, no creative >frequency 3.0 on cold, top 20% producing >50% value | | Audience Strategy | 15% | Custom audiences fresh, lookalikes from quality sources, proper exclusions, no severe overlap | | Budget Efficiency | 10% | <15% wasted spend, proper 70/20/10 allocation, budget limited campaigns hitting targets | | Measurement | 10% | Correct attribution windows, cross platform dedup, GA4 alignment, incrementality awareness | Score bands: - 85 to 100: Excellent. Minor optimizations only. - 70 to 84: Good. Meaningful improvements available. - 55 to 69: Fair. Significant issues impacting performance. - 40 to 54: Poor. Major structural or tracking problems. - Below 40: Critical. Fundamental issues must be addressed before scaling.