Run a Demand Gen ad group on YouTube only
A Demand Gen campaign serves across YouTube, Gmail, Discover and the Display Network by default. That is often exactly what you don’t want — a video-first launch belongs on YouTube, and “can this not show in Gmail?” is a question a reviewer should be able to answer by reading the file.
Channels are set per ad group, in a
demand_gen_ad_group_settings block:
resource "google_ads_ad_group" "spring_launch" { name = "Spring launch — YouTube only" campaign = google_ads_campaign.demand_gen.id
demand_gen_ad_group_settings { channel_controls { selected_channels { youtube_in_stream = true youtube_in_feed = true youtube_shorts = true } } }}bidsmith plan .google_ads_ad_group.spring_launch ~ update demand_gen_ad_group_settings.channel_controls: (unset) -> youtube_in_stream, youtube_in_feed, youtube_shortsbidsmith apply . narrows the ad group in place — this is an ordinary
update, so an existing ad group keeps its history. A channel you leave
out of selected_channels is off; at least one has to be on.
The two-preset shortcut
If all you want is “nothing on the Display Network”, there is a named strategy for it, and it reads better than six booleans:
demand_gen_ad_group_settings { channel_controls { channel_strategy = "ALL_OWNED_AND_OPERATED_CHANNELS" } }"ALL_OWNED_AND_OPERATED_CHANNELS" is everything Google-owned —
YouTube, Gmail, Discover, Maps — with Display off.
"ALL_CHANNELS" is the everything-everywhere default, written down;
declaring it pins the setting so a narrower value someone picks in the
UI shows up as drift.
Declare the strategy or the channel list, never both —
channel_controls is one choice, and validate says so before the
API would.
Keeping it narrow
The point of the block is the next quarter, not the first apply.
Someone opens the Google Ads UI, ticks Discover back on, and the next
plan says:
google_ads_ad_group.spring_launch ~ update demand_gen_ad_group_settings.channel_controls: youtube_in_stream, youtube_in_feed, youtube_shorts, discover -> youtube_in_stream, youtube_in_feed, youtube_shortsRun bidsmith plan --detailed-exitcode . in CI and that widening fails
the build instead of quietly spending on a surface nobody chose.
See also
- Launch a Demand Gen video ad — the campaign, ad group and video creative this block slots into.
google_ads_ad_group— the fullchannel_controlsreference.- About Demand Gen campaigns — Google’s own overview of where Demand Gen serves.