google_ads_campaign_budget
A campaign budget caps how much one or more campaigns can spend —
per day by default, or over a fixed flight if you set
period = "CUSTOM_PERIOD". Every campaign references exactly one budget.
Example
resource "google_ads_campaign_budget" "summer" { name = "Summer 2026" amount_micros = 50000000 # €50/day delivery_method = "STANDARD"}A budget shared by multiple campaigns:
resource "google_ads_campaign_budget" "brand" { name = "Brand Protection" amount_micros = 200000000 # €200/day delivery_method = "STANDARD" explicitly_shared = true}Lifetime budgets
Most budgets are daily: amount_micros is the average you’re willing to
spend each day, and Google keeps the monthly total under about 30.4 times
it. A custom-period budget works the other way round — you name a
total for the whole flight and Google paces it:
resource "google_ads_campaign_budget" "q3_flight" { name = "Q3 Launch Flight" period = "CUSTOM_PERIOD" total_amount_micros = 150000000 # €150 for the whole run}The two amounts are alternatives, not a pair. A daily budget says
amount_micros; a CUSTOM_PERIOD one says total_amount_micros and
Google Ads ignores any daily amount you set beside it. validate holds
you to that, so a budget can never quietly spend on a figure nobody
meant.
Schema
Required
-
name( String )
Optional
-
amount_micros( Integer ) -
total_amount_micros( Integer ) -
period( String ) One of:DAILY,CUSTOM_PERIOD. Default"DAILY"; omit to manage at the default. -
type( String ) One of:STANDARD,FIXED_CPA,SMART_CAMPAIGN,LOCAL_SERVICES. -
delivery_method( String ) One of:STANDARD,ACCELERATED. Default"STANDARD"; omit to manage at the default. -
explicitly_shared( Boolean ) Defaultfalse; omit to manage at the default.
See also
google_ads_campaign— uses this budget.- Tutorial: Launch a new search campaign — sets up a budget end-to-end.