Skip to content

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 ) Default false; omit to manage at the default.

See also