Skip to content

Cap how often people see your video ad

A YouTube in-stream campaign left uncapped will show the same person your ad over and over. Frequency capping puts a ceiling on that: “at most 3 impressions a day, and count at most 1 as a watched view.”

Say it with frequency_caps blocks on the campaign — one block per cap:

resource "google_ads_campaign" "instream" {
name = "Preroll — India 12s"
status = "PAUSED"
advertising_channel_type = "VIDEO"
campaign_budget = google_ads_campaign_budget.preroll.id
frequency_caps {
event_type = "IMPRESSION"
time_unit = "DAY"
time_length = 1
cap = 3
}
frequency_caps {
event_type = "VIDEO_VIEW"
time_unit = "DAY"
time_length = 1
cap = 1
}
}

Each block is one cap:

  • event_type — what you’re counting. IMPRESSION is “the ad was shown”; VIDEO_VIEW is “the person actually watched it” (past the skip point, or 30 seconds).
  • time_unit and time_length — the window. "DAY" with time_length = 1 is “per day”; "WEEK" with time_length = 1 is “per week”.
  • cap — the ceiling itself, a whole number.

Loosening or removing a cap

Edit the number and plan shows the change; delete the block and the cap goes away entirely:

frequency_caps {
event_type = "IMPRESSION"
time_unit = "DAY"
time_length = 1
cap = 3
cap = 5
}

The whole set is managed together, so your file is the final word: a cap somebody added in the Google Ads UI shows up in plan as drift on the campaign, and removing every block clears every cap. The order of the blocks doesn’t matter.

Campaigns you never capped

Declaring your first frequency_caps block is what hands the setting to bidsmith. Until then the campaign’s caps belong to whoever set them in the Google Ads UI: they don’t show up as drift, plan won’t offer to clear them, and apply leaves them alone. That’s why upgrading to a bidsmith version that reads a new setting never rewrites campaigns you haven’t touched.

To take an existing UI-set cap under management, copy it into the campaign as a block — bidsmith refresh --in-place will keep it in sync from then on, rewriting the blocks whenever the live caps drift. The first apply after you declare a cap shows a ~ claim (label only; claims frequency caps) row on the campaign: that’s bidsmith marking the setting as its own, which is what lets a later “delete every block” mean “clear every cap”.

Where capping applies

Frequency capping works on video and display campaigns. Google Ads does not support it on Demand Gen campaigns — validate warns you if you set it there rather than letting it silently do nothing.

See also