Docs menu
Get started
What is Opus GrowthQuickstartAdd to your AIHow it worksSafety and approvalCreditsPlansFAQAI apps
All AI appsChatGPTClaudeGrokPerplexityClaude CodeCodexGemini CLIOpenClawCursorVS CodeWindsurfOther MCPConnect ad platforms
Google AdsMeta AdsLinkedIn AdsMicrosoft AdvertisingTikTok AdsChatGPT AdsAgencies and MCCConnect data sources
Search ConsoleGoogle AnalyticsYouTubeBusiness ProfileTag ManagerWebsites and SEO
AI ServerWordPressSEO IntelligenceClick fraudTool reference
All toolsGoogle AdsMeta AdsTikTok AdsLinkedIn AdsMicrosoft AdvertisingChatGPT AdsSearch ConsoleGoogle AnalyticsYouTubeBusiness ProfileTag ManagerWordPressAI ServerSEO IntelligenceClick fraudCross-channelAccount and billingLanguage
Create Demand Gen Campaign
Creates a Demand Gen campaign (PAUSED) + a daily budget.
- Type
- Makes changes
- Credits
- 8
- Platform
- Google Ads
- Approval
- Preview first, applied after you approve
What it does
Creates a Demand Gen campaign (PAUSED) + a daily budget. Ads/assets are added separately. bid_strategy: MAXIMIZE_CONVERSIONS (default) | MAXIMIZE_CLICKS (for a traffic/click objective — this is what a migrated Video Action campaign wants) | TARGET_CPA (target_cpa required, account currency). A CPC ceiling is NOT accepted on Demand Gen: Google rejects it with OPERATION_NOT_PERMITTED_FOR_CONTEXT on this channel (measured), so there is no cpc_bid_ceiling parameter — the cap only exists on Search/Display. To change the strategy after creation use manage_bidding_strategies.
GEOGRAPHY IS NOT SET HERE AND THE DEFAULT IS EVERY COUNTRY. Demand Gen keeps location and language on the AD GROUP, not the campaign, so this call cannot take them: a campaign created here and enabled without a further step runs worldwide. That happened on a live account — 714 clicks in six hours, one of them from the target continent. After creating the ad group, set the targeting with set_ad_group_targeting(ad_group_id=..., locations=...) and verify it with get_campaign_targeting(ad_group_id=...). Connected TV inventory is also on by default; for a traffic objective exclude it with manage_device_targeting(device='CONNECTED_TV', bid_modifier_pct=-100). confirm=false → dry-run.
MCP: create_demand_gen_campaign
How to use it
You don't call tools by name. Write what you want in ChatGPT, Claude or another assistant connected to Opus Growth, in your own words; it picks this tool when it fits.
Parameters
| Name | Type | Required | Default | |
|---|---|---|---|---|
| customer_id | string | Required | · | Google Ads customer account ID to query or change. Use the numeric ID returned by list_accounts; omit separators unless this tool explicitly says otherwise. |
| name | string | Required | · | Human-readable name for the resource being created or updated. |
| daily_budget | number | Required | · | Daily spending budget in the account currency, in the provider's expected numeric unit. |
| bid_strategy | string | Optional | MAXIMIZE_CONVERSIONS | MAXIMIZE_CONVERSIONS · MAXIMIZE_CLICKS · TARGET_CPA · Provider bidding strategy to configure or query for the selected campaign or ad group. |
| target_cpa | number | Optional | 0.0 | Target cost per acquisition in the provider's expected numeric unit and account currency. |
| confirm | boolean | Optional | false | Safety confirmation for a state-changing operation. Leave false to preview or validate; set true only after the user explicitly approves the shown change. |
Related tools
account_auditAccount Snapshotaccount_snapshotAdd Keywordsadd_keywordsAdd Negative Keywordadd_negative_keywordAdd PMax Imagesadd_pmax_imagesApply Recommendationapply_recommendationBudget Pacing Alertsbudget_pacing_alertsCompetitor Adscompetitor_adsConnect Business Profileconnect_business_profile