Create a conversion destination
Create a new conversion destination on the platform. Supported for
LinkedIn (conversion rule) and Google Ads (conversion action). Meta
and OpenAI Ads pixels are created via their own tracking-tags flow
instead (POST /v1/accounts/{accountId}/tracking-tags); this endpoint
returns 405 for both.
LinkedIn: creation is NOT idempotent. A retry creates a second destination. Deduplicate before retrying.
Google Ads: calling with a name that already exists reuses the
existing conversion action transparently (the response is identical to
a fresh create). Calling with the same name but a different category
returns a typed IDEMPOTENCY_CONFLICT (409) rather than silently
returning the mismatched action.
LinkedIn: the rule is created with conversionMethod=CONVERSIONS_API
and (by default) auto-associated with all of the ad account's campaigns
via autoAssociationType=ALL_CAMPAIGNS. Pass autoAssociationType: NONE
to opt out and manage associations explicitly via the associations
endpoints below.
365-day attribution windows are only valid for SUBMIT_APPLICATION,
PURCHASE, ADD_TO_CART, QUALIFIED_LEAD, and LEAD rule types;
the API rejects other combinations locally.
Google Ads: the conversion action is created with
type=UPLOAD_CLICKS (required for API-uploaded offline conversions,
immutable after creation). The type field carries the Google
ConversionActionCategory enum value, e.g. PURCHASE,
SUBSCRIBE_PAID, SIGNUP, IMPORTED_LEAD, BOOK_APPOINTMENT.
Unified standard event names (e.g. Purchase, Subscribe,
CompleteRegistration, Lead, Schedule) are resolved to their
Google category equivalents automatically. The action defaults to
secondary (non-primary) to avoid immediately steering Smart Bidding;
pass primaryForGoal: true to opt in.
API key authentication - use your Zernio API key as a Bearer token
In: header
Path Parameters
SocialAccount ID (linkedinads or googleads).
Ad account ID. For LinkedIn: numeric (e.g. "5123456") or
full urn:li:sponsoredAccount:{id} URN. For Google: numeric
customer ID (e.g. "1234567890") or customers/{id} form.
length <= 255Conversion type. For LinkedIn: a unified standard event name (e.g. "Purchase", "Lead", "AddToCart") or a LinkedIn rule type enum (e.g. "PURCHASE", "QUALIFIED_LEAD"). For Google: a unified standard event name (Purchase, Subscribe, CompleteRegistration, Lead, Schedule) or a Google ConversionActionCategory enum value directly (e.g. "PURCHASE", "SUBSCRIBE_PAID", "SIGNUP", "IMPORTED_LEAD", "BOOK_APPOINTMENT"). Unknown values pass through to the platform.
LinkedIn only.
"LAST_TOUCH_BY_CAMPAIGN" | "LAST_TOUCH_BY_CONVERSION"LinkedIn only. Default 30. 365 only allowed for LEAD, PURCHASE, ADD_TO_CART, QUALIFIED_LEAD, SUBMIT_APPLICATION rule types; the API rejects other combinations locally.
1 | 7 | 30 | 90 | 365LinkedIn only. Default 7. Same 365-day-window type
restriction applies as postClickAttributionWindowSize.
1 | 7 | 30 | 90 | 365LinkedIn only. DYNAMIC (default) uses the per-event value
from sendConversions. FIXED uses the rule's value field.
NO_VALUE drops monetary value entirely.
"DYNAMIC" | "FIXED" | "NO_VALUE"LinkedIn only. Static conversion value. Used when
valueType=FIXED. The currency should match the ad
account's currency.
LinkedIn only. Controls campaign association at rule-creation time:
- ALL_CAMPAIGNS: associate the rule with every active, paused, and draft campaign in the ad account
- OBJECTIVE_BASED: associate only campaigns whose objective matches the rule's type
- NONE: don't auto-associate. Manage associations via
the
/associationsendpoints below. Note: auto-association runs once at create time; new campaigns added after the rule still need explicit association.
"ALL_CAMPAIGNS""ALL_CAMPAIGNS" | "OBJECTIVE_BASED" | "NONE"Google Ads only. Whether to count multiple conversions from the same click (MANY_PER_CLICK) or at most one (ONE_PER_CLICK). Defaults to MANY_PER_CLICK if omitted.
"MANY_PER_CLICK" | "ONE_PER_CLICK"Google Ads only. When true, the conversion action is marked as primary and immediately influences Smart Bidding. Defaults to false (secondary, record-only) to avoid unintentionally steering the customer's campaigns on creation.
Response Body
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.conversions.createConversionDestination({ path: { accountId: 'account_abc123', }, body: { adAccountId: 'adaccount_abc123', name: 'Example', type: 'string', },});console.log(data);{
"platform": "linkedinads",
"destination": {
"id": "string",
"name": "string",
"type": "string",
"status": "active",
"adAccountId": "string"
}
}{
"error": "Unauthorized"
}List conversion destinations GET
Returns the list of pixels (Meta), conversion actions (Google), conversion rules (LinkedIn), or pixels (OpenAI Ads) accessible to the connected ads account. Use the returned `id` as `destinationId` when posting to `POST /v1/ads/conversions`. For Google and LinkedIn, each destination's `type` reflects the conversion type (PURCHASE, LEAD, SIGN_UP, etc.) — the event type is locked to the destination. For Meta and OpenAI Ads, `type` is absent: pixels accept any event name per request. For LinkedIn, destinations are returned across every sponsored ad account the connected token can access; the `adAccountId` field on each destination identifies the parent ad account and is required for subsequent CRUD calls (update, delete, associations, metrics).
Get a conversion destination GET
LinkedIn-only today. Returns the full destination record for one conversion rule. The `adAccountId` query parameter is required because LinkedIn rules are scoped to a sponsored ad account.