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_name | string | Yes | - | Name for the campaign |
campaign_type | string or SelectableOption | Yes | - | Campaign type. Available: ‘SEARCH’, ‘DISPLAY’, ‘PERFORMANCE_MAX’, ‘DEMAND_GEN’, ‘SHOPPING’, ‘APP’ |
status | string or SelectableOption | No | {'value': 'PAUSED', 'label': 'Paused'} | Campaign status. Default: PAUSED (recommended) |
daily_budget | number | Yes | - | Daily budget as an actual dollar value in the account currency, NOT in micros (e.g., pass 50 for 50,12.5for12.50). Do not multiply by 1,000,000 — the backend converts to micros automatically. |
locations | array of string or SelectableOption | Yes | - | Target locations for the campaign. Use 2-letter ISO country codes (e.g., ‘US’, ‘CA’, ‘GB’) or Google Ads location IDs (e.g., ‘2840’ for United States). Use the ‘gads_search_geo_targets’ operation to find location IDs for cities, regions, etc. |
languages | array of string or SelectableOption | No | [{'value': 'ALL', 'label': 'All Languages'}] | Target languages for the campaign. Use 2-letter language codes (e.g., ‘EN’ for English, ‘ES’ for Spanish). Select ‘ALL’ or leave empty to target all languages (default). |
bidding_strategy_type | string or SelectableOption | No | - | Bidding strategy. Required for every campaign type except APP (derived from app_focus), unless a portfolio bidding_strategy is passed instead. Available: ‘MANUAL_CPC’, ‘MAXIMIZE_CONVERSIONS’, ‘MAXIMIZE_CONVERSION_VALUE’, ‘TARGET_IMPRESSION_SHARE’, ‘TARGET_SPEND’. |
target_cpa | number | No | - | Target CPA in account currency. Used for MAXIMIZE_CONVERSIONS, and required for APP campaigns whose app_focus is not INAPP_VALUE. |
target_roas | number | No | - | Target ROAS (e.g., 3.5 for 350% ROAS). Used for MAXIMIZE_CONVERSION_VALUE, and required for APP campaigns whose app_focus is INAPP_VALUE. |
location | string or SelectableOption | No | - | Target location on page (only for TARGET_IMPRESSION_SHARE) |
location_fraction | number | No | - | Impression share target % (e.g., 65 for 65%, only for TARGET_IMPRESSION_SHARE) |
cpc_bid_ceiling | number | No | - | Max CPC bid as an actual dollar value in the account currency, NOT in micros (e.g., pass 2.5 for $2.50). Do not multiply by 1,000,000 — the backend converts to micros automatically. Used for TARGET_IMPRESSION_SHARE or TARGET_SPEND bidding strategies. |
start_date | integer or string | No | - | Campaign start date (Unix timestamp or YYYY-MM-DD format) |
end_date | integer or string | No | - | Campaign end date (Unix timestamp or YYYY-MM-DD format) |
tracking_url_template | string | No | - | Campaign-level tracking URL template, for example ‘https://track.example.com/?u=\{lpurl}’. Not supported for APP campaigns. |
final_url_suffix | string | No | - | Campaign-level final URL suffix appended to landing pages, for example ‘utm_source=google&utm_campaign={campaignid}’. Not supported for APP campaigns. |
url_custom_parameters | array of object or string | No | - | Custom URL parameters as a JSON list of {“key”, “value”} objects, for example [{“key”: “channel”, “value”: “search”}]. |
campaign_group | string | No | - | Rarely needed; leave unset unless the user asks for it. Campaign group ID or resource name (customers/{cid}/campaignGroups/{id}) to add the campaign to. |
bidding_strategy | string | No | - | Portfolio bidding strategy ID or resource name (customers/{cid}/biddingStrategies/{id}). When set, the campaign uses that shared strategy and bidding_strategy_type is not needed. Not supported for APP campaigns. |
payment_mode | string or SelectableOption | No | - | Rarely needed; leave unset unless the user asks for it. Payment mode: ‘CLICKS’, ‘CONVERSIONS’, ‘CONVERSION_VALUE’, or ‘GUEST_STAY’. Leave unset for the Google default. |
frequency_caps | array of object or string | No | - | Frequency caps as a JSON list of Google Ads FrequencyCapEntry objects, for example [{“key”: {“level”: “CAMPAIGN”, “event_type”: “IMPRESSION”, “time_unit”: “DAY”, “time_length”: 1}, “cap”: 3}]. DISPLAY only. |
excluded_parent_asset_field_types | string or array of string | No | - | Rarely needed; leave unset unless the user asks for it. Account-level asset field types to exclude from this campaign, as AssetFieldType enum names (for example SITELINK, CALLOUT), 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. Account-level asset set types to exclude from this campaign, as AssetSetType enum names, list or comma-separated. |
vanity_pharma | object or string | No | - | Rarely needed; leave unset unless the user asks for it. Vanity pharma display settings as JSON with vanity_pharma_display_url_mode (MANUFACTURER_WEBSITE_URL or WEBSITE_DESCRIPTION) and vanity_pharma_text (VanityPharmaText enum name). |
use_audience_grouped | boolean | No | - | Rarely needed; leave unset unless the user asks for it. Set true so the campaign targets reusable Audience resources instead of individual segments. Immutable after creation and blocks campaign-level segment exclusions. PERFORMANCE_MAX and DEMAND_GEN only. |
geo_target_type | string or SelectableOption | No | - | Geo target type setting. PRESENCE_OR_INTEREST (default): show ads to people in, regularly in, or who’ve shown interest in your targeted locations. PRESENCE: show ads only to people in or regularly in your targeted locations. |
negative_geo_target_type | string or SelectableOption | No | - | Rarely needed; leave unset unless the user asks for it. How excluded locations are matched: ‘PRESENCE’ (Google default) or ‘PRESENCE_OR_INTEREST’. Not used for APP campaigns. |
target_search_network | boolean | No | True | Include Google Search Partners (SEARCH campaigns only). Default: enabled |
target_content_network | boolean | No | False | Enable Display Expansion (SEARCH campaigns only) |
target_partner_search_network | boolean | No | - | Rarely needed; leave unset unless the user asks for it. Serve on the Google Partner Network (SEARCH campaigns only; available to select partner accounts). |
dynamic_search_ads_setting | object or string | No | - | Dynamic Search Ads settings as JSON (SEARCH campaigns only): {“domain_name”: “example.com”, “language_code”: “en”, “use_supplied_urls_only”: false}. |
keyword_match_type | string or SelectableOption | No | - | Rarely needed; leave unset unless the user asks for it. Campaign-level keyword match type (SEARCH campaigns only). The API only supports ‘BROAD’, which applies broad match to every keyword in the campaign; Google rejects it unless the account and bidding strategy are eligible for campaign-level broad match. |
enable_ai_max | boolean | No | False | Enable AI Max for Search (SEARCH campaigns only). Turns on Google’s AI Max optimization suite: search term matching, text customization, and final URL expansion. Default: disabled. |
merchant_id | integer or string | No | - | Merchant Center account ID. Required for SHOPPING; optional for PERFORMANCE_MAX (enables PMAX for retail), DEMAND_GEN (product feed) and APP campaigns. If ID is unknown, fetch via gads_run_gaql_query: SELECT product_link.merchant_center.merchant_center_id FROM product_link WHERE product_link.type = 'MERCHANT_CENTER'. Local Inventory Ads are always on when the Merchant Center has local feeds; there is no campaign flag to disable them. For online-only serving, filter by channel: gads_update_listing_groups (Shopping ad groups) or an asset group listing group filter (Performance Max). |
campaign_priority | integer | No | - | Shopping campaign priority: 0 (low), 1 (medium), or 2 (high). Required for SHOPPING campaigns. Default: 0 |
feed_label | string | No | - | Feed label for products to advertise. Optional for SHOPPING, PERFORMANCE_MAX and DEMAND_GEN campaigns; if omitted, all products are eligible. Requires merchant_id to be set. |
listing_type | string or SelectableOption | No | - | Rarely needed; leave unset unless the user asks for it. Set ‘VEHICLES’ for vehicle ads (SHOPPING and PERFORMANCE_MAX). Immutable after creation. |
use_vehicle_inventory | boolean | No | - | Rarely needed; leave unset unless the user asks for it. Target vehicle listing inventory (SHOPPING and PERFORMANCE_MAX). Immutable after creation. |
advertising_partner_ids | string or array of string | No | - | Rarely needed; leave unset unless the user asks for it. Google Ads account IDs of advertising partners cooperating in a shared Shopping campaign, list or comma-separated. |
ignore_brand_exclusion_in_shopping_ads | boolean | No | - | Rarely needed; leave unset unless the user asks for it. Ignore account-level brand exclusions for Shopping ads in this campaign (SHOPPING only). |
disable_product_feed | boolean | No | - | Rarely needed; leave unset unless the user asks for it. Disable the optional product feed (DEMAND_GEN campaigns only). |
brand_guidelines_enabled | boolean | No | - | Enable Brand Guidelines on a PERFORMANCE_MAX campaign. Immutable after creation; when enabled, business name and logo must be linked as campaign assets. Default: disabled. |
asset_automation_settings | array of object or string | No | - | PERFORMANCE_MAX asset automation as a JSON list of {“asset_automation_type”, “asset_automation_status”} objects, for example [{“asset_automation_type”: “FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION”, “asset_automation_status”: “OPTED_OUT”}] to turn off final URL expansion. |
pmax_campaign_settings | object or string | No | - | Rarely needed; leave unset unless the user asks for it. PERFORMANCE_MAX campaign settings as JSON: brand_targeting_overrides ({“ignore_exclusions_for_shopping_ads”: true}), local_services_enabled, and local_services_pmax_campaign_settings ({“country_code”: “US”}). |
upgraded_targeting | boolean | No | - | Rarely needed; leave unset unless the user asks for it. Enable upgraded targeting on a DEMAND_GEN campaign. Immutable after creation. |
app_focus | string or SelectableOption | No | - | App campaign focus (only for APP campaigns), matching the ‘What do you want to focus on?’ option in the Google Ads UI. Determines the campaign sub-type, optimization goal, and bid strategy. Available: ‘INSTALL_VOLUME’ (Install volume — most installs at a target cost-per-install), ‘INSTALL_INAPP’ (Install volume from users likely to take in-app actions), ‘INAPP_ACTIONS’ (In-app actions — reach new users likely to complete in-app actions), ‘ENGAGEMENT’ (App engagement — re-engage existing users, min. 50K installs), ‘INAPP_VALUE’ (In-app action value — maximize conversion value / ROAS), ‘PRE_REGISTRATION’ (App pre-registration — Android only). |
app_store | string or SelectableOption | No | - | App store for the promoted app (only for APP campaigns). ‘GOOGLE_APP_STORE’ or ‘APPLE_APP_STORE’. |
app_id | string | No | - | App identifier (only for APP campaigns). For Google Play use the package name (e.g., ‘com.example.app’); for the Apple App Store use the numeric store ID (e.g., ‘123456789’). |
conversion_actions | array of string | No | - | Conversion actions to optimize for via selective optimization (APP campaigns only). Accepts conversion action IDs (e.g., ‘987654321’) or full resource names (e.g., ‘customers/123/conversionActions/987654321’). Required for INSTALL_INAPP, INAPP_ACTIONS, ENGAGEMENT, and INAPP_VALUE; optional for INSTALL_VOLUME; must be omitted for PRE_REGISTRATION (added automatically by Google). |
view_through_conversion_optimization_enabled | boolean | No | - | Whether View-through Conversion (VTC) optimization is enabled for this campaign. Only allowed for certain Demand Gen and App campaigns; ignored for other campaign types. |
contains_eu_political_advertising | string or SelectableOption | No | - | EU political ads declaration that Google Ads requires on every new campaign: ‘CONTAINS_EU_POLITICAL_ADVERTISING’ or ‘DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING’. Defaults to DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING when omitted. |