> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markifact.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Ad Group

> Creates a new ad group within an existing Google Ads campaign

Creates a new ad group within an existing Google Ads campaign. Supports search, display, demand gen, and shopping product ad groups.

| | |
| - | - |
| **App** | Google Ads |
| **Operation ID** | `gads_create_ad_group` |
| **Type** | Action |
| **Connection** | `gads` (required) |
| **Credits per run** | 1 |
| **Agent / MCP tool** | Yes |
| **Requires approval** | Yes (write operation) |

## Inputs

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `account` | GadsAccountItem or object or array of object or string or integer | Yes | - | Select the Google Ads account, ask user for it if not provided |
| `campaign` | string or SelectItem | Yes | - | Select the campaign to create the ad group in |
| `ad_group_name` | string | Yes | - | Name for the ad group |
| `ad_group_type` | string or SelectableOption | Yes | - | Ad group type. Available: 'SEARCH\_STANDARD', 'DISPLAY\_STANDARD', 'SEARCH\_DYNAMIC\_ADS', 'DEMAND\_GEN', 'SHOPPING\_PRODUCT\_ADS', 'APP'. Note: for SHOPPING\_PRODUCT\_ADS, the ad group is automatically created with a default 'All products' listing group (targets every product in the linked Merchant Center feed) and a default Shopping product ad so it is ready to serve. Use 'APP' for ad groups inside App campaigns. |
| `status` | string or SelectableOption | No | `{'value': 'PAUSED', 'label': 'Paused'}` | Ad group status. Default: PAUSED (recommended) |
| `cpc_bid` | number | No | - | CPC bid as an actual dollar value in the account currency, NOT in micros (e.g. pass 1.5 for \$1.50). Do not multiply by 1,000,000 — the backend converts to micros automatically. Required for Manual CPC campaigns, ignored for automated bidding. |
| `disable_search_term_matching` | boolean | No | - | Disable AI Max search term matching for this ad group (search ad groups only). Only meaningful when the parent campaign has AI Max enabled — search term matching is on by default there. |
| `locations` | array of string or SelectableOption | No | - | Target countries for the ad group (Demand Gen only). Use 2-letter ISO country codes (e.g., 'US', 'CA', 'GB') |
| `languages` | array of string or SelectableOption | No | - | Target languages for the ad group (Demand Gen only). Use 2-letter language codes (e.g., 'EN' for English). Default: All Languages. |
| `channel_targeting` | array of string or SelectableOption | No | - | Channel targeting for Demand Gen ad groups. Available: 'GMAIL', 'DISCOVER', 'DISPLAY', 'YOUTUBE\_IN\_FEED', 'YOUTUBE\_IN\_STREAM', 'YOUTUBE\_SHORTS', 'MAPS'. Default: All Google channels (excluding Display) |
| `use_audience_grouped` | boolean | No | - | Use reusable Audience resources for audience targeting. Immutable after the ad group is created and required for gads\_update\_audience\_signals. Defaults to true for Demand Gen ad groups and is not sent for other types unless provided. |
| `user_list` | array of string | No | - | Audiences to target for App engagement ad groups. Accepts UserList IDs (e.g., '987654321') or full resource names (e.g., 'customers/123/userLists/987654321'). Required by Google for App engagement (APP\_CAMPAIGN\_FOR\_ENGAGEMENT) campaigns; leave empty for other App campaign types. |
| `target_cpa` | number | No | - | Ad-group-level target CPA override in the account currency (e.g., 25 for \$25), NOT in micros. Applies when the campaign bids with Target CPA or Maximize Conversions with a target, and for App engagement ad groups; Google ignores it otherwise. |
| `target_roas` | number | No | - | Ad-group-level target ROAS override (e.g., 3.5 for 350%). Applies when the campaign uses a standard Target ROAS or Maximize Conversion Value with a target; Google ignores it otherwise. |
| `cpm_bid` | number | No | - | Rarely needed; leave unset unless the user asks for it. Maximum viewable CPM bid in the account currency (Display campaigns with manual CPM bidding). |
| `target_cpm` | number | No | - | Rarely needed; leave unset unless the user asks for it. Target CPM in the account currency for campaigns bidding with Target CPM. |
| `ad_rotation_mode` | string or SelectableOption | No | - | Ad rotation: 'OPTIMIZE' (Google default) or 'ROTATE\_FOREVER'. |
| `tracking_url_template` | string | No | - | Ad-group-level tracking URL template, for example '`https://track.example.com/?u=\{lpurl`}'. |
| `final_url_suffix` | string | No | - | Ad-group-level final URL suffix, for example 'utm\_source=google\&utm\_content=\{adgroupid}'. |
| `url_custom_parameters` | array of object or string | No | - | Custom URL parameters as a JSON list of \{"key", "value"} objects, for example \[\{"key": "adgroup", "value": "brand"}]. Not supported on App ad groups. |
| `optimized_targeting_enabled` | boolean | No | - | Enable optimized targeting (Display and Demand Gen ad groups). |
| `exclude_demographic_expansion` | boolean | No | - | Rarely needed; leave unset unless the user asks for it. Keep demographics out of optimized targeting expansion; ignored unless optimized\_targeting\_enabled is true. |
| `display_custom_bid_dimension` | string or SelectableOption | No | - | Rarely needed; leave unset unless the user asks for it. Targeting dimension that carries absolute bids on Display-only campaigns (KEYWORD, AUDIENCE, TOPIC, GENDER, AGE\_RANGE, PLACEMENT, PARENTAL\_STATUS, INCOME\_RANGE). |
| `target_restrictions` | array of object or string | No | - | Rarely needed; leave unset unless the user asks for it. Targeting versus observation per dimension as a JSON list of \{"targeting\_dimension", "bid\_only"} objects, for example \[\{"targeting\_dimension": "AUDIENCE", "bid\_only": true}] for observation only. |
| `excluded_parent_asset_field_types` | string or array of string | No | - | Rarely needed; leave unset unless the user asks for it. Campaign or account asset field types to exclude from this ad group, as AssetFieldType enum names (list or comma-separated). |
| `excluded_parent_asset_set_types` | string or array of string | No | - | Rarely needed; leave unset unless the user asks for it. Campaign or account asset set types to exclude from this ad group, as AssetSetType enum names (list or comma-separated). |
| `channel_strategy` | string or SelectableOption | No | - | Demand Gen channel strategy instead of picking channels: 'ALL\_CHANNELS' or 'ALL\_OWNED\_AND\_OPERATED\_CHANNELS'. When set, channel\_targeting is ignored. |

### GadsAccountItem

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `value` | string | Yes | - | |
| `label` | string | Yes | - | |
| `managerId` | string | Yes | - | The manager ID for the Google Ads account. Ask  user to use the dropdown to select accounts, this manager id is selected background and not shown to the user. |

### SelectItem

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `value` | string | Yes | - | The value of the selectable item. |
| `label` | string | Yes | - | The label of the selectable item, used for display purposes. If not provided, defaults to the value. |

### SelectableOption

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `value` | string | Yes | - | |
| `label` | string | Yes | - | |

## Output

**Type**: `Dict`

Returns created ad group details.

**Fields**: `ad_group_id`, `ad_group_name`, `campaign_id`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.