---
title: "Create a website conversion action"
method: POST
path: "/api/v1/tools/google_create_conversion_action/execute"
tags: ["Google Ads"]
---

# Create a website conversion action

`POST /api/v1/tools/google_create_conversion_action/execute`

## Request

- Base URL: `https://adako.ai`
- URL: `https://adako.ai/api/v1/tools/google_create_conversion_action/execute`
- Auth: HTTP bearer

Creates a website (WEBPAGE) conversion action so the account can record a goal.
Use when: the user has decided what they want to count and has a way to fire the tag on their site.
Do not use when: a conversion action for the same thing already exists — duplicates double-count and make every CPA in the account wrong. Check google_list_conversion_actions first, always.
**This tool creates the action ENABLED, not paused.** Every other create in Adako is paused, but a paused conversion action records nothing at all, so creating one paused would be the same as not creating it. Creating it changes no spend and no bids by itself; it only starts collecting.
Creating the action is only half the job: the user still has to put the tag or the Google tag event on their site (Adako cannot do that part). Until the tag fires, the action records zero and any campaign bidding on it is bidding on nothing. Say that.
If you are unsure which account, campaign or period the user means, ask them — do not guess ids or dates.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object, required
    - `customer_id` string: Google Ads customer id (10 digits, dashes optional). Omit to use the primary account; list_connected_accounts shows the valid ids.
    - `name` string, required: A name the user will recognise, e.g. "Demo request".
    - `category` 'DEFAULT' | 'PURCHASE' | 'LEAD' | 'SUBMIT_LEAD_FORM' | 'BOOK_APPOINTMENT' | 'REQUEST_QUOTE' | 'SIGNUP' | 'CONTACT' | 'PHONE_CALL_LEAD' | 'ADD_TO_CART' | 'BEGIN_CHECKOUT' | 'SUBSCRIBE_PAID' | 'DOWNLOAD' | 'PAGE_VIEW' | 'ENGAGEMENT' | 'OUTBOUND_CLICK' | 'QUALIFIED_LEAD', required: What kind of conversion this is.
    - `counting_type` 'ONE_PER_CLICK' | 'MANY_PER_CLICK': Defaults to ONE_PER_CLICK, which is right for leads. Use MANY_PER_CLICK for sales where a repeat purchase should count again.
    - `default_value` number: Value per conversion as a decimal in the account currency (set as the action's default currency). Leave out when the tag sends its own value.
    - `click_lookback_days` integer: Click-through window in days; Google defaults to 30.
    - `counts_towards_conversions` boolean: Primary (true, the default) means Smart Bidding optimises towards it. False makes it observation only.
    - `idempotency_key` string: Optional caller-supplied key; identical keys never execute twice.

## Response `200`

The tool ran. A write returns proposal_id and approve_url while the change waits for approval.

- SuccessEnvelope
  - `success` unknown, required
  - `tool` string, required
  - `data` object, required: Machine-readable result.
  - `markdown` string, required: The same result written for a person or a model.
  - `quota` Quota: Task usage for the current billing period.
    - `plan` string
    - `used` integer
    - `limit` integer
    - `period_end` string
    - `upgrade_url` string
  - `proposal_id` string: Present for writes. Nothing changes on the ad platform until it is approved.
  - `approve_url` string: Where a person approves the proposal.
  - `request_id` string, required

## Other responses

- `400`: Invalid arguments, or the ad account could not be resolved.
- `401`: Missing, invalid, revoked or expired API key.
- `402`: Monthly task quota used up, or the plan does not include this tool.
- `403`: The connected ad account lacks the access level this tool needs.
- `404`: Unknown tool name.
- `409`: Not connected, reconnect needed, confirmation required, a proposal already pending or no longer pending, an identical create that failed earlier today (proposal_failed_before), a create that duplicates an approved one (duplicate_create), the ad-account limit of the plan reached (account_limit), or an Idempotency-Key reused with different arguments.
- `429`: Rate limited by Adako or by the ad platform. See Retry-After.
- `500`: Unexpected error inside Adako.
- `502`: The ad platform returned an error.

---

[API](https://skmtc.dev/adako/apis/adako-rest-api.md) · [All operations](https://skmtc.dev/adako/apis/adako-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adako/apis/adako-rest-api/revisions/59ee60d48a56?raw)
