Draft a campaign
draft_campaignDraft a complete Google Search campaign structure—budget, paused campaign, ad group, optional keywords, geo and language targeting—as a preview plan_id; nothing is created 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
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"campaign_name": "<campaign_name>",
"daily_budget": "<daily_budget>",
"bidding_strategy": "<bidding_strategy>",
"geo_target_ids": "<geo_target_ids>",
"language_ids": "<language_ids>"
},
"name": "draft_campaign"
}
}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. | |
| location_option | No | Who the geo targets reach. PRESENCE (people in or regularly in the locations), PRESENCE_OR_INTEREST (also people elsewhere who show interest in them) or SEARCH_INTEREST (people searching for them). Empty leaves Google's default, PRESENCE_OR_INTEREST. Anything but PRESENCE adds a warning. | |
| 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). | |
| final_url_suffix | No | Parameters appended to the landing page URL, e.g. "utm_medium=cpc". Omitted leaves it unset. | |
| tracking_url_template | No | Campaign tracking template, e.g. "{lpurl}?utm_source=google&utm_campaign={campaignid}". Must contain {lpurl} or a variant ({lpurl+2}, {unescapedlpurl}, {escapedlpurl+3}, ...). Omitted leaves it unset. | |
| url_custom_parameters | No | List of {"key": "grp", "value": "b2c"}, used as {_grp} in the template. Keys alphanumeric, max 8 characters; values up to 250. | |
| 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). | |
| negative_location_option | No | Who the location exclusions exclude. PRESENCE or PRESENCE_OR_INTEREST; empty leaves Google's default, PRESENCE_OR_INTEREST. PRESENCE excludes fewer people (only those physically there), so it widens reach and the preview warns. | |
| display_expansion_enabled | No | Alias for display_network_enabled; both must match when both are given. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||