What this audit checks
Authentication & access
- TTD-Auth API token rejected or expired (validate against /v3/authentication/validate)
- Partner ID / Advertiser ID mismatch - token resolves to a different advertiser than configured
- 429 throttling on reporting or query endpoints - Retry-After backoff exceeded
Spend & budget pacing
- Campaigns out of pacing across the flight window (PacingMode vs actual delivery drift >20%)
- Budget under-delivering - daily burn below flat-line needed to spend Budget by EndDate
- Budget over-delivering - PaceAhead campaigns burning the flight early, risk of mid-flight blackout
- End-dated campaigns still spending past EndDate (date-bound flights that did not stop)
Campaign performance (ROAS / CTR / CPC)
- ROAS per campaign below merchant target (myreports advertiser report)
- ROAS drop >25% vs prior 7D same-day-of-week (Koa AI bid-strategy regression signal)
- CTR below channel benchmark across Display / Video / CTV / Audio creative formats
- CPC / CPM creep - effective bid above category benchmark after Koa AI overrides
Conversion & attribution
- Universal Pixel firing rate drop >30% across the property (cookieless signal decay)
- UID 2.0 / EUID resolution rate <40% - cross-device attribution breaking down
- Zero-conversion spend - campaigns with >$X spend and no attributed conversions in 72h
- Conversion rate below account average on PMP deals delivering at agreed floor prices
Creative & audience health
- Creatives with ReviewStatus disapproved or pending in active campaigns
- Audience segments below the 1000-record TTD bid-degradation floor (DMP segment shrink)
- Creative format mismatch - CTV/Video budget served against Display-only inventory
- Stale creatives - Availability Archived still attached to Available campaigns
Cross-channel revenue at risk (highest-value area)
- Active PMP catalog deals on out-of-stock SKUs (sibling = commerce.product.qty = 0)
- Spend on catalog campaigns with active Feedonomics feed rejections (creative falls back)
- Branded paid clicks cannibalising free organic (sibling = google_search_console branded queries)
- Landing pages with LCP p75 >4s and CR <0.5x account average (sibling = website_performance.page)
Severity thresholds
| Signal | Warn | Critical |
|---|---|---|
roas | 3.0 | - |
ctr | 0.1 | - |
conversion_rate | 1.0 | - |
cpc | 2.5 | 4.0 |
wasted_spend_pct | 5 | 12 |
budget_pacing | 15 | 30 |
Data sources
GET https://api.thetradedesk.com/v3/authentication/validate- Auth + TTD-Auth token sanity checkGET https://api.thetradedesk.com/v3/advertiser- Advertiser metadata + currency for spend normalisationPOST https://api.thetradedesk.com/v3/campaign/query/advertiser- Campaign state, budget, pacing mode (cross-channel join key)POST https://api.thetradedesk.com/v3/creative/query/advertiser- Creative review status, format, availabilityPOST https://api.thetradedesk.com/v3/myreports/reportexecution/query/advertisers- Async spend / ROAS / CTR / CPC / conversion reports