Create Google display campaign (adsap_google_create_display_campaign)
Platform: Google Ads · Read or write: Write · Plan: Early Access · Consumes a task: Yes · Preview supported: Yes
What it does
Creates a classic standalone Display campaign in one request: budget, campaign, location and language targeting, a Display ad group and a responsive display ad. Image and video inputs are asset IDs from an earlier upload. 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.
| Name | Type | Required | Description |
|---|---|---|---|
ad_account_id | string | Yes | Bare 10-digit Google Ads customer ID (from adsap_google_list_ad_accounts). No dashes, no act_ prefix. |
campaign | object | Yes | |
campaign.name | string | Yes | |
campaign.daily_budget | number | Yes | Daily budget in the ACCOUNT CURRENCY as a plain number (e.g. 10). NOT micros, NOT cents. |
campaign.bidding_strategy | one of auto, maximize_clicks, manual_cpc, maximize_conversions, target_cpa, target_roas | No | ’auto’ (default) = Maximize Clicks. ‘target_cpa’ is the STANDALONE scheme (Display rejects a target CPA inside maximize_conversions). ‘target_roas’ has a conversion-history eligibility gate. |
campaign.cpc_bid | number | No | Max CPC bid in the account currency. REQUIRED with manual_cpc; invalid otherwise. |
campaign.target_cpa | number | No | Target cost per action in the account currency. REQUIRED with bidding_strategy target_cpa; invalid otherwise. |
campaign.target_roas | number | No | Target return on ad spend as a multiplier (3.5 = 350%). REQUIRED with bidding_strategy target_roas. |
geo | object | Yes | |
geo.location_ids | array of string | Yes | Geo target constant ids to TARGET (from adsap_google_search_geo_targets). Campaign-level, like Search. |
geo.negative_location_ids | array of string | No | Geo target constant ids to EXCLUDE. |
language_ids | array of string | No | Language constant ids (e.g. 1000 = English). Campaign-level; omit to target all languages. |
ad_group | object | No | |
ad_group.name | string | No | Ad group name (defaults to ‘<campaign name> - ad group’). |
ad_group.optimized_targeting | boolean | No | Optimized targeting (default true): Google reaches beyond your criteria; the geo/language criteria stay the hard limits. |
ad | object | Yes | |
ad.final_url | string | Yes | Landing page URL (on the ad, required). |
ad.business_name | string | Yes | |
ad.long_headline | string | Yes | EXACTLY ONE long headline, max 90 chars (Display-specific slot). |
ad.headlines | array of string | Yes | |
ad.descriptions | array of string | Yes | |
ad.landscape_image_asset_ids | array of string | Yes | At least one landscape (1.91:1, min 600x314) image ASSET id from adsap_google_upload_asset. Landscape + square combined max 15. |
ad.square_image_asset_ids | array of string | Yes | At least one square (1:1, min 300x300) image ASSET id. Landscape + square combined max 15. |
ad.logo_asset_ids | array of string | No | Optional square logos (1:1, min 128x128). Square + landscape logos combined max 5. |
ad.landscape_logo_asset_ids | array of string | No | Optional landscape logos (4:1, min 512x128): a Display-only slot with no Demand Gen equivalent. |
ad.youtube_video_asset_ids | array of string | No | Optional: up to 5 YouTube video ASSET ids from adsap_google_upload_asset. |
ad.call_to_action_text | string | No | |
ad.control_spec | object | No | Optional responsive-display-ad automation controls: enable_asset_enhancements (Google may enhance images/layouts) and enable_autogen_video (Google may generate video versions). Absent = Google’s enabled-by-default behavior. |
dry_run | boolean | No | Preview only: the request is validated and the resolved payload returned, nothing is created or changed. |
Example prompts
- “Preview a Display campaign at 25 dollars a day targeting Spain with these landscape and square images.”
- “Create a Display campaign with target CPA at 15 dollars using the assets I uploaded.”
- “Create the Display campaign we just previewed.”
Notes
Google is moving standalone Display into Demand Gen, and every response carries that heads-up. For new builds, consider a Demand Gen campaign with the display channel selected. The ad needs at least one landscape and one square image, exactly one long headline, and a business name.
Related tools
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_demand_gen_campaign: Create a complete Google Ads Demand Gen campaign (YouTube, Discover, Gmail, Maps and the Google Display Network) in ONE atomic request…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 Google Display campaigns for the workflow around this tool, and the Tool reference for every tool.