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. |