Rename a campaign, or change its budget or bidding strategy
update_campaignChange a campaign's name, reassign it to a different budget, or switch its bidding strategy - everything about a campaign except status (use update_campaign_status for that). Useful for the common pattern of starting on MANUAL_CPC to see real auction behaviour, then moving to an automated strategy once there's data to bid on, without recreating the campaign.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New campaign name. | |
| budgetId | No | Reassign to a different campaign budget id. | |
| campaignId | Yes | Campaign id from get_campaigns. | |
| customerId | No | 10-digit Google Ads customer id. Omit only if this connection has exactly one reachable account - with more than one, omitting it errors and lists the available ids to pick from. | |
| extraFields | No | Escape hatch for a field Google requires that this tool doesn't set yet - use it when a prior call to this same tool failed naming a required field and its valid values (e.g. after adding `contains_eu_political_advertising`, retry with { contains_eu_political_advertising: "DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING" }). Keys are the Ads API's own snake_case field names; nest an object to add a field under one this tool already sets (e.g. a new network_settings sub-field). Only ADDS fields not already set by this tool's own arguments - it can never override `status` or any other field already set here, so it cannot be used to bypass validation or a safety default like a campaign's PAUSED-by-default status. | |
| validateOnly | No | Dry run. When true the Google Ads API validates the change and reports any errors but applies nothing. Use this first whenever you are unsure - it is free and cannot affect spend. | |
| biddingStrategy | No | MAXIMIZE_CONVERSIONS needs conversion tracking already working, or delivery will suffer. |