What this audit checks
Authentication & access
- OAuth2 client_credentials token mints from /oauth2/token and is cached under the 1-hour TTL
- advertiser_id resolves to an active advertiser via /2024-07/advertisers
- client_secret age within rotation window (warn beyond 90 days)
Spend & budget pacing
- Daily spend vs dailyBudget per campaign from /2024-07/statistics/report (flag under-pacing <0.5x and over-pacing >1.5x)
- Spend approaching spendLimit on capped campaigns (warn at >0.9x)
- Zero-conversion spend burst on any dynamic campaign in the trailing 72h
- Active campaigns with spend but status Paused or Archived mismatch
Campaign performance (ROAS / CTR / CPC)
- ROAS per campaign from /2024-07/statistics/report vs roas threshold band
- CTR per campaign and creative against ctr threshold band
- CPC drift vs prior 7D same-day-of-week (flag >25% rise)
- Retargeting ROAS drop >25% vs prior 7D same-DOW (cookie/ITP signal)
Conversion & attribution
- Conversion rate per campaign vs conversion_rate threshold band
- Criteo One Tag firing without cookie set (ITP / cross-site) on >20% of sessions
- First-party audience segment population below 500 algorithmic floor
- Attributed revenue present in statistics report for spending campaigns (zero-revenue-with-spend alert)
Creative & audience health
- Dynamic creatives in error/disapproved status from /2024-07/marketing-solutions/creatives
- Campaigns with catalogId set but catalog has feed rejections (dynamic creative cannot render)
- Audience segments under the 500-population floor degrading bids
- Creative format coverage - dynamic campaigns missing a Dynamic-format creative
Cross-platform revenue at risk
- Active dynamic ads on commerce-sibling SKUs with qty=0 (ads on out-of-stock)
- Spend on dynamic campaigns whose linked catalog has active feed rejections
- Landing pages with LCP p75 >4000ms and conversion rate below half account average
- Retargeted audiences overlapping email subscribers (branded/owned-channel cannibalisation)
Severity thresholds
Data sources
POST https://api.criteo.com/oauth2/token- Mint OAuth2 client_credentials access token (cache for 1 hour)GET https://api.criteo.com/2024-07/advertisers- Resolve advertiser account, currency, country, statusGET https://api.criteo.com/2024-07/marketing-solutions/campaigns- List campaigns - status, objective, dailyBudget, spendLimit, catalogIdGET https://api.criteo.com/2024-07/marketing-solutions/creatives- List creatives - format and approval status for dynamic-creative healthPOST https://api.criteo.com/2024-07/statistics/report- Pull spend, ROAS, CTR, CPC, conversions, revenue per campaign/period