---
title: "List conversion actions"
method: GET
path: "/v1/ads/conversions/actions"
tags: ["Conversions"]
---

# List conversion actions

`GET /v1/ads/conversions/actions`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/ads/conversions/actions`
- Auth: HTTP bearer

Lists the conversion actions in a Google Ads account, with the website tag snippets to install where available.

Lists Google Ads conversion actions on the resolved customer, all types by
default. Each action's `tagSnippets` (global site tag + event snippet) is
included when Google has them for that action's type, e.g. `WEBPAGE`.
Google-only; other platforms return `501`. Requires the Ads add-on.

`adAccountId` (alias `customerId`) is optional: when omitted, it is resolved from the connection's
accessible Google Ads customers, and the call fails with `400` when more than
one is accessible (pass `adAccountId` to disambiguate).

The list itself is cached for the quota window (1 hour fresh, up to 7 days
last-good; the cache key does not vary on `type`). The response carries
`cachedAt` and `stale`, set when a quota-exhausted call falls back to the
last-good copy instead of a live read.

## Query parameters

- `accountId` string, required
- `adAccountId` string
- `customerId` string
- `type` string

## Response `200`

The resolved customer and its conversion actions.

- object
  - `customerId` string: The Google Ads customer id the actions were read from.
  - `actions` ConversionAction[]
    - `id` string, required: Google Ads conversion action id.
    - `name` string, required
    - `type` string, required: Google's ConversionActionType, e.g. WEBPAGE, UPLOAD_CLICKS.
    - `status` string, required: Google's ConversionActionStatus, e.g. ENABLED, REMOVED, HIDDEN.
    - `category` string, required: Google's ConversionActionCategory, e.g. DEFAULT, PURCHASE, LEAD.
    - `origin` string: Google's ConversionOrigin, e.g. WEBSITE, APP. Together with category it names the goal the action belongs to (see GET /v1/ads/conversions/goals).
    - `primaryForGoal` boolean: true = primary (counts toward bidding when its goal is biddable), false = secondary. Change it with PATCH /v1/ads/conversions/actions/{actionId}.
    - `defaultValue` number: Value recorded when the conversion carries none.
    - `defaultCurrency` string: ISO 4217 currency of defaultValue.
    - `alwaysUseDefaultValue` boolean: true = defaultValue is used even when the conversion sends its own value.
    - `countingType` string: Google's ConversionActionCountingType: ONE_PER_CLICK or MANY_PER_CLICK.
    - `clickThroughLookbackWindowDays` integer: Days after an ad click a conversion is still credited (1 to 90).
    - `viewThroughLookbackWindowDays` integer: Days after an ad view a conversion is still credited (1 to 30).
    - `tagSnippets` object[], required: The code a customer pastes onto their site. Present for types Google generates a snippet for (e.g. WEBPAGE); empty otherwise.
      - `type` string, required: Google's TrackingCodeType, e.g. WEBPAGE.
      - `pageFormat` string: Google's TrackingCodePageFormat, e.g. HTML, AMP.
      - `globalSiteTag` string: The gtag.js snippet to install once per site.
      - `eventSnippet` string: The per-conversion-page snippet that fires the event.
  - `cachedAt` string, date-time, nullable: When this list was fetched from Google. Null when it was never served from cache.
  - `stale` boolean: True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read.

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key. `code` is `missing_credentials` when no Authorization header was sent and `invalid_credentials` when the key is unknown, revoked or expired.
- `403`: Ads access required (Ads add-on on legacy plans, included on usage-based plans). Also returned with code `ad_account_not_selected` when the connection has selected ad accounts and the targeted Google Ads customer is not among them. `details` carries `accountId`, `adAccountId` and `selectedAdAccountIds`. Fix: add it to the selection (GET /v1/connect/googleads/ads with adAccountIds, which replaces the selection) or use a connection that has it selected.
- `404`: The account or requested resource was not found or is not accessible. An account ID may have been disconnected and removed. Read GET /v1/accounts for current account IDs.
- `409`: The account exists but is inactive or needs reconnection. Reconnect it, then read GET /v1/accounts for its current account ID before retrying. Code: ads_connection_required.
- `422`: Google Ads only. Two cases: - `ads_connection_required`: no Google Ads customer account is left on this connection after its ad-account selection. Reconnect via GET /v1/connect/googleads/ads with a Google user that can reach the ad account, or select one of its ad accounts. - `invalid_resource_state`: the connection reaches only a Google Ads manager account with no client accounts yet. Create one with POST /v1/ads/accounts or under the manager in Google Ads, then retry.
- `501`: Conversion actions are only available for Google Ads (the account's platform is not `googleads`).

## Changes

- **2026-11-10** `d568bb00ed73`: 20 info
  - added the optional property `docsUrl` to the response with the `400` status
  - added the optional property `docsUrl` to the response with the `401` status
  - added the optional property `docsUrl` to the response with the `404` status
  - added the optional property `docsUrl` to the response with the `409` status
  - …16 more
- **2026-10-21** `98e9f11e6b3a`: 1 info
  - added the non-success response with the status `422`
- **2026-10-06** `f8c8f34fb41a`: 4 warning
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `400`
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `401`
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `404`
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `409`
- **2026-10-02** `d556591af3f6`: 10 info
  - added the optional property `code` to the response with the `401` status
  - added the optional property `details` to the response with the `401` status
  - added the optional property `docUrl` to the response with the `400` status
  - added the optional property `docUrl` to the response with the `401` status
  - …6 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/ads/conversions/actions/get.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) - [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/21ba7421089d?raw)
