# Create Google app campaign (adsap_google_create_app_campaign)

Creates a full Google App campaign in one request: budget, campaign, location and language targeting, an ad group and the app ad.

Canonical: https://adsap.ai/docs/tools/adsap_google_create_app_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 full Google App campaign in one request: budget, campaign, location and language targeting, an ad group and the app ad. Google assembles the ad from your headlines, descriptions and optional media, and links it to the store listing on its own. The campaign is always created paused and optimizes for installs at your target cost per install. 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. 50). NOT micros, NOT cents. Google recommends roughly 50x target_cpi. |
| `campaign.app_id` | string | Yes | The app to promote. Android: the package name (e.g. com.example.app). iOS: the numeric App Store id as a string (e.g. 570060128). |
| `campaign.app_store` | one of `google_play`, `apple_app_store` | Yes | Which store the app_id lives in. Mismatches fail with a clear Google error. |
| `campaign.target_cpi` | number | Yes | Target cost per install in the account currency as a plain number (e.g. 1.50). Drives the campaign's target-CPA bidding. |
| `campaign.bidding_goal` | one of `installs` | No | v1 supports only 'installs' (OPTIMIZE_INSTALLS_TARGET_INSTALL_COST). Other goals are rejected. |
| `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, 1010 = French). 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'). App campaign ad groups take no type and no criteria. |
| `ad` | object | Yes |  |
| `ad.headlines` | array of string | Yes | 2-5 headlines, max 30 chars each. Google enforces a floor of 2. |
| `ad.descriptions` | array of string | Yes | 1-5 descriptions, max 90 chars each. |
| `ad.image_asset_ids` | array of string | No | Optional: up to 20 image ASSET ids from adsap_google_upload_asset (1.91:1, 4:5 or 1:1; JPG/PNG up to 5MB). |
| `ad.video_asset_ids` | array of string | No | Optional: up to 20 YouTube video ASSET ids from adsap_google_upload_asset (asset_type youtube_video; videos must be 10-60s). |
| `dry_run` | boolean | No | Preview only: the request is validated and the resolved payload returned, nothing is created or changed. |

## Example prompts

- "Preview an App campaign for com.example.app on Android at 5 dollars per install, targeting the US and Canada."
- "Create an iOS App campaign for App Store id 570060128 with these headlines."
- "Create the App campaign we just previewed."

## Notes

The tool takes no URL input, ever. Google recommends a daily budget of about 50 times the target cost per install; lower is allowed but slows learning. In-app action, value and pre-registration goals are not supported.

## Related tools

- [`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_display_campaign`](/tools/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`](/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 App campaigns](/guides/google-ads/app) for the workflow around this tool, and the [Tool reference](/tools) for every tool.
