Skip to Content
Tool referenceCreate Google Ads Demand Gen campaign

Create Google Ads Demand Gen campaign (adsap_google_create_demand_gen_campaign)

Platform: Google Ads · Read or write: Write · Plan: Early Access · Consumes a task: Yes · Preview supported: Yes

What it does

Creates a full Demand Gen campaign in one request: budget, campaign, an ad group with channel controls, ad group level location and language targeting, and one ad. The ad is either an image ad or a YouTube video ad. The campaign is always created paused. Ask for a preview first.

Parameters

Descriptions are shortened from the tool schema. Your assistant sees the full text.

NameTypeRequiredDescription
ad_account_idstringYesBare 10-digit Google Ads customer ID (from adsap_google_list_ad_accounts). No dashes, no act_ prefix.
campaignobjectYes
campaign.namestringYes
campaign.daily_budgetnumberYesDaily budget in the ACCOUNT CURRENCY as a plain number: minimum 5 (Google’s Demand Gen floor, local-currency equivalent of 5 USD). NOT micros, NOT cents.
campaign.bidding_strategyone of auto, maximize_clicks, maximize_conversions, target_roasNoThe documented Demand Gen set. ‘auto’ (default) picks maximize_conversions when enabled conversion actions exist, else maximize_clicks.
campaign.target_cpanumberNoOptional target cost-per-action in the account currency. Requires bidding_strategy maximize_conversions.
campaign.target_roasnumberNoTarget return on ad spend as a multiplier (3.5 = 350%). REQUIRED with bidding_strategy target_roas; Google rejects accounts without enough conversion history.
geoobjectYes
geo.location_idsarray of stringYesGeo target constant ids to TARGET (from adsap_google_search_geo_targets). Demand Gen applies these at the AD GROUP level.
geo.negative_location_idsarray of stringNoGeo target constant ids to EXCLUDE.
language_idsarray of stringNoLanguage constant ids (default [‘1000’] = English).
ad_groupobjectNo
ad_group.namestringNoAd group name (defaults to ‘<campaign name> - ad group’).
ad_group.channelsobjectNo
ad_group.optimized_targetingbooleanNoGoogle AI expands beyond your (optional) audience signals. Leave true unless the user asks otherwise.
adobjectYes
ad.ad_typeone of multi_asset, video_responsiveYes’multi_asset’ = image ad; ‘video_responsive’ = YouTube video ad.
ad.namestringNoAd name (defaults to ‘<campaign name> - ad’; Google REQUIRES a name on video ads).
ad.final_urlstringYes
ad.business_namestringYesYour business name as shown in ads (<=25 characters).
ad.headlinesarray of stringYes1-5 unique headlines. Max 30 chars each for multi_asset, 40 for video_responsive.
ad.long_headlinesarray of stringNoLong headlines (<=90 chars). REQUIRED (1-5) for video_responsive; not used by multi_asset.
ad.descriptionsarray of stringYes1-5 unique descriptions, each <=90 characters.
ad.logo_asset_idsarray of stringYes1-5 LOGO-eligible image asset ids from adsap_google_upload_asset (1:1, min 128x128).
ad.landscape_image_asset_idsarrayNomulti_asset: MARKETING_IMAGE asset ids (1.91:1, min 600x314). At least one landscape OR square image required.
ad.square_image_asset_idsarrayNomulti_asset: SQUARE_MARKETING_IMAGE asset ids (1:1, min 300x300).
ad.portrait_image_asset_idsarrayNomulti_asset optional: PORTRAIT (4:5, min 480x600) asset ids.
ad.tall_portrait_image_asset_idsarrayNomulti_asset optional: TALL_PORTRAIT (9:16, min 600x1067) asset ids: the vertical-feed slot Demand Gen adds over PMax.
ad.youtube_video_idsarray of stringNovideo_responsive: 1-5 YouTube video ids (REQUIRED for that type; created/reused as named assets). Not allowed on multi_asset.
ad.call_to_actionone of LEARN_MORE, GET_QUOTE, APPLY_NOW, SIGN_UP, CONTACT_US, SUBSCRIBE, DOWNLOAD, BOOK_NOW and 9 moreNoOptional CTA; Google automates it when unset.
dry_runbooleanNoPreview only: the request is validated and the resolved payload returned, nothing is created or changed.

Example prompts

  • “Preview a Demand Gen campaign at 20 dollars a day targeting the UK, YouTube and Discover only, with these images.”
  • “Create a Demand Gen video campaign using my YouTube video and these five headlines.”
  • “Create the Demand Gen campaign we just previewed.”

Notes

The daily budget floor is 5 in the account currency. Target ROAS needs conversion history or Google rejects it. Set display to true in the channel selection to reach the Google Display Network.

  • adsap_google_create_app_campaign: Create a complete Google App campaign in ONE atomic request: budget, campaign (ALWAYS created PAUSED: activate later with…
  • adsap_google_create_display_campaign: Create a classic standalone Google Display campaign in ONE atomic request: budget, campaign (ALWAYS created PAUSED: activate later with…
  • adsap_google_create_pmax_campaign: Create a complete Google Ads Performance Max campaign in ONE atomic request: budget, campaign (ALWAYS created PAUSED: activate later with…
  • adsap_google_create_search_campaign: Create a complete Google Ads Search campaign in ONE atomic request: budget, campaign (ALWAYS created PAUSED: activate later with…
  • adsap_google_create_shopping_campaign: Create a complete standard Google Shopping campaign in ONE atomic request: budget, campaign (ALWAYS created PAUSED: activate later with…
  • adsap_google_list_campaigns: List Google Ads campaigns in a Google Ads account (cache-first; auto-refreshes from Google when the cache is missing or older than 1 hour).

Guide

Read Demand Gen campaigns for the workflow around this tool, and the Tool reference for every tool.

Last updated on