What this audit checks
Spend efficiency
- ACOS above merchant target across campaigns
- TACOS trend deteriorating WoW
- Campaigns with >$X spend and <1% conversion (zero-conversion spend)
- Bid creep - auto-bidding pushing CPC above category benchmark
- Dayparting waste - spend in low-converting hours
Cross-platform leak (highest-value area)
- Active ads on out-of-stock ASINs (sibling = amazon.listing.quantity = 0)
- Active ads on suppressed listings (sibling = amazon.listing.status = SUPPRESSED)
- Active ads on no-buy-box ASINs (sibling = amazon.listing.buyBoxPercentage < 50)
- Branded campaigns running while DTC is on Black-Friday discount (sibling = shopify.discount_active) - paying for traffic you’d get free
Search-term hygiene
- Negative-keyword candidates - search terms with >$10 spend, zero orders
- Search-term harvest queue - auto-campaign winners not yet promoted
- Branded-vs-non-branded mix anomaly (>80% branded = dependency risk; <20% = under-defending the brand)
- Broad-match exposure across campaigns >40% of spend
Campaign hygiene
- Campaigns enabled with no active ads (orphan campaigns)
- Ad groups with default-bid 50% above category median
- Campaigns paused >30d but not archived (cluttering reporting)
- End-dated campaigns still spending (date-bound campaigns past end_date that didn’t pause)
Account & creative health
- Disapproved ads in active campaigns
- Sponsored Brands creatives with broken landing pages (hero ASIN suppressed)
- DSP creatives missing brand-safety attestation
- Refresh-token expiry within 30 days
Severity thresholds
Data sources
GET https://advertising-api.{region}/v2/profiles- Auth + profile sanityPOST https://advertising-api.{region}/sp/campaigns/list- Campaign-level state + budgetPOST https://advertising-api.{region}/sp/productAds/list- Ad → ASIN mapping (cross-platform join key)POST https://advertising-api.{region}/reporting/reports- Async campaign / search-term / target reports