# Create Google display campaign (adsap_google_create_display_campaign)

Creates a classic standalone Display campaign in one request: budget, campaign, location and language targeting, a Display ad group and a responsive display ad.

Canonical: https://adsap.ai/docs/tools/adsap_google_create_display_campaign
Updated: 2026-09-13

**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 '&lt;campaign name&gt; - 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`](/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`](/tools/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`](/tools/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`](/tools/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`](/tools/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`](/tools/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](/guides/google-ads/display) for the workflow around this tool, and the [Tool reference](/tools) for every tool.
