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
POST https://api.adspirer.ai/api/v1/tools/create_conversion_action/execute
Authorization: Bearer sk_live_... โ your Adspirer API key (required)Content-Type: application/json (required)Idempotency-Key: <uuid> โ recommended for write operations to make retries safeAll tool arguments are wrapped in an arguments object.
| Field | Type | Description |
|---|---|---|
name | string required | Display name in the Google Ads UI (e.g. 'Lead Form Submit', 'Pricing Page View', 'Newsletter Signup'). Must be unique per account. |
category | string required | Conversion category. Pick the closest match: PURCHASE, SIGNUP, ADD_TO_CART, BEGIN_CHECKOUT, SUBMIT_LEAD_FORM, BOOK_APPOINTMENT, REQUEST_QUOTE, GET_DIRECTIONS, ENGAGEMENT, CONTACT, PHONE_CALL_LEAD, OUTBOUND_CLICK, QUALIFIED_LEAD, CONVERTED_LEAD, DOWNLOAD, PAGE_VIEW, SUBSCRIBE_PAID, IMPORTED_LEAD, STORE_VISIT, STORE_SALE, DEFAULT (use only if none fit). |
value | number optional | Default conversion value in account currency (e.g. 50.00 for $50/lead). Recommended for lead-gen โ gives TARGET_CPA bidding something to optimize. |
currency_code | string optional | 3-letter currency code (USD, EUR, etc). Defaults to account currency. |
always_use_default_value | boolean optional | If True, every conversion is worth `value` regardless of what the tag sends. Useful for lead-gen where each lead's dollar value isn't dynamic. Requires `value` > 0. default: false |
counting_type | string optional | ONE_PER_CLICK (default; lead-gen, signups, downloads โ count one conversion per ad click) or MANY_PER_CLICK (e-commerce โ count every purchase, including repeat sales from same click). default: "ONE_PER_CLICK" |
click_through_lookback_window_days | integer optional | 1-30. How many days post-click a conversion still counts. Default 30. default: 30 |
view_through_lookback_window_days | integer optional | 1-30. How many days post-impression (no click) a conversion still counts. Default 1. default: 1 |
primary_for_goal | boolean optional | Whether this is a primary conversion for its category. Default True. default: true |
attribution_model | string optional | Default GOOGLE_ADS_LAST_CLICK (most common). Other options: EXTERNAL, GOOGLE_SEARCH_ATTRIBUTION_FIRST_CLICK, GOOGLE_SEARCH_ATTRIBUTION_LINEAR, GOOGLE_SEARCH_ATTRIBUTION_TIME_DECAY, GOOGLE_SEARCH_ATTRIBUTION_POSITION_BASED, GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN. default: "GOOGLE_ADS_LAST_CLICK" |
customer_id | string optional | Google Ads customer ID. Required for multi-account users. Get from list_connected_accounts. |
{
"arguments": {
"name": "string",
"category": "string",
"value": 1.0,
"currency_code": "string",
"always_use_default_value": false,
"counting_type": "ONE_PER_CLICK",
"click_through_lookback_window_days": 30,
"view_through_lookback_window_days": 1
}
}
{
"success": true,
"data": {
"text": "(tool-specific textual output for create_conversion_action)",
"quota": {
"used": 42,
"limit": 150,
"tier": "plus",
"period_end": "2026-05-01"
}
},
"tool": "create_conversion_action"
}
{
"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_conversion_action"
}
{
"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_conversion_action",
"quota": {
"used": 150,
"limit": 150,
"tier": "plus",
"period_end": "2026-05-01",
"upgrade_url": "https://adspirer.ai"
}
}
Interactive: Swagger UI
Machine-readable: OpenAPI 3.1 spec ยท llms-full.txt
More tools: Google Ads ยท All tools
Adspirer REST API โ get an API key at adspirer.ai/keys ยท adspirer.ai