create_shopping_campaign

Google Ads Write

๐Ÿšจ **IF THIS TOOL RETURNS A QUOTA ERROR:** - The error message will include a clickable upgrade link - Show the FULL error message to the user (it contains the upgrade link) - DO NOT attempt to work ar

Endpoint

POST https://api.adspirer.ai/api/v1/tools/create_shopping_campaign/execute

Headers

Description

๐Ÿšจ **IF THIS TOOL RETURNS A QUOTA ERROR:** - The error message will include a clickable upgrade link - Show the FULL error message to the user (it contains the upgrade link) - DO NOT attempt to work around the error or use alternative data - DO NOT create campaigns or perform actions without valid tool data - STOP and direct the user to upgrade via the provided link Create a full Standard Shopping campaign advertising the products in a linked Merchant Center feed. โš ๏ธ Creates a REAL campaign (starts PAUSED โ€” resume_campaign when ready). Call ONCE; do NOT auto-retry. PREREQUISITE: a Merchant Center account must be linked. Check get_merchant_center_links; if none, link one with link_merchant_center first. Pass that MC id as `merchant_id`. WHAT THIS BUILDS: budget + SHOPPING campaign (bound to the MC feed) + one or MORE ad groups, each with one or more product ads. Supports the full bidding + settings surface. The campaign serves ALL products in the feed until you subdivide with `add_product_group` (the listing-group tree). MULTIPLE AD GROUPS: pass `ad_groups: [{name, cpc_bid_micros, num_product_ads}, ...]` to build several at once (e.g. one ad group per product category). Omit it to create a single ad group from ad_group_name/cpc_bid_micros. **Required:** campaign_name, budget_daily, merchant_id. **Bidding:** bidding_strategy (MANUAL_CPC default | TARGET_SPEND=MaxClicks | TARGET_ROAS | MAXIMIZE_CONVERSION_VALUE | MAXIMIZE_CONVERSIONS | TARGET_CPA) + target_roas / target_cpa_micros / cpc_bid_ceiling_micros / cpc_bid_floor_micros / enhanced_cpc as applicable. **Settings:** campaign_priority (0-2), enable_local, disable_product_feed, network_settings, feed_label (omit unless the MC account uses feed labels โ€” a wrong value serves zero products), start_date/end_date (YYYYMMDD).

Request body

All tool arguments are wrapped in an arguments object.

FieldTypeDescription
campaign_namestring requiredCampaign name (e.g. 'Summer Catalog Shopping').
budget_dailynumber requiredDaily budget in the account's native currency. Do NOT convert currencies โ€” pass the user's amount as-is.
merchant_idstring requiredThe linked Merchant Center account ID whose product feed this campaign advertises. Get it from get_merchant_center_links (link one first with link_merchant_center if none).
feed_labelstring optionalMerchant Center feed label for the products to advertise. MUST match a feed label that exists in the linked Merchant Center account, or the campaign will serve ZERO products. Leave unset (omit) to target products that have no feed label โ€” the common single-feed case. Do NOT guess a country code; confirm the account's actual feed label first.
bidding_strategystring optionalMANUAL_CPC (default, classic Shopping) | TARGET_SPEND (Maximize Clicks) | TARGET_ROAS | MAXIMIZE_CONVERSION_VALUE | MAXIMIZE_CONVERSIONS | TARGET_CPA. default: "MANUAL_CPC"
target_roasnumber optionalTarget ROAS (e.g. 4.0 = 400%). REQUIRED if bidding_strategy=TARGET_ROAS; optional booster for MAXIMIZE_CONVERSION_VALUE.
target_cpa_microsinteger optionalTarget CPA in micros. REQUIRED if bidding_strategy=TARGET_CPA; optional for MAXIMIZE_CONVERSIONS.
cpc_bid_ceiling_microsinteger optionalMax CPC bid limit (micros) for automated strategies (Target ROAS/CPA/Max Clicks).
cpc_bid_floor_microsinteger optionalMin CPC bid limit (micros) for Target ROAS/CPA/Max-Conv-Value.
enhanced_cpcboolean optionalEnable Enhanced CPC for MANUAL_CPC bidding. default: false
campaign_priorityinteger optionalStandard Shopping priority 0 (low, default) / 1 / 2 (high) โ€” which campaign wins for a product when several overlap. Leave 0 unless you run multiple Shopping campaigns. default: 0
enable_localboolean optionalInclude local-inventory (in-store) products from the Merchant Center feed. Default false. default: false
disable_product_feedboolean optionalDisable the product feed (feedless Shopping). Advanced; leave unset normally.
network_settingsany optionalWhich networks to serve on. Omit for Google's Shopping defaults.
ad_groupsarray optionalMultiple ad groups to create, each with its own name/cpc_bid/num_product_ads. Omit to create a single default ad group (use ad_group_name/cpc_bid_micros below).
ad_group_namestring optionalName for the single initial ad group (when ad_groups is not used).
cpc_bid_microsinteger optionalDefault max CPC (micros) for the single initial ad group (when ad_groups is not used).
num_product_adsinteger optionalNumber of product ads in the single initial ad group (when ad_groups is not used). default: 1
start_datestring optionalStart date YYYYMMDD (optional).
end_datestring optionalEnd date YYYYMMDD (optional).
customer_idstring optionalGoogle Ads customer ID (10 digits, no dashes). REQUIRED whenever the user has more than one Google Ads account connected โ€” this creates a REAL campaign that spends REAL money, so it must land in the account the user actually meant. Do NOT omit it and do NOT guess: carry over the customer_id already in use in this conversation, or call list_connected_accounts / get_connections_status and ask the user which account. If a call fails asking you to disambiguate, RETRY with this parameter โ€” that error does NOT mean the account is disconnected.

Example request

{
  "arguments": {
    "campaign_name": "string",
    "budget_daily": 1.0,
    "merchant_id": "string",
    "feed_label": "string",
    "bidding_strategy": "MANUAL_CPC",
    "target_roas": 1.0,
    "target_cpa_micros": 1,
    "cpc_bid_ceiling_micros": 1,
    "cpc_bid_floor_micros": 1
  }
}

Example responses

200 โ€” Success

{
  "success": true,
  "data": {
    "text": "(tool-specific textual output for create_shopping_campaign)",
    "quota": {
      "used": 42,
      "limit": 150,
      "tier": "plus",
      "period_end": "2026-05-01"
    }
  },
  "tool": "create_shopping_campaign"
}

400 โ€” Tool-level error (bad arguments / multi-account selection)

{
  "success": false,
  "error": "You have 25 meta_ads accounts connected. Please specify which account to use by passing the ad_account_id parameter:\n  - Acme Holdings (ad_account_id=\"act_123456789\")\n  - Acme EU (ad_account_id=\"act_987654321\")",
  "is_error": true,
  "tool": "create_shopping_campaign"
}

402 โ€” Quota exhausted

{
  "success": false,
  "error": "\ud83d\udea8 Monthly limit reached (150/150 tool calls on Plus tier).\nUpgrade to Pro at https://adspirer.ai to keep building.",
  "is_error": true,
  "tool": "create_shopping_campaign",
  "quota": {
    "used": 150,
    "limit": 150,
    "tier": "plus",
    "period_end": "2026-05-01",
    "upgrade_url": "https://adspirer.ai"
  }
}

Try it live


Adspirer REST API โ€” get an API key at adspirer.ai/keys ยท adspirer.ai