Create a tracking tag
Creates a measurement pixel on an ad account and returns the snippet to install on your site.
Meta: creates a Meta Pixel on the given ad account (POST /act_{id}/adspixels,
where name is the only input). Returns the created tag including its
install code. The pixel is owned by the Business Manager that owns the
ad account; a pixel created on a personal (non-BM) ad account ends up
with ownerBusinessId: null and can't be shared with other ad accounts.
Creating a Meta pixel does NOT install it. Install the returned code
snippet on the site, or send events server-side via
POST /v1/ads/conversions. The check installed is derived from
lastFiredTime.
OpenAI Ads: creates an OpenAI pixel AND provisions a Conversions API
key for it in the same call (adAccountId is required by this
endpoint but ignored: one API key maps to exactly one ad account, so
there's nothing to select). Returns 422 (FEATURE_NOT_AVAILABLE) if
the ad account isn't enabled for pixel management; contact your OpenAI
partner representative to enable it. There is no delete API for
OpenAI pixels. If the pixel is created but the Conversions API key
provisioning then fails, the pixel is left live on OpenAI (it cannot
be cleaned up) and the error message names the surviving pixel id and
warns against retrying, since a retry would create a second, orphaned
pixel.
NOT idempotent on either platform: each call creates a new pixel (and,
for OpenAI, a new Conversions API key plus, with defaultEventType, a
new conversion event setting). Do not retry blindly on
timeout. Meta (platform metaads) and OpenAI Ads (platform
openaiads); other platforms return 501.
LinkedIn (linkedinads): creates the ad account's Insight Tag (POST /rest/insightTags).
Idempotent: an ad account holds at most one Insight Tag, so when it already has one that
tag is returned and nothing is created. name is ignored (LinkedIn tags have no name) and
there is no API to delete an Insight Tag.
Pinterest (platform pinterestads): creates a Pinterest tag on the numeric ad account
adAccountId (POST /v5/ad_accounts/{id}/conversion_tags). Returns the tag with
Pinterest's code snippet. automaticMatchingFields switches on automatic enhanced match
for those fields. NOT idempotent and Pinterest has no dry-run and no delete for tags (DELETE
on conversion_tags/{id} answers 405), so never retry blindly: list first.
Google Ads (googleads): every Google Ads account has exactly one
Google tag (AW-...), so this is idempotent. adAccountId is the
10-digit customer id. When the account already tracks conversions
the existing tag is returned (201) and nothing is created. Otherwise
a first WEBPAGE conversion action named name (category DEFAULT) is
created, which is what switches Google's conversion tracking on, and
the tag is returned with it as its first event.
TikTok: POST /pixel/create/ on the advertiser in adAccountId (numeric). Names are at
most 40 characters with no emoji and must be unique; TikTok refuses a duplicate name
(400), which is its only retry guard. TikTok has no pixel delete API.
Pinterest's code snippet. NOT idempotent and Pinterest has no dry-run and no delete for
tags, so never retry blindly: list first.
X Ads (platform xads): creates the ad account's X Pixel (its UNIVERSAL website tag) with
first-party cookies on. adAccountId is the X ad account id; name is not stored (X
pixels have no name). X allows one pixel per ad account and cannot delete one, so an
account that already has a pixel answers 409 without writing anything.
Authorization
bearerAuth API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.
In: header
Path Parameters
Ads SocialAccount id (platform metaads or openaiads).
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.trackingtags.createTrackingTag({ path: { accountId: 'account_abc123', }, body: { adAccountId: 'adaccount_abc123', name: 'Example', },});console.log(data);{ "platform": "metaads", "tag": { "id": "string", "siteTagId": "string", "events": [ { "id": "string", "name": "string", "type": "string", "siteEvent": "page_view", "siteEventId": "string", "status": "string", "defaultValue": 0, "currency": "string", "clickWindowDays": 0, "viewWindowDays": 0, "urlContains": "string", "alwaysUseDefaultValue": true, "primary": true, "countingType": "one" } ], "name": "string", "platform": "metaads", "kind": "pixel", "status": "active", "code": "string", "lastFiredTime": 0, "isUnavailable": true, "installed": true, "creationTime": 0, "automaticMatchingFields": [ "em" ], "ownerBusinessId": "string", "ownerAdAccountId": "string", "autoTagging": true }}List tracking tags
Lists the pixels and other measurement tags an ads account can see, so you can inspect or install them. Returns the tracking tags (Meta Pixels, or OpenAI Ads pixels) the connected ads account can see. Pass `?adAccountId=act_...` (Meta only) to scope the list to a single ad account; omit it to list every pixel reachable by the token (the name is then suffixed with the ad account it was discovered on, for disambiguation). The list view omits `code`. Call `getTrackingTag` for the install snippet and full detail. Meta (platform `metaads`) and OpenAI Ads (platform `openaiads`); other platforms return 501. The `accountId` must be the ads SocialAccount created by the Ads add-on connect flow (Meta) or the OpenAI Ads connect flow, not a Facebook/Instagram posting account. Get your Meta `act_...` ids from `GET /v1/ads/accounts`; `adAccountId` is ignored for OpenAI Ads (one API key maps to exactly one ad account). LinkedIn (`linkedinads`): lists the Insight Tag of each ad account (LinkedIn allows one per ad account; a tag shared with several accounts appears once). `adAccountId` is the numeric ad account id or `urn:li:sponsoredAccount:{id}`; omit it to scan every active ad account the connection can see. The tag `id` IS the partner id the site embeds, so `siteTagId` equals `id`. LinkedIn tags have no name; it is shown as `Insight Tag {id}`. Pinterest (platform `pinterestads`): lists Pinterest tags (conversion tags). `adAccountId` is the numeric Pinterest ad account id (no prefix); omit it to walk every ad account the connection can read (an ad account the user has no Business Access role on is skipped). `id` equals `siteTagId`, the id the site loads with `pintrk('load', id)`. TikTok (platform `tiktokads`): TikTok Pixels across the connection's advertisers, or one advertiser with `?adAccountId=<numeric advertiser_id>`. `id` is the numeric `pixel_id`, `siteTagId` the alphanumeric `pixel_code` from Events Manager. Connections authorized before the Pixel Management permission (about 2026-05-28) answer 403 until reconnected. X Ads (platform `xads`): one X Pixel per X ad account, so `TrackingTag.id` is the ad account id (base36, e.g. `18ce54d4x5t`) and `siteTagId` is the pixel id the site embeds. Ad accounts without a pixel are left out. `adAccountId` scopes the list to one ad account.
Get a tracking tag
Shows one pixel or measurement tag in full, including its install snippet, when it last fired and its conversion events. Returns the full tag record including the base-code `code` snippet, `lastFiredTime`, `ownerBusinessId`, `isUnavailable`, etc. Meta only (platform `metaads`); other platforms return 501. OpenAI Ads (`openaiads`): `tagId` is the pixel's API id (`cds_...`) or its `pixel_id`. OpenAI documents no single-pixel read, so the tag is resolved from the pixel list; the response adds `code` (the official `oaiq` base code plus `page_viewed`) and `events` (the conversion event settings whose source is this pixel). `siteTagId` is the `pixel_id` the site and the Conversions API send; `id` is what event settings reference. LinkedIn (`linkedinads`): `code` is LinkedIn's base code, `lastFiredTime` is the most recent callback across the tag's domains (unix seconds, null when it never fired) and `events` lists the ad account's conversion rules. `siteEvent` and `siteEventId` are set only on rules a page can fire (event-specific Insight Tag rules: not Conversions API rules, no URL match rules). `adAccountId` picks which ad account's rules to read; it defaults to the account that created the tag. Pinterest (platform `pinterestads`): returns the tag with Pinterest's own `code` snippet and `lastFiredTime`. Without `adAccountId` Zernio finds the ad account that owns the tag (404 when no readable ad account holds it). TikTok: read from `/pixel/list/?pixel_id=`; `code` is TikTok's `pixel_script`, `events` the pixel events. `lastFiredTime` is not available on TikTok. Without `adAccountId` the connection's advertisers are searched. X Ads (platform `xads`): `tagId` is the X ad account id. Returns the pixel id as `siteTagId`, the X Pixel base code as `code`, and the conversion events the site can fire in `events` (each with `siteEventId` = `tw-<pixel>-<event>`, also the `event_id` of the X Conversions API). An ad account without a pixel answers 400.