At a glance
Pacing check on StackAdapt budgets vs period elapsed. BidCore (StackAdapt’s AI bidder) is aggressive at exiting learning phase; once it does, daily spend can double overnight. CTV campaigns also pace unevenly because TV inventory peaks in evening prime hours and during major events (sports finals, awards). This card is the early warning that auto-bid or peak-hour CTV is outrunning plan.
| What it counts | spent_to_date ÷ budget_for_period, expressed as percentage. Budget is taken from campaign-level monthly caps in StackAdapt; spend is real-time spend from reports/campaigns. The card also tracks % of period elapsed for pacing comparison. |
| Cost basis | Mostly CPM (display, video, CTV, audio); CPC for native and some display. Pacing math is unit-agnostic. |
| Currency | Account currency. |
| Conversion attribution | Not applicable (budget pacing). |
| Attribution window | Not applicable. |
| Bot / invalid traffic | IVT-credited spend reduces spent figure on 7, 14 day correction cadence; pacing reads slightly high until credits post. |
| Time window | T/30D. Today’s snapshot plus 30-day rolling pacing shape. |
| Alert trigger | >90% used before 80% of period. On StackAdapt, sudden overpacing most often signals (a) BidCore exited learning phase and ramped, (b) CTV hitting peak inventory hours, (c) a manual budget change, or (d) audio campaign exhausting fixed-CPM inventory deal. |
| Roles | owner, marketing, finance |
Calculation
Calculated automatically from your StackAdapt data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
The same US homeware brand. Period 01 Apr 26 to 30 Apr 26 (30-day month). Today is 18 Apr 26 (60% of period elapsed).| Campaign | Channel | Monthly budget ($) | Spent ($) | % budget | Pacing status |
|---|---|---|---|---|---|
| Display Prospecting | Display | 18,000 | 12,400 | 69% | On pace (mild over) |
| CTV Awareness “Spring Living” | CTV | 22,000 | 18,200 | 83% | OVERPACED |
| Native Article Distribution | Native | 8,000 | 5,400 | 68% | On pace |
| Audio Spotify Sponsorship | Audio | 5,000 | 3,200 | 64% | On pace |
| Retargeting | Display + Video | 7,000 | 4,800 | 69% | On pace (mild over) |
| Account total (this card) | $60,000 | $44,000 | 73% | OVERPACED 13pp |
- CTV is the overpacing source. 22,000 budget used at 60% elapsed = 83% pacing, 23pp ahead. The likely cause: NBA playoffs started 11 Apr 26 and CTV inventory pricing spiked 30, 50% across the network. BidCore is paying more per CTV impression to maintain delivery; it’s not winning more impressions, it’s paying more for each one.
- Action options for CTV: (a) Lower the CTV CPM ceiling to force BidCore to wait for non-peak inventory, sacrificing some impressions; (b) Pause the CTV campaign through the playoffs (8, 12 days remaining) and reactivate post-event when CPM normalises; (c) Raise the budget cap if the campaign ROAS justifies the seasonal premium (it usually doesn’t on cold-audience CTV).
- At current run-rate the account hits the $60k cap on 23 Apr 26, 7 days early. That means 7 days of dark spend in late April unless action taken now.
- Display, Native, Audio are all healthy. Account-level alert is driven entirely by CTV; per-channel budget caps would have isolated the issue without flagging the whole account.
- The 30D prior had pacing 62% at 60% elapsed, near-perfect. This window’s 73% pacing is the alert. The prior month had no CTV campaigns running (they launched 28 Mar 26), so the comparison is structural, not a pacing-discipline regression.
- Pacing ≈ time-elapsed ± 5pp = healthy.
- Pacing > time-elapsed by 10, 20pp = mild overpacing; usually BidCore ramping post-learning.
- Pacing > time-elapsed by 30+pp = something accelerated sharply (CTV peak hours, audio inventory deal kicking in, manual change).
- Pacing < time-elapsed by 10, 20pp = underspending; BidCore failing to find inventory at your bid; raise CPM or expand audience.
- Pacing flat for 3, 5 days = campaign hit cap or auto-paused.
Sibling cards merchants should reference together
| Card | Why pair it with Spend vs Budget |
|---|---|
| StackAdapt Total Spend | The numerator. The spend trend tells you whether overpacing is structural (BidCore ramping) or seasonal (CTV peak hours). |
| StackAdapt Spend by Campaign | Where the overpacing came from. Almost always one channel (commonly CTV). |
| StackAdapt Overspending Campaigns | Campaign-level pacing breakdown. |
| StackAdapt Underspending Campaigns | The reallocation candidates if account is over-paced but some campaigns are under. |
| StackAdapt CPC Trend | Pacing rises with rising CPC even at constant volume; this card distinguishes price vs volume drivers. |
| StackAdapt ROAS | If overpacing comes with high ROAS, raise cap; if with falling ROAS, throttle. |
| The Trade Desk Spend vs Budget | Peer DSP pacing. If both overpacing simultaneously, suspect cross-DSP CTV inventory pressure (sports finals etc.). |
Reconciling against the vendor’s own dashboard
Where to look in StackAdapt: StackAdapt → Campaigns and check the per-campaign budget and pacing indicator. The account-level total in this card sums per-campaign budgets and per-campaign spend. StackAdapt does not surface a single “account-level pacing %” in the UI; this card derives it. Why our number may legitimately differ from StackAdapt UI’s pacing indicator:| Reason | Direction | Why |
|---|---|---|
| Time zone | Pacing % off by ±5pp on day-1/day-30 | Account TZ vs UTC. Marginal mid-period. |
| Real-time spent lag | Card pacing slightly low for “today” | 30, 60 minute ingest lag on billable spend. |
| Budget hierarchy | Card uses configured budgets only | Some accounts set a portfolio-level budget on top of campaign budgets; this card aggregates campaign-level budgets only. |
| IVT credits | Card pacing slightly high before credits post | IVT refunds post on 7, 14 day delay. |
| Mid-period budget changes | Direction depends | Card uses current budget value; pacing % retroactively reflows. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
the_trade_desk.the_spend_vs_budget | Independent. If both DSPs overpace simultaneously, suspect cross-DSP inventory pressure (CTV during sports finals, display during Q4 holiday). | Different inventory pools and budget cycles. |
google_ads.gads_spend_vs_budget | Independent; benchmark only. Search and DSP have different pacing patterns. | Search rarely sees the same kind of peak-hour CPM spikes; pacing should be smoother. |
shopify.total_revenue | No mathematical relationship; context only. | Pacing is input-side; revenue is outcome-side. |