What this audit checks
Spend efficiency
- ROAS below paid-social target (Spark + In-Feed mix)
- Zero-conversion spend on campaigns older than 7 days
- CPA spike vs 30-day rolling baseline
- Budget utilisation pacing mid-month
Catalog & creative
- TikTok Shop ads serving on out-of-stock SKUs
- Creative fatigue - frequency >5 with CTR <1%
- Disapproved creatives still active in campaigns
- Spark Ads boosting creators paid out-of-platform (double-spend)
Tracking & attribution
- Events API + Pixel both broken on checkout
- Clicks > 0 but conversions = 0 (tracking broken)
- iOS attribution drift vs prior period
- Missing UTM parameters on destination URLs
Cross-channel leak
- Active Shop ads on out-of-stock SKUs (commerce sibling)
- Branded campaigns cannibalising organic search (GSC sibling)
- Mobile landing pages with poor Web Vitals (website_performance)
- Spend on campaigns with active Feedonomics feed rejections
Severity thresholds
| Signal | Warn | Critical |
|---|---|---|
roas | 2 | - |
cpa | 50 | 100 |
zero_conversion_spend_pct | 5 | 12 |
creative_fatigue_frequency | 5 | 8 |
pixel_event_decay_pct | 20 | 40 |
Data sources
GET https://business-api.tiktok.com/open_api/v1.3/user/info/- Auth + account sanityGET https://business-api.tiktok.com/open_api/v1.3/advertiser/info/- Advertiser metadata + currencyGET https://business-api.tiktok.com/open_api/v1.3/campaign/get/- Campaign inventory + budgetsPOST https://business-api.tiktok.com/open_api/v1.3/report/integrated/get/- Spend / clicks / conversions aggregates