---
title: "Create a Google Ads destination"
method: POST
path: "/v3/google-ads/destinations"
tags: ["Analytics Setup"]
---

# Create a Google Ads destination

`POST /v3/google-ads/destinations`

## Request

- Base URL: `https://api.scalev.com`
- URL: `https://api.scalev.com/v3/google-ads/destinations`
- Auth: one of:
  - HTTP bearer
  - API key in header `authorization`
  - OAuth 2
    - Authorization code: `https://api.scalev.com/v3/oauth/authorize`
    - Token URL: `https://api.scalev.com/v3/oauth/token` scopes: `google_ads:create`

Requires the `google_ads:create` scope and an existing business-owned Google connection. Creates an account asset without selecting a Purchase conversion. Select the receiving Purchase action independently for each store through its `purchase_tracking.google_ads` settings, using the revision from the latest store detail response. An account-only asset sends no Purchase conversions until selected in that store and assigned to the relevant page or storefront. Clearing the store selection stops Google Purchase tracking for new orders; existing order snapshots remain unchanged. The optional `conversion_action_id` remains supported for legacy clients and is verified with Google when supplied. OAuth connection and account discovery are dashboard-only.

## Request body

- GoogleAdsDestinationCreate: Connect a Google Ads account with remarketing enabled by default. Existing accounts retain their saved remarketing settings. Consent evidence, configured triggers and explicit feed-ID matching still govern delivery. Choose Purchase actions per store using purchase_tracking; page and widget triggers select their own actions.
  - `name` string, required
  - `connection_id` string, uuid, required
  - `customer_id` string, required
  - `login_customer_id` string, nullable
  - `conversion_action_id` string, nullable: Legacy Purchase default. Omit for account-only connections; use the store Purchase settings.

## Response `201`

Success

- GoogleAdsDestination
  - `id` string, uuid, required
  - `connection_id` string, uuid, required
  - `name` string, required
  - `customer_id` string, required
  - `login_customer_id` string, nullable
  - `conversion_action_id` string, nullable, required
  - `tag_id` string, nullable, required
  - `conversion_label` string, nullable, required
  - `currency` 'IDR', required
  - `enabled` boolean, required
  - `connection_status` 'connected' | 'disconnected' | 'reconnect_required' | 'removed': Google integration authorization status. Reconnect through dashboard Integrations when required.
  - `access_status` 'unknown' | 'accessible' | 'access_lost': Last known account access status; transient refresh failures preserve it.
  - `access_checked_at` string, date-time, nullable: Time of the latest attempted account access check, including unsuccessful attempts.
  - `access_error` string, nullable: Safe provider error code from the latest check. No provider payload or credentials.
  - `account_status` string, nullable: Last known Google customer lifecycle status, such as ENABLED, CANCELED, or SUSPENDED.
  - `event_mappings` GoogleAdsEventMapping[]
    - `id` string, uuid
    - `event_name` string, required: Scalev event name. Purchase is forbidden, case-insensitively.
    - `conversion_action_id` string, required
    - `conversion_action_name` string, nullable: Google conversion-action name verified during configuration; used as the selector label.
    - `enabled` boolean
    - `tag_id` string
    - `conversion_label` string
  - `remarketing` GoogleAdsRemarketing
    - `enabled` boolean: New account connections initialize this to true. Existing saved settings are preserved; disabling it stops browser remarketing. Consent and feed-ID requirements still apply.
    - `feed_id_source` 'sku' | 'explicit'
    - `feed_ids` object: Explicit mappings from variant:<numeric ID> or bundle:<numeric bundle-price-option ID> to the exact existing Google feed item ID. Bundle options always need explicit mappings.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `502`: The provider could not complete the request.

## Changes

- **2026-11-03** `6b9152f04622`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/scalev/apis/nexus-commerce-api/changes/v3/google-ads/destinations/post.md)

---

[API](https://skmtc.dev/scalev/apis/nexus-commerce-api.md) - [All operations](https://skmtc.dev/scalev/apis/nexus-commerce-api/llms.txt) - [OpenAPI document](https://skmtc.dev/scalev/apis/nexus-commerce-api/revisions/6b9152f04622?raw)
