> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Meta Ads (Facebook) audit profile, Vortex IQ

> What the Vortex IQ Meta Ads (Facebook) health audit checks: Meta Ads (Facebook) Account Health

**[Nerve Centre KPIs](/nerve-centre/kpi-cards/facebook-ads) · [Audit Profile](/nerve-centre/kpi-cards/facebook-ads/audit) · [Sentiment Settings](/nerve-centre/kpi-cards/facebook-ads/sentiment)**

Audits Meta Ads spend pacing, ROAS, conversion tracking parity (CAPI/Pixel), creative fatigue, and cross-channel revenue at risk.

## What this audit checks

### Authentication & access

* Long-lived access\_token present and not within 7 days of expiry (expires\_in / is\_long\_lived)
* Granted scopes include ads\_read, ads\_management, business\_management
* ad\_account\_id resolves and account\_status is ACTIVE on /me/adaccounts

### Spend & budget pacing

* Daily spend vs daily\_budget / lifetime\_budget pacing per campaign (under or over delivery)
* Ad sets pacing >120% of intended daily budget (runaway delivery)
* Campaigns with budget but zero spend in last 72h (delivery stalled)

### Campaign performance (ROAS/CTR/CPC)

* ROAS per campaign from /act\_{ad_account_id}/insights (purchase\_roas) vs threshold
* CTR decay vs prior 7D same-DOW window per ad set
* CPC drift above account average on active campaigns
* Disapproved or rejected ads still attached to active ad sets

### Conversion & attribution

* CAPI + Pixel event\_id match rate below parity floor (deduplication broken)
* Clicks rising while tracked conversions \<50% expected (silent tag failure)
* iOS 14.5+ attribution drift - modelled vs observed conversion gap widening

### Creative & audience health

* Ad sets with frequency >7 and CTR \<0.5% (creative fatigue + audience exhaustion)
* Active ad sets targeting custom audiences \<1000 (below Meta privacy floor, won't deliver)
* AdCreative status not ACTIVE while parent ad set is still spending

### Cross-channel revenue at risk

* Active catalog/DPA ads driving spend on commerce-sibling SKUs with qty=0 (ads-on-OOS)
* Audience overlap with klaviyo/dotdigital email subscribers (paying to reach owned contacts)
* Meta mobile landing pages with website\_performance LCP >4s and below-average CR

## Severity thresholds

| Signal             | Warn | Critical                                          |
| ------------------ | ---- | ------------------------------------------------- |
| `roas`             | -    | \< 1.0                                            |
| `ctr`              | -    | \< 0.5%                                           |
| `conversion_rate`  | -    | \< 0.5%                                           |
| `cpc`              | -    | > 2.0x account average                            |
| `wasted_spend_pct` | -    | > 25% of account spend on zero-conversion ad sets |
| `budget_pacing`    | -    | > 120% or \< 50% of intended daily budget         |

## Data sources

* `GET https://graph.facebook.com/v22.0/me/adaccounts` - List accessible ad accounts and account\_status
* `GET https://graph.facebook.com/v22.0/act_{ad_account_id}/campaigns` - Campaigns with objective, status, daily\_budget, lifetime\_budget, bid\_strategy
* `GET https://graph.facebook.com/v22.0/act_{ad_account_id}/adcreatives` - Ad creatives for fatigue and status checks
* `GET https://graph.facebook.com/v22.0/act_{ad_account_id}/insights` - Spend, ROAS, CTR, CPC, frequency, conversions per campaign/ad set
* `POST https://graph.facebook.com/v22.0/oauth/access_token` - Exchange/refresh OAuth access token
