We built a pacer because we misread one error
Setting pacing on CPM returns 400 because that strategy is not paced. The seat has CPM_PACED. The trailing reach-out sentence is boilerplate. The misread cost four months and a product-side pacer.
Published 2026-09-09 · Search job: bidding strategy CPM is not enabled for pacing
"Bidding strategy CPM is not enabled for pacing. Please reach out to your account team." That sentence is true and narrow. It does not mean this seat cannot pace.
From September 3 to September 4, 2026, the evidence looked airtight. Setting pacing to daily, lifetime, or flight on a line item that used strategy CPM returned that 400. CPC returned the identical message. We read it as a seat entitlement. We built a product-side pacer that shrinks spend_budget.lifetime into slices so spend would not dump in one hour. The trailing "reach out to your account team" is boilerplate. It is what sent the project to build an entire workaround instead of changing one string.
What the catalog actually said
GET /rest/v2/ref/bidding-strategies shows every strategy carries a paced boolean. This seat's catalog contains dedicated paced variants:
CPMid 1,paced=falseCPM_PACEDid 3,paced=true- plus
CPC_PACED,VCR_PACED, andCPA_PACED
CPM is "not enabled for pacing" because pacing is not part of that strategy. The paced sibling is a different strategy id. Credit to Rafal at FreeWheel for pointing out that the pacing options existed and that the user docs should be read alongside the API docs.
Verified live on September 4, 2026 against a paused line item, restoring the original bidding block after each attempt: CPM_PACED plus pacing: 'daily' plus pacing_behavior: 'even' returns 200. Plain CPM plus pacing: 'daily' still returns the old message. Same seat, same object, one string.
Same class of error as the other three
This is the third of four times we said the seat could not do something after checking one endpoint. Placement and site excludes were called unavailable because we looked for a custom_list. Dayparting was called absent because the targeting-key catalog has no clock. Schema was called unreadable because /fields 404s. In each case the capability lived on a different surface.
The cost here was four months and a product-side pacer. That pacer is real, shipped, and still used on line items created before the correction. New campaigns that want even delivery should use CPM_PACED and daily pacing. Do not run both mechanisms on the same line item. Two things pacing at once stops delivery.
How to read the next 400
Read the error literally. If it names a strategy, check whether a paced variant exists in the same catalog. If it says reach out to your account team, treat that as boilerplate until OPTIONS and the reference endpoint agree that the field is missing. One confident sentence derived from a single 400 is how this project lost a season.