Comprehensive ads audit for Meta/Google/TikTok with Health Score 0-100. 84 checkpoints across 6 dimensions (Account/Campaign/AdSet/Ad/Tracking/Optimization). Has 4 region variants for benchmarks. INCLUDES Dropshipping Audit Checklist (creative testing velocity, CRO signals, attribution accuracy). Trigger: 'ads audit', 'ad account audit', 'Meta audit', 'Google Ads audit', 'TikTok audit', 'dropshipping ads audit'.
npx skills add https://github.com/minhnv0807/ai-business-skills --skill 21-ads-audit-global
> Difference from 03-performance-eval-global:
> - 03 evaluates current performance (CPM, ROAS, funnel) — diagnoses symptoms.
> - 21 audits account configuration (setup, structure, tracking, creative) — scores 0-100 and finds systemic issues.
>
> Insight before numbers. Lead with judgment; illustrate with metrics.
What is an ads audit?
A structured review of your ad accounts (Meta, Google, TikTok) to find leaks, misconfigurations, and missed opportunities. The output is a Health Score (0-100), a list of Quick Wins, and a 7-day Action Plan.
When do you need one?
What you'll need before starting:
How long does it take?
Before audit, pull two contexts:
product-marketing-context-global if not already in conversation. This gives the auditor: pricing, target CAC, business model, current channels.| Region | File | Currency | Key benchmarks |
|--------|------|----------|----------------|
| US / North America | variants/01-us.md | USD | Meta CPM $7-12, Google CPC $1-3, ROAS 3-5x |
| EU / UK | variants/02-eu.md | EUR / GBP | Meta CPM €5-10, Google CPC €1-3, ROAS 3-4x |
| SEA (VN, TH, ID, PH, SG, MY) | variants/03-sea.md | USD-equivalent | Meta CPM $1-2, Google CPC $0.30-1, ROAS 2-3x |
| LATAM (BR, MX, AR, CO, CL) | variants/04-latam.md | USD-equivalent | Meta CPM $0.50-1.5, Google CPC $0.20-0.80, ROAS 2-3x |
> Why region matters: A $5 CPM is excellent in US but terrible in Vietnam. Audit grading without regional context produces false positives or false negatives.
Ask up to 4 questions:
If user has connected an MCP server, pull data directly:
| Platform | MCP recommended | Key tools used |
|----------|-----------------|----------------|
| Meta Ads | Meta Official MCP (mcp.facebook.com/ads) | ads_insights_anomaly_signal, ads_insights_auction_ranking_benchmarks, ads_get_dataset_quality, ads_get_opportunity_score |
| Google Ads | Google Official MCP | GAQL: campaign performance, search terms, quality score |
| TikTok Ads | AdsMCP / tiktok-ads-mcp-server | Performance reports, creative library |
| Cross-platform | Adspirer ads-mcp | Unified analytics across 175+ tools |
Sample Meta Insights fields when MCP unavailable:
fields=spend,impressions,clicks,ctr,cpc,cpm,actions,cost_per_action_type,
purchase_roas,frequency,reach
date_preset=last_30d
level=adset
breakdowns=age,gender
Sample GAQL query for Google audit:
SELECT campaign.name, campaign.status, campaign.bidding_strategy_type,
metrics.impressions, metrics.clicks, metrics.cost_micros,
metrics.conversions, metrics.cost_per_conversion,
metrics.search_impression_share
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
AND campaign.status != 'REMOVED'
ORDER BY metrics.cost_micros DESC
Health Score = Σ(Check_pass × Severity_weight × Dimension_weight)
/ Σ(Check_total × Severity_weight × Dimension_weight) × 100
| Severity | Multiplier | Meaning |
|----------|-----------|---------|
| Critical | 5.0× | Active money/data loss — fix today |
| High | 3.0× | Major impact — fix within 7 days |
| Medium | 1.5× | Best practice gap — fix within 30 days |
| Low | 0.5× | Optimization — fix when possible |
| Score | Grade | Meaning |
|-------|-------|---------|
| 90-100 | A | Excellent — maintain & scale |
| 75-89 | B | Good — a few improvements needed |
| 60-74 | C | Average — needs serious investment |
| 40-59 | D | Poor — significant performance leaks |
| <40 | F | Critical — likely losing money in real time |
1. Account (10%) — billing, permissions, BM/MCC structure, account warnings
2. Campaign (15%) — objectives, separation (cold/warm/retarget), budget allocation
3. AdSet/AdGroup (20%) — audience, budget, scheduling, exclusions, learning phase
4. Ad/Creative (25%) — diversity, freshness, hook quality, format mix
5. Tracking (20%) — pixel/CAPI/server-side, event quality, attribution model
6. Optimization (10%) — bid strategy, ML signals, budget pacing, automation rules
> Region-specific benchmark numbers live in the variant files. The checkpoint logic is identical worldwide.
| # | Check | Severity |
|---|-------|----------|
| A01 | Business Manager / MCC structured (single source of truth) | High |
| A02 | Account billing healthy (no failed charges in 30d) | Critical |
| A03 | No active account warnings or restrictions | Critical |
| A04 | Domain verified (Meta) or website verified (Google/TikTok) | High |
| A05 | iOS 14.5+ Aggregated Event Measurement configured (Meta) | High |
| A06 | Brand safety / suitability set (Meta + Google) | Medium |
| A07 | User access roles minimized (no over-permissioned users) | Medium |
| A08 | Spending limit set per account (prevents runaway charges) | Medium |
| A09 | 2FA enabled on all admin accounts | High |
| A10 | Conversion API token rotated within 12 months | Low |
| A11 | Account currency matches market currency | Low |
| A12 | Tax/VAT configuration correct for region | Low |
| # | Check | Severity |
|---|-------|----------|
| C01 | Cold / warm / retarget campaigns separated | High |
| C02 | Campaign objectives match real business outcome | Critical |
| C03 | No more than 3-5 active "core" campaigns | Medium |
| C04 | Campaign Budget Optimization (CBO) used appropriately | Medium |
| C05 | No overlapping audiences across active campaigns | High |
| C06 | Brand vs non-brand campaigns separated (Google) | High |
| C07 | Search vs Performance Max separated (Google) | High |
| C08 | iOS / Android segregation when economics differ | Low |
| C09 | Budget allocated proportionally to ROAS-by-funnel-stage | High |
| C10 | Naming convention consistent (Brand_Funnel_Geo_Date) | Low |
| C11 | Campaign-level frequency caps set (where supported) | Medium |
| C12 | Holiday/promo campaigns tagged & sunset-dated | Low |
| C13 | Negative geo / language exclusions set | Medium |
| C14 | Brand keywords campaign exists with good QS (Google) | High |
| # | Check | Severity |
|---|-------|----------|
| S01 | Daily budget ≥ 5× target CPA per ad set | Critical |
| S02 | Not editing ad sets currently in Learning Phase | High |
| S03 | Audience size 1M-50M for cold prospecting (Meta) | High |
| S04 | Audience overlap between ad sets <25% | High |
| S05 | Lookalikes built from quality seeds (purchasers, not clickers) | High |
| S06 | Negative keywords list maintained (Google) | High |
| S07 | Match types appropriate (Broad+Smart Bidding, or Phrase/Exact) | High |
| S08 | Search term report reviewed within 14 days | High |
| S09 | Exclusion of past purchasers from acquisition campaigns | Critical |
| S10 | Placement: Advantage+/automatic where appropriate | Medium |
| S11 | Ad scheduling matches actual peak-conversion hours | Medium |
| S12 | Bid strategy matches account stage (Lowest Cost early, Cost Cap mature) | High |
| S13 | Demographic restrictions justified by data (not prejudice) | Medium |
| S14 | TikTok-specific: SmartTargeting tested vs manual | Medium |
| S15 | Quality score average ≥6/10 (Google) | High |
| S16 | Ad set count per campaign ≤5 (Meta) for ML efficiency | Medium |
| # | Check | Severity |
|---|-------|----------|
| AD01 | At least 10 truly different creatives per active ad set | High |
| AD02 | No single creative running >21 days continuously | High |
| AD03 | Frequency <3.5 on cold audience | High |
| AD04 | All 3 formats present (video / image / carousel) | Medium |
| AD05 | Videos have sound/music (TikTok-critical) | Critical |
| AD06 | First 3 seconds hook tested (Hook Rate >25%) | High |
| AD07 | Captions / on-screen text present (sound-off viewing) | High |
| AD08 | UGC / review-style creative present (≥1) | Medium |
| AD09 | CTA explicit in creative (voice or text) | High |
| AD10 | Vertical 9:16 used for Stories/Reels/TikTok | High |
| AD11 | Resolution ≥720p (1080p preferred) | Medium |
| AD12 | RSA: ≥8/15 headlines, ≥4/4 descriptions filled (Google) | High |
| AD13 | Asset strength "Good" or higher on RSA (Google) | Medium |
| AD14 | Sitelink / callout / call extensions present (Google) | Medium |
| AD15 | Landing page load time <3s on 4G | High |
| AD16 | Landing page mobile-first design verified | Critical |
| AD17 | Creative-to-LP message match (no bait-and-switch) | High |
| AD18 | Compliance: no policy violations (alcohol, health, financial) | Critical |
| # | Check | Severity |
|---|-------|----------|
| T01 | Pixel/Tag installed on all relevant pages | Critical |
| T02 | Purchase / Lead / KeyEvent firing accurately | Critical |
| T03 | Conversion API (CAPI / Enhanced Conversions) deployed | High |
| T04 | Event Match Quality ≥6.0 (Meta) | High |
| T05 | No duplicate events (deduplication ID set) | Critical |
| T06 | UTM parameters present on all paid links | Medium |
| T07 | GA4 linked to Google Ads + GA4 linked to BigQuery | High |
| T08 | Conversion windows aligned across platforms | High |
| T09 | Server-side tracking layer (GTM SS, Stape) considered | Medium |
| T10 | Triple Whale / Hyros / Northbeam reconciled vs platform (DTC) | High |
| T11 | TikTok Pixel + Events API both firing | High |
| T12 | View-through and click-through windows documented | Medium |
| T13 | Cross-domain tracking working (multi-domain checkout) | High |
| T14 | First-party data collection (email/phone) for CAPI matching | High |
| T15 | Cookie consent compliant (GDPR / CCPA / LGPD) | Critical |
| T16 | Bot/spam traffic filtered from conversion data | Medium |
| # | Check | Severity |
|---|-------|----------|
| O01 | Automated rules in place (pause low ROAS, scale winners) | Medium |
| O02 | Budget pacing reviewed weekly | Medium |
| O03 | Creative refresh cadence set (≥30% new every 14 days) | High |
| O04 | A/B testing framework defined (one variable at a time) | Medium |
| O05 | Reporting cadence: daily skim, weekly deep-dive | Low |
| O06 | Diagnostics tab reviewed (Quality, Engagement, Conversion) | Medium |
| O07 | Performance reviewed by funnel stage (TOFU/MOFU/BOFU) | High |
| O08 | Stop-loss thresholds defined per campaign | High |
After scoring, surface the top 5-10 actions a user can do today (<15 minutes each).
START → Is any Critical check failing?
├─ YES → Fix in next 24 hours (account-level issues first)
│ ├─ A02/A03 (billing/warning) → fix immediately
│ ├─ T01/T02/T05 (tracking broken) → fix before any more spend
│ ├─ S01 (budget < 5× CPA) → increase budget or pause
│ └─ AD18 (policy violation) → revise creative
│
└─ NO → Score Critical/High Quick Wins by impact:
├─ Pause "wasted spend" keywords / ad sets (>$200 spend, 0 conv)
├─ Add exclusion of past purchasers from cold campaigns
├─ Refresh top-frequency creative (>3.5 freq)
├─ Enable CAPI / Enhanced Conversions
├─ Add UTM parameters to untagged ads
└─ Connect GA4 ↔ Google Ads if not linked
Each Quick Win must include: action, expected impact, time required, owner.
> Dropshipping has unique audit needs: high creative volume, thin margins, attribution opacity, and compressed test cycles. This section augments — not replaces — the 84 universal checkpoints.
| Check | Pass criteria | Severity |
|-------|---------------|----------|
| New creatives launched per week | ≥10 (winning store benchmark) | Critical |
| Creative-to-spend ratio | 1 winning ad funds 4-5 tests | High |
| Hook variations tested | ≥3 hooks per product | High |
| UGC creator pipeline active | ≥2 UGC creators delivering weekly | High |
| Cycle time from brief to launch | <72 hours | High |
> Failure mode: A store running 2-3 creatives "until they die" instead of testing 10+/week is starving Meta's algorithm and ad fatigue compounds. Fix: build a creative ops calendar (see 06-ugc-egc-brief-global).
| Check | Pass criteria | Severity |
|-------|---------------|----------|
| Testing layer uses ABO (Ad Set Budget) | ≥3 ad sets, $20-50/day each | High |
| Scaling layer uses CBO (Campaign Budget) | Top winners only, single CBO | High |
| Budget reallocates within 3-7 days of clear winner | Document rule + execute | Medium |
| No mixed CBO with non-comparable ad sets | Audit campaign structure | High |
| Check | Pass criteria | Severity |
|-------|---------------|----------|
| Pixel + CAPI both firing on Purchase event | Verified in Test Events | Critical |
| EMQ ≥7.0 (dropshipping should beat 6.0 floor) | Events Manager | High |
| Email + phone + first-name + last-name passed via CAPI | Backend integration | Critical |
| Server-side tracking via Stape/GTM SS for AOV>$50 stores | Verified deployment | High |
| iOS attribution gap reconciled with Triple Whale or Hyros | Compare last 30 days | High |
| Check | Pass criteria | Severity |
|-------|---------------|----------|
| Mobile load time <2.5s (LCP) | PageSpeed Insights | Critical |
| Add-to-Cart rate ≥6% (sessions → ATC) | GA4 / Shopify | High |
| Checkout conversion ≥40% (ATC → Purchase) | GA4 / Shopify | High |
| Hero matches winning ad (creative-LP message match) | Manual review | Critical |
| Trust badges, reviews, return policy visible above fold | Manual review | High |
| Exit-intent + abandoned cart sequence active | Klaviyo / equivalent | High |
| Check | Pass criteria | Severity |
|-------|---------------|----------|
| UTMs use consistent schema (utm_source/medium/campaign/content) | URL builder doc | High |
| Triple Whale / Hyros / Northbeam connected | At least one MMP active | High |
| Platform-reported revenue vs Shopify revenue gap <15% | Reconciliation report | High |
| Post-purchase survey ("How did you hear about us?") active | Order form / KnoCommerce | Medium |
| Customer LTV tracked, not just first-order revenue | Cohort report quarterly | High |
| Check | Pass criteria | Severity |
|-------|---------------|----------|
| Net margin per order calculated (after COGS, ad spend, fees) | Spreadsheet or Lifetimely | Critical |
| MER (Marketing Efficiency Ratio = total revenue / total ad spend) tracked daily | Dashboard | High |
| Break-even ROAS documented and visible | Operations dashboard | Critical |
| Refund/chargeback rate <5% | Shopify reports | High |
| Profit-per-customer rising or flat (not declining) | 90-day cohort | High |
> Dropshipping cross-reference: When auditing dropshipping accounts, also call 29-dropshipping-mastery-global for product-fit and supply-chain audit beyond ad-account scope.
# Ads Audit: [Brand / Product]
Audit date: [YYYY-MM-DD]
Region: [US / EU / SEA / LATAM]
Auditor: [Agency / In-house]
Spend audited: [$ — last 30d]
## Executive Summary
| Platform | Score | Grade | Top issue |
|----------|-------|-------|-----------|
| Meta Ads | [n]/100 | [A-F] | [1-line] |
| Google Ads | [n]/100 | | |
| TikTok Ads | [n]/100 | | |
| **Aggregate** | **[n]/100** | **[Grade]** | |
## Critical Issues (fix in 24 hours)
[List failed Critical checks with remediation steps]
## Quick Wins (today, <15 min each)
[Top 5-10 actions, sorted by impact]
## By Dimension
### 1. Account — [score]/10
[Pass/fail per check, with screenshots if MCP-pulled]
### 2. Campaign — [score]/10
[...]
[Continue for all 6 dimensions]
## By Platform
### Meta Ads — [score]/100
[Breakdown by dimension]
### Google Ads — [score]/100
[...]
### TikTok Ads — [score]/100
[...]
## Dropshipping Audit (if applicable)
[6 sub-sections from Dropshipping Checklist]
## 7-Day Action Plan
| Day | Action | Platform | Owner | Expected outcome |
|-----|--------|----------|-------|------------------|
| Day 1 | [Quick wins + Critical fixes] | | | |
| Day 2-3 | [High priority] | | | |
| Day 4-5 | [Tracking + creative] | | | |
| Day 6-7 | [Setup + test deploy] | | | |
## 30-Day Forecast
[Realistic improvement estimate if all Critical/High fixed]
## Appendix
- Raw data exports
- Screenshots
- MCP query logs (if used)
| When you need | Call skill |
|---------------|-----------|
| Diagnose current KPIs and funnel | 03-performance-eval-global |
| Deep data analysis (descriptive→prescriptive) | 13-data-analysis-global |
| Refresh creative after audit finds fatigue | 05-ad-copy-global + 06-ugc-egc-brief-global |
| Reverse-calc budget after fixing tracking | 10-reverse-kpi-calc-global |
| Dropshipping product/supply audit | 29-dropshipping-mastery-global |
| Set up A/B test for fixes | 19-ab-test-setup-global |
06 for creative)Load the appropriate file before scoring:
variants/01-us.md — United States, Canadavariants/02-eu.md — European Union, UKvariants/03-sea.md — Vietnam, Thailand, Indonesia, Philippines, Singapore, Malaysiavariants/04-latam.md — Brazil, Mexico, Argentina, Colombia, ChileEach variant contains: healthy CPM/CPC ranges, ROAS targets per business model, common red flags, region-specific compliance gates, and tracking platform peculiarities.
Plan, write, and diagnose Instagram Reels that earn cold-audience reach. Use whenever someone wants a reels script or reels hook for a specific Reel, is debugging why a Reel flopped, wants to know if a draft is worth testing with Trial Reels before going public, or needs a reels caption tuned for the post-hashtag instagram algorithm. Built around what Mosseri has publicly named as the signal hierarchy (watch time, sends per reach, likes per reach), the Trial Reels test-then-publish loop, the Original Content Guidelines and 30-day recovery window, the Edits app, and Reels Insights metrics (skip rate, share rate, followers from this post). Covers a Reels-specific reels strategy: send-driving CTAs, originality without watermarks, audio licensing by account type, captions as the primary SEO signal, and the anti-patterns that quietly cap distribution. Pattern-based guidance, not a virality promise.
Perform relative value analysis on bonds by combining pricing, yield curve context, credit spreads, and scenario stress testing. Use when analyzing bond richness/cheapness, computing spread decomposition, comparing bonds, assessing bond value vs curves, or running rate shock scenarios.
Build quick IRR/MOIC sensitivity tables for PE deal evaluation. Models returns across entry multiple, leverage, exit multiple, growth, and hold period scenarios. Use when sizing up a deal, stress-testing assumptions, or preparing IC returns exhibits. Triggers on "returns analysis", "IRR sensitivity", "MOIC table", "what's the return at", "model the returns", or "back of the envelope".
Design lean startup experiments (pretotypes) for a new product. Creates XYZ hypotheses and suggests low-effort validation methods like landing pages, explainer videos, and pre-orders. Use when validating a new product idea, creating pretotypes, or testing market demand.
Amazon Alexa for Shopping Q&A automation: submits questions to Amazon's Alexa/Rufus AI shopping assistant and collects response text; supports optional keyword search context (navigate to search results page before asking for category-specific answers). Use when user mentions Amazon Alexa, Rufus, Amazon shopping assistant, Amazon AI chat, ask Amazon, Amazon Q&A, automate Alexa questions, Rufus chatbot, Amazon assistant automation, collect Alexa responses, bulk question submission to Amazon, keyword search context, category research. Also applies to extracting Amazon product recommendations from conversational AI, automating repeated queries to Amazon's AI shopping feature, collecting Alexa shopping responses at scale, or market research within a specific product category.
When the user wants to create UGC ad campaigns, recruit UGC creators, generate AI UGC content, or scale with user-generated content. Also use when the user mentions 'UGC,' 'user-generated content,' 'creator ads,' 'Spark Ads,' 'whitelisting,' 'AI UGC,' 'Arcads,' 'Creatify,' 'creator brief,' or 'UGC testing.' This skill covers the UGC growth framework from creator recruitment through AI-powered scaling. Do NOT use for technical implementation, code review, or software architecture.
Parse, modify, validate, and patch simulator input files. Use when working with reservoir simulation input files, testing scenarios, or validating simulation configurations. This implementation supports reference format (.DATA); other simulators use different extensions (e.g., .afi, .DAT). Supports natural language modifications, keyword patching, and syntax validation.
Triage ASM/recon output for ownership before testing — separate the target's real assets from namespace-collision noise. Automated recon keyword-matches on the brand name, so for any target whose name is a common/dictionary word, the output is dominated by assets belonging to UNRELATED same-named companies (repos, cloud buckets, mobile apps, breach corpora, typosquats). Built from an authorized engagement where an ASM report's "Criticals" were overwhelmingly false positives and the combo/repos/mobile/bucket lists were polluted with unrelated same-named orgs. Use at the START of any engagement, immediately on receiving any ASM/recon/OSINT dataset, BEFORE testing anything.
Take minhnv0807/21-ads-audit-global from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.