Meta Ads Audit
Comprehensive Meta Ads (Facebook + Instagram) account audit using live data via Cogny's MCP server.
Requires: Cogny Agent subscription ($9/mo) — Sign up
Works with
Meta is primary. The same audit (structure, fatigue, audiences, pacing) runs on any other paid social account the workspace has connected.
| Job | Meta (primary) | TikTok | Snapchat | X | |
|---|---|---|---|---|---|
| Accounts | tool_list_ad_accounts | tool_list_advertisers | tool_list_organizations → tool_list_ad_accounts(organization_id) | tool_list_ad_accounts | tool_list_ad_accounts |
| Structure | tool_get_campaigns, tool_get_ad_sets, tool_get_ads | tool_get_campaigns, tool_get_ad_groups, tool_get_ads (advertiser_id) | tool_get_campaigns, tool_get_ad_squads, tool_get_ads | tool_get_campaigns, tool_get_ad_groups, tool_get_ads | tool_get_campaigns, tool_get_line_items, tool_get_promoted_tweets (account_id) |
| Performance | tool_get_insights(level, date_preset) | tool_get_insights(start_date, end_date, level: "AUCTION_CAMPAIGN" / "AUCTION_ADGROUP" / "AUCTION_AD") | tool_get_stats(entity_id, start_time, end_time, level) | tool_get_reporting(start_date, end_date, level) | tool_get_analytics(entity, entity_ids, start_time, end_time) |
| Audiences / tracking | tool_get_custom_audiences, tool_get_pixels | tool_get_audiences, tool_get_pixels | tool_list_segments, tool_list_pixels | tool_get_custom_audiences, tool_get_conversion_events | tool_get_tailored_audiences, tool_get_web_event_tags |
| B2B lead quality | Fibbler get_meta_ads_campaign_analytics | — | — | — | — |
Tool names omit the mcp__cogny__mcp__<Prefix>__ part. What differs:
- Frequency is returned by Meta, TikTok (
frequencymetric) and Reddit (FREQUENCYfield). On Snapchat and X, request reach/uniques fields if available, otherwise judge fatigue by CTR decay over time instead. - Units: Reddit and Snapchat budgets and bids are in micros (÷ 1,000,000); check whether a spend field is micros before reporting it. X analytics needs explicit
entity_ids. - Conversions use each platform's own pixel and attribution window; don't compare CPL across platforms as if it were the same event.
- Every account has its own currency. With several platforms connected, report one section per platform side by side and never sum spend or leads across them.
Prerequisites Check
Call mcp__cogny__list_integrations. If Meta Ads is connected, run the steps below. If only TikTok, Snapchat, Reddit or X is connected, run the same steps with that platform's tools from the table and title the report with the platform name. If none is connected:
This skill requires a paid social integration (Meta, TikTok, Snapchat, Reddit or X Ads) via Cogny's MCP server. Sign up at https://cogny.com and connect your ad account.
Usage
/meta-ads-audit — full audit
/meta-ads-audit audiences — audience analysis only
/meta-ads-audit creatives — creative performance only
/meta-ads-audit budget — budget pacing only
Full Audit Steps
1. Account Discovery
mcp__cogny__mcp__Meta_Ads__tool_list_ad_accounts
2. Campaign Overview (last 30 days)
mcp__cogny__mcp__Meta_Ads__tool_get_campaigns(ad_account_id, status_filter: ["ACTIVE"]) mcp__cogny__mcp__Meta_Ads__tool_get_insights(ad_account_id, level: "campaign", date_preset: "last_30d")
3. Ad Set Analysis
mcp__cogny__mcp__Meta_Ads__tool_get_ad_sets(ad_account_id) mcp__cogny__mcp__Meta_Ads__tool_get_insights(ad_account_id, level: "adset", date_preset: "last_30d")
Check: audience overlap, frequency saturation, demographic breakdown
4. Creative Performance
mcp__cogny__mcp__Meta_Ads__tool_get_ads(ad_account_id) mcp__cogny__mcp__Meta_Ads__tool_get_insights(ad_account_id, level: "ad", date_preset: "last_30d")
Flag: fatigue (frequency > 3), low CTR, single-creative ad sets
5. Audience Health
mcp__cogny__mcp__Meta_Ads__tool_get_custom_audiences(ad_account_id) mcp__cogny__mcp__Meta_Ads__tool_get_pixels(ad_account_id)
Check: audience sizes, stale audiences, pixel health
5b. Lead quality (enhanced when Fibbler is connected)
For B2B lead-gen accounts, Meta's leads say nothing about whether they became pipeline.
mcp__cogny__mcp__app-fibbler-co__get_meta_ads_campaign_analytics(time_period: "90d") mcp__cogny__mcp__app-fibbler-co__get_deal_attribution_summary(source: "META_ADS", time_period: "90d")
Flag campaigns with cheap CPL but no influenced pipeline, and a high untaggedVisits count (missing UTMs caps attribution). Fibbler's "engagements" are not conversions, and its pipeline is influence, not credit; show it next to Meta's numbers, never added to them.
6. Budget Pacing
Compare daily budget vs actual spend for last 7 days. Flag:
- Under-pacing (< 70% of budget)
- Over-pacing (> 110% of budget)
- Budget waste on non-converting campaigns
7. Report
[Meta / TikTok / Snapchat / Reddit / X] Ads Audit: [Account Name] ([currency]) Health Score: X/100 Account Overview (30d): Spend: [X] | Reach: [X] | Leads: [X] | CPL: [X] Influenced pipeline (Fibbler, if connected): [X] Active Campaigns: [N] Top Performer: [Campaign] — [CPL/ROAS] Worst Performer: [Campaign] — [why] Issues Found: [N] - [Critical] ... - [High] ... Top 3 Actions: 1. ... 2. ... 3. ...
Recording findings
Use create_ticket when the workspace has it (Cloud) and create_finding otherwise (Solo).
The fields differ; see section 2 of ../../skills/marketing-engineer/references/mcp-routing.md.


