What this audit checks
Authentication & access
- OAuth2 refresh token at /v2/oauth/token still exchanges for a valid access token
- account_id and advertiser_id resolve against /v2/accounts (no 401/403)
- read scope present and reporting endpoint /v2/reports/performance returns data, not 429
Spend & budget pacing
- Campaign total_budget vs actual spend pace within band (no under/over delivery)
- pacing_strategy=accelerated campaigns burning budget faster than even-pace target
- Zero-conversion wasted spend per campaign over trailing window
- Daily spend variance vs 7-day same-DOW baseline
Campaign performance (ROAS / CTR / CPC)
- ROAS per campaign from /v2/reports/performance below threshold
- Native-format CTR (highest-CTR format) holding vs prior 7D same-DOW window
- CPC drift per campaign_type (display vs native vs video vs ctv)
- active campaigns (state=active) delivering impressions, not stalled
Conversion & attribution
- Universal Pixel firing rate vs baseline (drop signals tracking breakage)
- Conversion rate per campaign from /v2/reports/performance below threshold
- Attribution gap: spend recorded with no matched conversions over 72h
Creative & audience health
- AdCreative review_status not rejected/pending on active campaigns (/v2/creatives)
- Custom audiences below the 250-member algorithmic delivery floor
- Cross-device frequency cap breached (same user served >5x in window)
- Creative fatigue: CTR decay on long-running creatives
Cross-channel revenue at risk
- PMP catalog campaigns driving spend on commerce-sibling SKUs with qty=0
- Catalog campaign spend while Feedonomics feed has live rejections
- Landing pages with LCP >4s and conversion rate below half of account average
Severity thresholds
| Signal | Warn | Critical |
|---|---|---|
roas | - | < 1.0 |
ctr | - | < 0.10% |
conversion_rate | - | < 0.5% |
cpc | - | > 2.5x account median |
wasted_spend_pct | - | > 30% |
budget_pacing | - | < 70% or > 130% of even-pace target |
Data sources
GET https://api.stackadapt.com/v2/accounts- Resolve account/advertiser identity and currencyGET https://api.stackadapt.com/v2/campaigns- Campaign state, budget, pacing_strategy, campaign_typeGET https://api.stackadapt.com/v2/creatives- Creative format, state, and review_statusGET https://api.stackadapt.com/v2/reports/performance- ROAS, CTR, CPC, conversions, spend by campaignPOST https://api.stackadapt.com/v2/oauth/token- Refresh OAuth access token