Draft a campaign
draft_campaignGenerate a full Search campaign preview with budget, paused campaign, ad group, optional keywords, and geo/language targeting; returns a plan_id, creating nothing until confirmed.
Instructions
Draft a full campaign structure — returns a PREVIEW, does NOT create anything.
Creates: CampaignBudget + Campaign (PAUSED) + AdGroup + optional Keywords
geo targeting + language targeting. Ads are NOT included — draft_responsive_search_ad adds them once the campaign exists. Only SEARCH campaigns can be created: Performance Max needs an asset group with all its assets in one request, and DISPLAY, SHOPPING and VIDEO need channel-specific settings and ad group types, so the draft refuses them.
Returns a preview with a plan_id plus any warnings (e.g. a daily budget below 5x target CPA, MANUAL_CPC); nothing changes until confirm_and_apply applies the returned plan_id.
Google Ads API: https://developers.google.com/google-ads/api/docs/start
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| max_cpc | No | In the account's currency: the manual CPC bid for the initial ad group when bidding_strategy is MANUAL_CPC, or the Maximize Clicks CPC cap when bidding_strategy is TARGET_SPEND. Not allowed with other strategies; 0 means none. | |
| keywords | No | Optional list of {"text": "keyword", "match_type": "EXACT|PHRASE|BROAD"} added to the initial ad group. | |
| target_cpa | No | Target cost per acquisition in the account's currency; required if bidding_strategy is TARGET_CPA, optional target for MAXIMIZE_CONVERSIONS. 0 means none. | |
| customer_id | No | Google Ads customer ID (digits, e.g. "1234567890"). Empty uses the configured default account. | |
| target_roas | No | Target return on ad spend as a ratio (e.g. 4.0 = 400%); required if bidding_strategy is TARGET_ROAS, optional target for MAXIMIZE_CONVERSION_VALUE. 0 means none. | |
| channel_type | No | SEARCH (default). DISPLAY, SHOPPING, VIDEO and PERFORMANCE_MAX are refused with the reason (see above). | SEARCH |
| daily_budget | Yes | Daily budget in the account's currency (not micros); must be greater than 0 and at most the config's max_daily_budget. | |
| language_ids | Yes | REQUIRED list of language constant IDs. Common: "1001" German, "1000" English, "1002" French, "1003" Spanish, "1004" Italian, "1014" Portuguese. Full list: Google Ads API language constants. | |
| ad_group_name | No | Name of the initial ad group. Empty uses campaign_name. | |
| campaign_name | Yes | Name of the new campaign. | |
| geo_target_ids | Yes | REQUIRED list of geo target constant IDs. Common: "2276" Germany, "2040" Austria, "2756" Switzerland, "2840" USA, "2826" UK, "2250" France. Full list: Google Ads API geo target constants. | |
| bidding_strategy | Yes | MAXIMIZE_CONVERSIONS | TARGET_CPA | TARGET_ROAS | MAXIMIZE_CONVERSION_VALUE | TARGET_SPEND | MANUAL_CPC. BROAD keywords require a Smart Bidding strategy (MAXIMIZE_CONVERSIONS, MAXIMIZE_CONVERSION_VALUE, TARGET_CPA, TARGET_ROAS). | |
| display_network_enabled | No | Enable Search campaign display expansion (SEARCH campaigns only). Defaults to off. | |
| search_partners_enabled | No | Include ads on Search partners (SEARCH campaigns only). | |
| display_expansion_enabled | No | Alias for display_network_enabled; both must match when both are given. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||