Manage Google Ads targeting (adsap_google_manage_targeting)
Platform: Google Ads · Read or write: Write · Plan: Early Access · Consumes a task: Yes · Preview supported: Yes
What it does
Manages a campaign or ad group’s targeting after creation: locations, languages and audiences. It adds up to 100 locations or 50 languages to a campaign. It attaches or excludes audiences at campaign or ad group level, sets targeting versus observation mode, or removes one criterion. Ask for a preview first.
When to use it
- Use it on a campaign or ad group that already exists.
opaddattaches locations, languages or audiences.opremovedeletes one criterion. - One call takes up to 100
geo_targets, 50languagesor 50audiences. Get location IDs fromadsap_google_search_geo_targetsand audience IDs fromadsap_google_list_audiences. - Locations and languages go on the campaign. With
levelset toad_groupand anad_group_id, the tool handles audiences only. removeneedscriterion_id, written<parent_id>:<criterion_id>. For a location or language, the criterion ID equals the constant ID, so France on campaign 123 reads123:2250.- It supports a preview call. For campaign negative keywords, use
adsap_google_manage_keywords.
Worked example
You ask
“Preview adding France and the French language to Display campaign 21000000002 in Google Ads account 1234567890.”
The assistant calls adsap_google_manage_targeting
{
"op": "add",
"ad_account_id": "1234567890",
"campaign_id": "21000000002",
"geo_targets": [
{ "id": "2250" }
],
"languages": ["1002"],
"dry_run": true
}Adsap returns
The field names are the ones Adsap returns. The values are examples.
{
"ok": true,
"dry_run": true,
"platform": "google",
"entity_type": "campaign",
"entity_id": "21000000002",
"name": "Summer collection",
"current_status": "ENABLED",
"changes": [
{
"field": "add_location",
"current_value": null,
"new_value": "geoTargetConstants/2250",
"will_change": true
},
{
"field": "add_language",
"current_value": null,
"new_value": "languageConstants/1002",
"will_change": true
}
],
"total_would_change": 2,
"google_validation": "passed",
"warnings": []
}How to read it
changes holds one row per criterion. field reads add_location, add_excluded_location or add_language, and new_value is Google’s constant, here France and French. An audience call uses add_audience, exclude_audience and audience_mode rows instead. google_validation reads passed when Google accepts the batch. Otherwise it carries Google’s error message.
When audiences are added with no mode, warnings can flag the outcome. With no audience setting on the entity, Google defaults to targeting, which narrows delivery.
Nothing was applied here. The response also carries a human_readable_summary sentence, left out of this example. To apply it, the assistant repeats the call with dry_run set to false. That response lists the new criterion IDs in created_criteria.
Parameters
Descriptions are shortened from the tool schema. Your assistant sees the full text.
| Name | Type | Required | Description |
|---|---|---|---|
op | one of add, remove | Yes | |
ad_account_id | string | Yes | Bare 10-digit Google Ads customer ID (from adsap_google_list_ad_accounts). No dashes, no act_ prefix. |
level | one of campaign, ad_group | No | Where the criteria live. Default ‘campaign’. ‘ad_group’ = audience adds on an ad group (pass ad_group_id), or removes of ad-group criteria. |
campaign_id | string | No | op ‘add’ at campaign level: the EXISTING campaign to add targeting to. |
ad_group_id | string | No | op ‘add’ with level ‘ad_group’: the EXISTING ad group to attach audiences to. |
geo_targets | array of object | No | op ‘add’: locations to target (or exclude via negative: true). Resolve names to ids with adsap_google_search_geo_targets first. |
geo_targets[].id | string | Yes | Numeric geo target constant id (from adsap_google_search_geo_targets, e.g. 2250 = France). |
geo_targets[].negative | boolean | No | true = EXCLUDE this location (not allowed on Performance Max campaigns). |
languages | array of string | No | op ‘add’: language constant ids (e.g. 1000 = English, 1002 = French). No language criteria on a campaign = all languages. NOT for Search campaigns: Google removes Search language targeting in late September 2026 (Google rejects the add with OPERATION_NOT_PERMITTED_FOR_CONTEXT… |
audiences | array of object | No | op ‘add’: audiences to attach or exclude. Cannot be combined with geo_targets/languages in the same call. |
audiences[].user_list_id | string | No | Numeric user list (audience segment) id from adsap_google_list_audiences. Use everywhere EXCEPT Demand Gen. |
audiences[].audience_id | string | No | Numeric Audience resource id from adsap_google_list_audiences: DEMAND GEN ad groups only. Exactly one of user_list_id / audience_id per item. |
audiences[].negative | boolean | No | true = EXCLUDE this audience (user_list_id only; campaign-level exclusions also work on Display and Performance Max). |
mode | one of targeting, observation | No | Audience targeting setting: ‘targeting’ narrows delivery to the attached audiences; ‘observation’ keeps full reach (bid adjustments only). Combinable with an audience add, or standalone. |
criterion_id | string | No | op ‘remove’ only: the criterion as “<parent_id>:<criterion_id>”: campaign id for level ‘campaign’, ad group id for level ‘ad_group’. Geo/language/audience criteria only: campaign negative keywords are removed via adsap_google_manage_keywords. |
dry_run | boolean | No | Preview only: the request is validated and the resolved payload returned, nothing is created or changed. |
Example prompts
- “Add Belgium and Switzerland to my Search campaign’s locations and exclude Monaco.”
- “Attach my Website visitors audience to the Brand campaign in observation mode.”
- “Remove Germany from the targeting of campaign 1234567890.”
Notes
Audiences cannot be combined with locations or languages in one call. Google’s default audience setting is targeting, which narrows reach, so ask for observation on Search and Shopping unless you want to narrow. Demand Gen audiences go on the ad group, not the campaign.
Related tools
adsap_google_keyword_ideas: Get keyword suggestions with search volume from Google Keyword Planner for a Google Search campaign.adsap_google_manage_keywords: Manage Google Ads Search keywords AFTER creation.adsap_google_search_geo_targets: Find Google Ads geo target constants by location name (city, region, country, postal area) for Search campaign location targeting.adsap_google_search_terms: Search terms report for a Google Ads account: the REAL user queries that triggered Search (and Shopping) ads, with…
Guide
Read Managing Google Ads in bulk for the workflow around this tool, and the Tool reference for every tool.
The Google Ads MCP server page shows how to connect Google Ads to Claude, ChatGPT or Perplexity.