zernio-sdk 0.0.1166 → 0.0.1167
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/docs/TrackingTagsApi.md +6 -6
- data/lib/zernio-sdk/api/tracking_tags_api.rb +12 -12
- data/lib/zernio-sdk/models/create_tracking_tag201_response.rb +2 -2
- data/lib/zernio-sdk/models/get_tracking_tag200_response.rb +2 -2
- data/lib/zernio-sdk/models/get_tracking_tag_stats200_response.rb +2 -2
- data/lib/zernio-sdk/models/get_tracking_tag_store_install200_response.rb +2 -2
- data/lib/zernio-sdk/models/install_tracking_tag_on_store200_response.rb +2 -2
- data/lib/zernio-sdk/models/list_tracking_tags200_response.rb +2 -2
- data/lib/zernio-sdk/models/remove_tracking_tag_from_store200_response.rb +2 -2
- data/lib/zernio-sdk/models/tracking_tag.rb +2 -2
- data/lib/zernio-sdk/version.rb +1 -1
- data/openapi.yaml +1 -1
- data/spec/api/tracking_tags_api_spec.rb +6 -6
- data/spec/models/create_tracking_tag201_response_spec.rb +1 -1
- data/spec/models/get_tracking_tag200_response_spec.rb +1 -1
- data/spec/models/get_tracking_tag_stats200_response_spec.rb +1 -1
- data/spec/models/get_tracking_tag_store_install200_response_spec.rb +1 -1
- data/spec/models/install_tracking_tag_on_store200_response_spec.rb +1 -1
- data/spec/models/list_tracking_tags200_response_spec.rb +1 -1
- data/spec/models/remove_tracking_tag_from_store200_response_spec.rb +1 -1
- data/spec/models/tracking_tag_spec.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 26f2786f756b96156fc4b53dfe3abbd1f4e10ff27ab4da009f44ae2cc90e2128
|
|
4
|
+
data.tar.gz: e7d800c8f3eb916a6ffb28aab6943446e792fc33fac5119a8ad095a7678ae98d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5cc48f2bfa065d082b5a19722a41fec69db6aa39d435efa722da3735f62ccbd7277975c8f1e4dd3b4129bf82d92d52c964578ff693dfc54cb7a801f88a95a541
|
|
7
|
+
data.tar.gz: 3499d44147ad1bff5b7682f3c032e35202cd83c26cca5ed12789b2a8adb3abe1fd19716decb342752a50baa4bb33d2e53a01a3fb576fe5684ba5551cd3ce78b6
|
data/docs/TrackingTagsApi.md
CHANGED
|
@@ -103,7 +103,7 @@ end
|
|
|
103
103
|
|
|
104
104
|
Create a tracking tag
|
|
105
105
|
|
|
106
|
-
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.
|
|
106
|
+
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. NOT idempotent and Pinterest has no dry-run and no delete for tags, so never retry blindly: list first.
|
|
107
107
|
|
|
108
108
|
### Examples
|
|
109
109
|
|
|
@@ -393,7 +393,7 @@ end
|
|
|
393
393
|
|
|
394
394
|
Get a tracking tag
|
|
395
395
|
|
|
396
|
-
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.
|
|
396
|
+
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).
|
|
397
397
|
|
|
398
398
|
### Examples
|
|
399
399
|
|
|
@@ -539,7 +539,7 @@ end
|
|
|
539
539
|
|
|
540
540
|
Get aggregated event stats
|
|
541
541
|
|
|
542
|
-
Returns event counts / health for the tag, where the platform exposes them. Meta: aggregated counts (`GET /{pixel_id}/stats`), rows passed through as-is; their shape depends on the `aggregation` requested. Platforms without a stats API answer 501. OpenAI Ads: the recent-events stream (`GET /conversions/events`), the latest (at most 50) Pixel SDK events received in the last 15 minutes, one row per event (`event_type`, `api_channel`, `event_timestamp_ms`, `received_at_ms`, ...). Conversions API events are not included. It is a fixed window: `startTime`/`endTime` answer 400. Use it to confirm an install fires; attributed totals come from ads analytics. Accounts not enabled for the stream answer 422 `feature_not_available`. LinkedIn (`linkedinads`): health rows rather than counts, since LinkedIn exposes no per- event fire counts: one row per site domain the tag has seen (`kind: domain`, `domainName`, `lastFiredTime`, `creationTime`, `blocked`) and one per conversion rule (`kind: conversion_rule`, `id`, `name`, `type`, `conversionMethod`, `status`, `lastFiredTime`). Times are unix seconds; `startTime`/`endTime` are ignored.
|
|
542
|
+
Returns event counts / health for the tag, where the platform exposes them. Meta: aggregated counts (`GET /{pixel_id}/stats`), rows passed through as-is; their shape depends on the `aggregation` requested. Platforms without a stats API answer 501. OpenAI Ads: the recent-events stream (`GET /conversions/events`), the latest (at most 50) Pixel SDK events received in the last 15 minutes, one row per event (`event_type`, `api_channel`, `event_timestamp_ms`, `received_at_ms`, ...). Conversions API events are not included. It is a fixed window: `startTime`/`endTime` answer 400. Use it to confirm an install fires; attributed totals come from ads analytics. Accounts not enabled for the stream answer 422 `feature_not_available`. LinkedIn (`linkedinads`): health rows rather than counts, since LinkedIn exposes no per- event fire counts: one row per site domain the tag has seen (`kind: domain`, `domainName`, `lastFiredTime`, `creationTime`, `blocked`) and one per conversion rule (`kind: conversion_rule`, `id`, `name`, `type`, `conversionMethod`, `status`, `lastFiredTime`). Times are unix seconds; `startTime`/`endTime` are ignored. Pinterest (platform `pinterestads`): rows typed by `type`: one `tag` row (`lastFiredTime`, `status`, `enhancedMatchStatus`), `event` rows for the conversion events Pinterest has seen on the tag (`source` is `page_visit` or `ocpm_eligible`, the latter meaning the event can be optimized for, with the neutral `siteEvent` where one maps), and `event_quality` rows with the ad account's Event Quality Score for tag events over the last `1d` and `14d` (ad-account level, not per tag; an account Pinterest cannot score yet carries `error` instead). Pinterest has no time-bounded counts, so `startTime`/`endTime` answer 400.
|
|
543
543
|
|
|
544
544
|
### Examples
|
|
545
545
|
|
|
@@ -697,7 +697,7 @@ end
|
|
|
697
697
|
|
|
698
698
|
Install on a Shopify store or WordPress site
|
|
699
699
|
|
|
700
|
-
Puts the Meta pixel on a connected Shopify store's storefront and checkout through Zernio's Shopify web pixel (a Shopify app pixel, no theme edits). The store then sends PageView, ViewContent, AddToCart, Search, InitiateCheckout, AddPaymentInfo and Purchase (with value, currency, content_ids and contents) to the pixel, each with an event id. Purchase uses `shopify_order_{orderId}` as its event id, so a Conversions API Purchase you send for the same order with that `eventId` is deduplicated by Meta. Idempotent: a store runs one Zernio web pixel holding one tag per platform, so calling it again updates the install, installing a different tag of the same platform replaces the previous one (reported in `replacedTagId`), and other platforms' tags are kept. Events respect the store's customer privacy settings (marketing consent). `accountId` is the Meta ads account that owns the pixel (`tagId`); `storeAccountId` is the Shopify account. OpenAI Ads on Shopify: each event is sent through OpenAI's documented image tag (`GET https://bzr.openai.com/v1/sdk/events`) as `page_viewed`, `contents_viewed`, `items_added`, `checkout_started`, `order_created`, and custom events `search` and `addpaymentinfo` (lowercase, so a Conversions API Search/AddPaymentInfo with the same event id deduplicates). Amounts are sent in the currency's minor unit. The landing page's `oppref` click id is kept in the `__oppref` cookie for 30 days and sent with every event. The image tag cannot carry the `__obref` browser id (OpenAI rejects the parameter), and the search text is never sent. On WordPress the widget holds the official `oaiq` base code and a `page_viewed` call. Stores connected before pixel support must re-approve the Zernio app: the call then answers 409 `reconnect_required` with `details.authUrl` to send the merchant to (the Shopify account id stays the same). Platforms without an install path return 501. **WordPress** (`storeAccountId` is a connected WordPress.com or self-hosted site): Zernio adds a Custom HTML widget with the Meta pixel base code (fbevents.js, `init`, `PageView`) to a widget area of the active theme (a footer area when there is one, else the first active area; pass `sidebarId` to choose), then reads the widget back to confirm WordPress kept the `<script>` tag. The widget carries a Zernio marker, so the call is idempotent per pixel: repeating it updates or moves the same widget, and pixel code the site owner pasted by hand is never touched. Several pixels can run side by side (one widget each). When the site cannot run the pixel, nothing is left behind and the call answers 422 `tracking_tag_install_blocked` with `details.reason`: - `insufficient_permissions`: the connected user lacks `edit_theme_options` (needs Administrator). - `scripts_stripped`: WordPress removed the script (the user lacks `unfiltered_html`, e.g. a multisite admin who is not a Super Admin, or `DISALLOW_UNFILTERED_HTML` is set). - `wordpress_com_plan`: a WordPress.com plan that strips scripts (plans without plugins). - `no_widget_areas`: the theme has no widget areas (block themes such as Twenty Twenty-Five). - `widgets_api_unavailable`: no widgets REST API (WordPress older than 5.8, or disabled). The `error` message names the manual alternative (Meta's official WordPress plugin). With `verifyHomepage` (default true) the homepage is fetched afterwards and `homepageCheck` says whether the pixel is visible; `not_found` can be a stale page cache, the widget read-back is authoritative. **LinkedIn** (`linkedinads`): Shopify sends every page view to the Insight Tag, plus each store event that has an enabled event-specific Insight Tag conversion rule of the matching type (view_content = VIEW_CONTENT, add_to_cart = ADD_TO_CART, search = SEARCH, initiate_checkout = START_CHECKOUT, add_payment_info = ADD_BILLING_INFO, purchase = PURCHASE). Each conversion carries the event id; Purchase uses `shopify_order_{orderId}`, so a Conversions API event sent to a separate CONVERSIONS_API rule with that `eventId` is deduplicated by LinkedIn. Conversions API rules cannot be fired from a page, and no rule is created for you. The `li_fat_id` click id is read from the landing URL and kept in a first-party cookie for 30 days. WordPress gets LinkedIn's base code, which records page views.
|
|
700
|
+
Puts the Meta pixel on a connected Shopify store's storefront and checkout through Zernio's Shopify web pixel (a Shopify app pixel, no theme edits). The store then sends PageView, ViewContent, AddToCart, Search, InitiateCheckout, AddPaymentInfo and Purchase (with value, currency, content_ids and contents) to the pixel, each with an event id. Purchase uses `shopify_order_{orderId}` as its event id, so a Conversions API Purchase you send for the same order with that `eventId` is deduplicated by Meta. Idempotent: a store runs one Zernio web pixel holding one tag per platform, so calling it again updates the install, installing a different tag of the same platform replaces the previous one (reported in `replacedTagId`), and other platforms' tags are kept. Events respect the store's customer privacy settings (marketing consent). `accountId` is the Meta ads account that owns the pixel (`tagId`); `storeAccountId` is the Shopify account. OpenAI Ads on Shopify: each event is sent through OpenAI's documented image tag (`GET https://bzr.openai.com/v1/sdk/events`) as `page_viewed`, `contents_viewed`, `items_added`, `checkout_started`, `order_created`, and custom events `search` and `addpaymentinfo` (lowercase, so a Conversions API Search/AddPaymentInfo with the same event id deduplicates). Amounts are sent in the currency's minor unit. The landing page's `oppref` click id is kept in the `__oppref` cookie for 30 days and sent with every event. The image tag cannot carry the `__obref` browser id (OpenAI rejects the parameter), and the search text is never sent. On WordPress the widget holds the official `oaiq` base code and a `page_viewed` call. Stores connected before pixel support must re-approve the Zernio app: the call then answers 409 `reconnect_required` with `details.authUrl` to send the merchant to (the Shopify account id stays the same). Platforms without an install path return 501. **WordPress** (`storeAccountId` is a connected WordPress.com or self-hosted site): Zernio adds a Custom HTML widget with the Meta pixel base code (fbevents.js, `init`, `PageView`) to a widget area of the active theme (a footer area when there is one, else the first active area; pass `sidebarId` to choose), then reads the widget back to confirm WordPress kept the `<script>` tag. The widget carries a Zernio marker, so the call is idempotent per pixel: repeating it updates or moves the same widget, and pixel code the site owner pasted by hand is never touched. Several pixels can run side by side (one widget each). When the site cannot run the pixel, nothing is left behind and the call answers 422 `tracking_tag_install_blocked` with `details.reason`: - `insufficient_permissions`: the connected user lacks `edit_theme_options` (needs Administrator). - `scripts_stripped`: WordPress removed the script (the user lacks `unfiltered_html`, e.g. a multisite admin who is not a Super Admin, or `DISALLOW_UNFILTERED_HTML` is set). - `wordpress_com_plan`: a WordPress.com plan that strips scripts (plans without plugins). - `no_widget_areas`: the theme has no widget areas (block themes such as Twenty Twenty-Five). - `widgets_api_unavailable`: no widgets REST API (WordPress older than 5.8, or disabled). The `error` message names the manual alternative (Meta's official WordPress plugin). With `verifyHomepage` (default true) the homepage is fetched afterwards and `homepageCheck` says whether the pixel is visible; `not_found` can be a stale page cache, the widget read-back is authoritative. **LinkedIn** (`linkedinads`): Shopify sends every page view to the Insight Tag, plus each store event that has an enabled event-specific Insight Tag conversion rule of the matching type (view_content = VIEW_CONTENT, add_to_cart = ADD_TO_CART, search = SEARCH, initiate_checkout = START_CHECKOUT, add_payment_info = ADD_BILLING_INFO, purchase = PURCHASE). Each conversion carries the event id; Purchase uses `shopify_order_{orderId}`, so a Conversions API event sent to a separate CONVERSIONS_API rule with that `eventId` is deduplicated by LinkedIn. Conversions API rules cannot be fired from a page, and no rule is created for you. The `li_fat_id` click id is read from the landing URL and kept in a first-party cookie for 30 days. WordPress gets LinkedIn's base code, which records page views. **Pinterest (platform `pinterestads`)**: Shopify sends `pagevisit`, `viewcontent`, `addtocart`, `search`, `initiatecheckout`, `addpaymentinfo` and `checkout` to the tag, each with `event_id` (Purchase: `shopify_order_{orderId}`, for dedup with the Pinterest Conversions API), value, currency, order quantity and line items, plus the `epik` click id kept in the `_epik` cookie. WordPress gets Pinterest's base code (core.js, `load`, `page`) with a `pagevisit` event; the manual fallback is the official Pinterest for WooCommerce plugin (WooCommerce stores).
|
|
701
701
|
|
|
702
702
|
### Examples
|
|
703
703
|
|
|
@@ -916,7 +916,7 @@ end
|
|
|
916
916
|
|
|
917
917
|
List tracking tags
|
|
918
918
|
|
|
919
|
-
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}`.
|
|
919
|
+
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)`.
|
|
920
920
|
|
|
921
921
|
### Examples
|
|
922
922
|
|
|
@@ -1211,7 +1211,7 @@ end
|
|
|
1211
1211
|
|
|
1212
1212
|
Update a tracking tag
|
|
1213
1213
|
|
|
1214
|
-
Partial-update a pixel. Whitelisted fields: `name` (rename), `enableAutomaticMatching`, `automaticMatchingFields`, `firstPartyCookieStatus`, `dataUseSetting`. At least one is required. Returns the re-fetched canonical tag. Meta only (platform `metaads`); other platforms return 501. OpenAI Ads answers 501: its API has no pixel update or delete route (`POST`/`PATCH`/`PUT`/`DELETE /v1/conversions/pixels/{id}` answer 405 \"Invalid method\"); rename a pixel in OpenAI Ads Manager. There is no DELETE: Meta has no API to delete a pixel. To stop using one, unshare it from your ad accounts (`DELETE .../tracking-tags/{tagId}/shared-accounts`) or disable it in Events Manager. LinkedIn (`linkedinads`): only `firstPartyCookieStatus` (`first_party_cookie_enabled` or `first_party_cookie_disabled`), which sets the tag's first-party tracking. It applies to every ad account using the tag. `empty` answers 400: LinkedIn has no unset state.
|
|
1214
|
+
Partial-update a pixel. Whitelisted fields: `name` (rename), `enableAutomaticMatching`, `automaticMatchingFields`, `firstPartyCookieStatus`, `dataUseSetting`. At least one is required. Returns the re-fetched canonical tag. Meta only (platform `metaads`); other platforms return 501. OpenAI Ads answers 501: its API has no pixel update or delete route (`POST`/`PATCH`/`PUT`/`DELETE /v1/conversions/pixels/{id}` answer 405 \"Invalid method\"); rename a pixel in OpenAI Ads Manager. There is no DELETE: Meta has no API to delete a pixel. To stop using one, unshare it from your ad accounts (`DELETE .../tracking-tags/{tagId}/shared-accounts`) or disable it in Events Manager. LinkedIn (`linkedinads`): only `firstPartyCookieStatus` (`first_party_cookie_enabled` or `first_party_cookie_disabled`), which sets the tag's first-party tracking. It applies to every ad account using the tag. `empty` answers 400: LinkedIn has no unset state. Pinterest (platform `pinterestads`): 501. Pinterest API v5 only creates, lists and reads tags (no update endpoint); rename a tag or change its enhanced match settings in Pinterest Ads Manager.
|
|
1215
1215
|
|
|
1216
1216
|
### Examples
|
|
1217
1217
|
|
|
@@ -100,7 +100,7 @@ module Zernio
|
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
# Create a tracking tag
|
|
103
|
-
# 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.
|
|
103
|
+
# 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. NOT idempotent and Pinterest has no dry-run and no delete for tags, so never retry blindly: list first.
|
|
104
104
|
# @param account_id [String] Ads SocialAccount id (platform `metaads` or `openaiads`).
|
|
105
105
|
# @param create_tracking_tag_request [CreateTrackingTagRequest]
|
|
106
106
|
# @param [Hash] opts the optional parameters
|
|
@@ -111,7 +111,7 @@ module Zernio
|
|
|
111
111
|
end
|
|
112
112
|
|
|
113
113
|
# Create a tracking tag
|
|
114
|
-
# 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.
|
|
114
|
+
# 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. NOT idempotent and Pinterest has no dry-run and no delete for tags, so never retry blindly: list first.
|
|
115
115
|
# @param account_id [String] Ads SocialAccount id (platform `metaads` or `openaiads`).
|
|
116
116
|
# @param create_tracking_tag_request [CreateTrackingTagRequest]
|
|
117
117
|
# @param [Hash] opts the optional parameters
|
|
@@ -395,7 +395,7 @@ module Zernio
|
|
|
395
395
|
end
|
|
396
396
|
|
|
397
397
|
# Get a tracking tag
|
|
398
|
-
# 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.
|
|
398
|
+
# 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).
|
|
399
399
|
# @param account_id [String]
|
|
400
400
|
# @param tag_id [String] Tag id (`TrackingTag.id`).
|
|
401
401
|
# @param [Hash] opts the optional parameters
|
|
@@ -407,7 +407,7 @@ module Zernio
|
|
|
407
407
|
end
|
|
408
408
|
|
|
409
409
|
# Get a tracking tag
|
|
410
|
-
# 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.
|
|
410
|
+
# 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).
|
|
411
411
|
# @param account_id [String]
|
|
412
412
|
# @param tag_id [String] Tag id (`TrackingTag.id`).
|
|
413
413
|
# @param [Hash] opts the optional parameters
|
|
@@ -536,7 +536,7 @@ module Zernio
|
|
|
536
536
|
end
|
|
537
537
|
|
|
538
538
|
# Get aggregated event stats
|
|
539
|
-
# Returns event counts / health for the tag, where the platform exposes them. Meta: aggregated counts (`GET /{pixel_id}/stats`), rows passed through as-is; their shape depends on the `aggregation` requested. Platforms without a stats API answer 501. OpenAI Ads: the recent-events stream (`GET /conversions/events`), the latest (at most 50) Pixel SDK events received in the last 15 minutes, one row per event (`event_type`, `api_channel`, `event_timestamp_ms`, `received_at_ms`, ...). Conversions API events are not included. It is a fixed window: `startTime`/`endTime` answer 400. Use it to confirm an install fires; attributed totals come from ads analytics. Accounts not enabled for the stream answer 422 `feature_not_available`. LinkedIn (`linkedinads`): health rows rather than counts, since LinkedIn exposes no per- event fire counts: one row per site domain the tag has seen (`kind: domain`, `domainName`, `lastFiredTime`, `creationTime`, `blocked`) and one per conversion rule (`kind: conversion_rule`, `id`, `name`, `type`, `conversionMethod`, `status`, `lastFiredTime`). Times are unix seconds; `startTime`/`endTime` are ignored.
|
|
539
|
+
# Returns event counts / health for the tag, where the platform exposes them. Meta: aggregated counts (`GET /{pixel_id}/stats`), rows passed through as-is; their shape depends on the `aggregation` requested. Platforms without a stats API answer 501. OpenAI Ads: the recent-events stream (`GET /conversions/events`), the latest (at most 50) Pixel SDK events received in the last 15 minutes, one row per event (`event_type`, `api_channel`, `event_timestamp_ms`, `received_at_ms`, ...). Conversions API events are not included. It is a fixed window: `startTime`/`endTime` answer 400. Use it to confirm an install fires; attributed totals come from ads analytics. Accounts not enabled for the stream answer 422 `feature_not_available`. LinkedIn (`linkedinads`): health rows rather than counts, since LinkedIn exposes no per- event fire counts: one row per site domain the tag has seen (`kind: domain`, `domainName`, `lastFiredTime`, `creationTime`, `blocked`) and one per conversion rule (`kind: conversion_rule`, `id`, `name`, `type`, `conversionMethod`, `status`, `lastFiredTime`). Times are unix seconds; `startTime`/`endTime` are ignored. Pinterest (platform `pinterestads`): rows typed by `type`: one `tag` row (`lastFiredTime`, `status`, `enhancedMatchStatus`), `event` rows for the conversion events Pinterest has seen on the tag (`source` is `page_visit` or `ocpm_eligible`, the latter meaning the event can be optimized for, with the neutral `siteEvent` where one maps), and `event_quality` rows with the ad account's Event Quality Score for tag events over the last `1d` and `14d` (ad-account level, not per tag; an account Pinterest cannot score yet carries `error` instead). Pinterest has no time-bounded counts, so `startTime`/`endTime` answer 400.
|
|
540
540
|
# @param account_id [String]
|
|
541
541
|
# @param tag_id [String] Tag id (`TrackingTag.id`).
|
|
542
542
|
# @param [Hash] opts the optional parameters
|
|
@@ -551,7 +551,7 @@ module Zernio
|
|
|
551
551
|
end
|
|
552
552
|
|
|
553
553
|
# Get aggregated event stats
|
|
554
|
-
# Returns event counts / health for the tag, where the platform exposes them. Meta: aggregated counts (`GET /{pixel_id}/stats`), rows passed through as-is; their shape depends on the `aggregation` requested. Platforms without a stats API answer 501. OpenAI Ads: the recent-events stream (`GET /conversions/events`), the latest (at most 50) Pixel SDK events received in the last 15 minutes, one row per event (`event_type`, `api_channel`, `event_timestamp_ms`, `received_at_ms`, ...). Conversions API events are not included. It is a fixed window: `startTime`/`endTime` answer 400. Use it to confirm an install fires; attributed totals come from ads analytics. Accounts not enabled for the stream answer 422 `feature_not_available`. LinkedIn (`linkedinads`): health rows rather than counts, since LinkedIn exposes no per- event fire counts: one row per site domain the tag has seen (`kind: domain`, `domainName`, `lastFiredTime`, `creationTime`, `blocked`) and one per conversion rule (`kind: conversion_rule`, `id`, `name`, `type`, `conversionMethod`, `status`, `lastFiredTime`). Times are unix seconds; `startTime`/`endTime` are ignored.
|
|
554
|
+
# Returns event counts / health for the tag, where the platform exposes them. Meta: aggregated counts (`GET /{pixel_id}/stats`), rows passed through as-is; their shape depends on the `aggregation` requested. Platforms without a stats API answer 501. OpenAI Ads: the recent-events stream (`GET /conversions/events`), the latest (at most 50) Pixel SDK events received in the last 15 minutes, one row per event (`event_type`, `api_channel`, `event_timestamp_ms`, `received_at_ms`, ...). Conversions API events are not included. It is a fixed window: `startTime`/`endTime` answer 400. Use it to confirm an install fires; attributed totals come from ads analytics. Accounts not enabled for the stream answer 422 `feature_not_available`. LinkedIn (`linkedinads`): health rows rather than counts, since LinkedIn exposes no per- event fire counts: one row per site domain the tag has seen (`kind: domain`, `domainName`, `lastFiredTime`, `creationTime`, `blocked`) and one per conversion rule (`kind: conversion_rule`, `id`, `name`, `type`, `conversionMethod`, `status`, `lastFiredTime`). Times are unix seconds; `startTime`/`endTime` are ignored. Pinterest (platform `pinterestads`): rows typed by `type`: one `tag` row (`lastFiredTime`, `status`, `enhancedMatchStatus`), `event` rows for the conversion events Pinterest has seen on the tag (`source` is `page_visit` or `ocpm_eligible`, the latter meaning the event can be optimized for, with the neutral `siteEvent` where one maps), and `event_quality` rows with the ad account's Event Quality Score for tag events over the last `1d` and `14d` (ad-account level, not per tag; an account Pinterest cannot score yet carries `error` instead). Pinterest has no time-bounded counts, so `startTime`/`endTime` answer 400.
|
|
555
555
|
# @param account_id [String]
|
|
556
556
|
# @param tag_id [String] Tag id (`TrackingTag.id`).
|
|
557
557
|
# @param [Hash] opts the optional parameters
|
|
@@ -700,7 +700,7 @@ module Zernio
|
|
|
700
700
|
end
|
|
701
701
|
|
|
702
702
|
# Install on a Shopify store or WordPress site
|
|
703
|
-
# Puts the Meta pixel on a connected Shopify store's storefront and checkout through Zernio's Shopify web pixel (a Shopify app pixel, no theme edits). The store then sends PageView, ViewContent, AddToCart, Search, InitiateCheckout, AddPaymentInfo and Purchase (with value, currency, content_ids and contents) to the pixel, each with an event id. Purchase uses `shopify_order_{orderId}` as its event id, so a Conversions API Purchase you send for the same order with that `eventId` is deduplicated by Meta. Idempotent: a store runs one Zernio web pixel holding one tag per platform, so calling it again updates the install, installing a different tag of the same platform replaces the previous one (reported in `replacedTagId`), and other platforms' tags are kept. Events respect the store's customer privacy settings (marketing consent). `accountId` is the Meta ads account that owns the pixel (`tagId`); `storeAccountId` is the Shopify account. OpenAI Ads on Shopify: each event is sent through OpenAI's documented image tag (`GET https://bzr.openai.com/v1/sdk/events`) as `page_viewed`, `contents_viewed`, `items_added`, `checkout_started`, `order_created`, and custom events `search` and `addpaymentinfo` (lowercase, so a Conversions API Search/AddPaymentInfo with the same event id deduplicates). Amounts are sent in the currency's minor unit. The landing page's `oppref` click id is kept in the `__oppref` cookie for 30 days and sent with every event. The image tag cannot carry the `__obref` browser id (OpenAI rejects the parameter), and the search text is never sent. On WordPress the widget holds the official `oaiq` base code and a `page_viewed` call. Stores connected before pixel support must re-approve the Zernio app: the call then answers 409 `reconnect_required` with `details.authUrl` to send the merchant to (the Shopify account id stays the same). Platforms without an install path return 501. **WordPress** (`storeAccountId` is a connected WordPress.com or self-hosted site): Zernio adds a Custom HTML widget with the Meta pixel base code (fbevents.js, `init`, `PageView`) to a widget area of the active theme (a footer area when there is one, else the first active area; pass `sidebarId` to choose), then reads the widget back to confirm WordPress kept the `<script>` tag. The widget carries a Zernio marker, so the call is idempotent per pixel: repeating it updates or moves the same widget, and pixel code the site owner pasted by hand is never touched. Several pixels can run side by side (one widget each). When the site cannot run the pixel, nothing is left behind and the call answers 422 `tracking_tag_install_blocked` with `details.reason`: - `insufficient_permissions`: the connected user lacks `edit_theme_options` (needs Administrator). - `scripts_stripped`: WordPress removed the script (the user lacks `unfiltered_html`, e.g. a multisite admin who is not a Super Admin, or `DISALLOW_UNFILTERED_HTML` is set). - `wordpress_com_plan`: a WordPress.com plan that strips scripts (plans without plugins). - `no_widget_areas`: the theme has no widget areas (block themes such as Twenty Twenty-Five). - `widgets_api_unavailable`: no widgets REST API (WordPress older than 5.8, or disabled). The `error` message names the manual alternative (Meta's official WordPress plugin). With `verifyHomepage` (default true) the homepage is fetched afterwards and `homepageCheck` says whether the pixel is visible; `not_found` can be a stale page cache, the widget read-back is authoritative. **LinkedIn** (`linkedinads`): Shopify sends every page view to the Insight Tag, plus each store event that has an enabled event-specific Insight Tag conversion rule of the matching type (view_content = VIEW_CONTENT, add_to_cart = ADD_TO_CART, search = SEARCH, initiate_checkout = START_CHECKOUT, add_payment_info = ADD_BILLING_INFO, purchase = PURCHASE). Each conversion carries the event id; Purchase uses `shopify_order_{orderId}`, so a Conversions API event sent to a separate CONVERSIONS_API rule with that `eventId` is deduplicated by LinkedIn. Conversions API rules cannot be fired from a page, and no rule is created for you. The `li_fat_id` click id is read from the landing URL and kept in a first-party cookie for 30 days. WordPress gets LinkedIn's base code, which records page views.
|
|
703
|
+
# Puts the Meta pixel on a connected Shopify store's storefront and checkout through Zernio's Shopify web pixel (a Shopify app pixel, no theme edits). The store then sends PageView, ViewContent, AddToCart, Search, InitiateCheckout, AddPaymentInfo and Purchase (with value, currency, content_ids and contents) to the pixel, each with an event id. Purchase uses `shopify_order_{orderId}` as its event id, so a Conversions API Purchase you send for the same order with that `eventId` is deduplicated by Meta. Idempotent: a store runs one Zernio web pixel holding one tag per platform, so calling it again updates the install, installing a different tag of the same platform replaces the previous one (reported in `replacedTagId`), and other platforms' tags are kept. Events respect the store's customer privacy settings (marketing consent). `accountId` is the Meta ads account that owns the pixel (`tagId`); `storeAccountId` is the Shopify account. OpenAI Ads on Shopify: each event is sent through OpenAI's documented image tag (`GET https://bzr.openai.com/v1/sdk/events`) as `page_viewed`, `contents_viewed`, `items_added`, `checkout_started`, `order_created`, and custom events `search` and `addpaymentinfo` (lowercase, so a Conversions API Search/AddPaymentInfo with the same event id deduplicates). Amounts are sent in the currency's minor unit. The landing page's `oppref` click id is kept in the `__oppref` cookie for 30 days and sent with every event. The image tag cannot carry the `__obref` browser id (OpenAI rejects the parameter), and the search text is never sent. On WordPress the widget holds the official `oaiq` base code and a `page_viewed` call. Stores connected before pixel support must re-approve the Zernio app: the call then answers 409 `reconnect_required` with `details.authUrl` to send the merchant to (the Shopify account id stays the same). Platforms without an install path return 501. **WordPress** (`storeAccountId` is a connected WordPress.com or self-hosted site): Zernio adds a Custom HTML widget with the Meta pixel base code (fbevents.js, `init`, `PageView`) to a widget area of the active theme (a footer area when there is one, else the first active area; pass `sidebarId` to choose), then reads the widget back to confirm WordPress kept the `<script>` tag. The widget carries a Zernio marker, so the call is idempotent per pixel: repeating it updates or moves the same widget, and pixel code the site owner pasted by hand is never touched. Several pixels can run side by side (one widget each). When the site cannot run the pixel, nothing is left behind and the call answers 422 `tracking_tag_install_blocked` with `details.reason`: - `insufficient_permissions`: the connected user lacks `edit_theme_options` (needs Administrator). - `scripts_stripped`: WordPress removed the script (the user lacks `unfiltered_html`, e.g. a multisite admin who is not a Super Admin, or `DISALLOW_UNFILTERED_HTML` is set). - `wordpress_com_plan`: a WordPress.com plan that strips scripts (plans without plugins). - `no_widget_areas`: the theme has no widget areas (block themes such as Twenty Twenty-Five). - `widgets_api_unavailable`: no widgets REST API (WordPress older than 5.8, or disabled). The `error` message names the manual alternative (Meta's official WordPress plugin). With `verifyHomepage` (default true) the homepage is fetched afterwards and `homepageCheck` says whether the pixel is visible; `not_found` can be a stale page cache, the widget read-back is authoritative. **LinkedIn** (`linkedinads`): Shopify sends every page view to the Insight Tag, plus each store event that has an enabled event-specific Insight Tag conversion rule of the matching type (view_content = VIEW_CONTENT, add_to_cart = ADD_TO_CART, search = SEARCH, initiate_checkout = START_CHECKOUT, add_payment_info = ADD_BILLING_INFO, purchase = PURCHASE). Each conversion carries the event id; Purchase uses `shopify_order_{orderId}`, so a Conversions API event sent to a separate CONVERSIONS_API rule with that `eventId` is deduplicated by LinkedIn. Conversions API rules cannot be fired from a page, and no rule is created for you. The `li_fat_id` click id is read from the landing URL and kept in a first-party cookie for 30 days. WordPress gets LinkedIn's base code, which records page views. **Pinterest (platform `pinterestads`)**: Shopify sends `pagevisit`, `viewcontent`, `addtocart`, `search`, `initiatecheckout`, `addpaymentinfo` and `checkout` to the tag, each with `event_id` (Purchase: `shopify_order_{orderId}`, for dedup with the Pinterest Conversions API), value, currency, order quantity and line items, plus the `epik` click id kept in the `_epik` cookie. WordPress gets Pinterest's base code (core.js, `load`, `page`) with a `pagevisit` event; the manual fallback is the official Pinterest for WooCommerce plugin (WooCommerce stores).
|
|
704
704
|
# @param account_id [String]
|
|
705
705
|
# @param tag_id [String] Tag id (`TrackingTag.id`).
|
|
706
706
|
# @param install_tracking_tag_on_store_request [InstallTrackingTagOnStoreRequest]
|
|
@@ -712,7 +712,7 @@ module Zernio
|
|
|
712
712
|
end
|
|
713
713
|
|
|
714
714
|
# Install on a Shopify store or WordPress site
|
|
715
|
-
# Puts the Meta pixel on a connected Shopify store's storefront and checkout through Zernio's Shopify web pixel (a Shopify app pixel, no theme edits). The store then sends PageView, ViewContent, AddToCart, Search, InitiateCheckout, AddPaymentInfo and Purchase (with value, currency, content_ids and contents) to the pixel, each with an event id. Purchase uses `shopify_order_{orderId}` as its event id, so a Conversions API Purchase you send for the same order with that `eventId` is deduplicated by Meta. Idempotent: a store runs one Zernio web pixel holding one tag per platform, so calling it again updates the install, installing a different tag of the same platform replaces the previous one (reported in `replacedTagId`), and other platforms' tags are kept. Events respect the store's customer privacy settings (marketing consent). `accountId` is the Meta ads account that owns the pixel (`tagId`); `storeAccountId` is the Shopify account. OpenAI Ads on Shopify: each event is sent through OpenAI's documented image tag (`GET https://bzr.openai.com/v1/sdk/events`) as `page_viewed`, `contents_viewed`, `items_added`, `checkout_started`, `order_created`, and custom events `search` and `addpaymentinfo` (lowercase, so a Conversions API Search/AddPaymentInfo with the same event id deduplicates). Amounts are sent in the currency's minor unit. The landing page's `oppref` click id is kept in the `__oppref` cookie for 30 days and sent with every event. The image tag cannot carry the `__obref` browser id (OpenAI rejects the parameter), and the search text is never sent. On WordPress the widget holds the official `oaiq` base code and a `page_viewed` call. Stores connected before pixel support must re-approve the Zernio app: the call then answers 409 `reconnect_required` with `details.authUrl` to send the merchant to (the Shopify account id stays the same). Platforms without an install path return 501. **WordPress** (`storeAccountId` is a connected WordPress.com or self-hosted site): Zernio adds a Custom HTML widget with the Meta pixel base code (fbevents.js, `init`, `PageView`) to a widget area of the active theme (a footer area when there is one, else the first active area; pass `sidebarId` to choose), then reads the widget back to confirm WordPress kept the `<script>` tag. The widget carries a Zernio marker, so the call is idempotent per pixel: repeating it updates or moves the same widget, and pixel code the site owner pasted by hand is never touched. Several pixels can run side by side (one widget each). When the site cannot run the pixel, nothing is left behind and the call answers 422 `tracking_tag_install_blocked` with `details.reason`: - `insufficient_permissions`: the connected user lacks `edit_theme_options` (needs Administrator). - `scripts_stripped`: WordPress removed the script (the user lacks `unfiltered_html`, e.g. a multisite admin who is not a Super Admin, or `DISALLOW_UNFILTERED_HTML` is set). - `wordpress_com_plan`: a WordPress.com plan that strips scripts (plans without plugins). - `no_widget_areas`: the theme has no widget areas (block themes such as Twenty Twenty-Five). - `widgets_api_unavailable`: no widgets REST API (WordPress older than 5.8, or disabled). The `error` message names the manual alternative (Meta's official WordPress plugin). With `verifyHomepage` (default true) the homepage is fetched afterwards and `homepageCheck` says whether the pixel is visible; `not_found` can be a stale page cache, the widget read-back is authoritative. **LinkedIn** (`linkedinads`): Shopify sends every page view to the Insight Tag, plus each store event that has an enabled event-specific Insight Tag conversion rule of the matching type (view_content = VIEW_CONTENT, add_to_cart = ADD_TO_CART, search = SEARCH, initiate_checkout = START_CHECKOUT, add_payment_info = ADD_BILLING_INFO, purchase = PURCHASE). Each conversion carries the event id; Purchase uses `shopify_order_{orderId}`, so a Conversions API event sent to a separate CONVERSIONS_API rule with that `eventId` is deduplicated by LinkedIn. Conversions API rules cannot be fired from a page, and no rule is created for you. The `li_fat_id` click id is read from the landing URL and kept in a first-party cookie for 30 days. WordPress gets LinkedIn's base code, which records page views.
|
|
715
|
+
# Puts the Meta pixel on a connected Shopify store's storefront and checkout through Zernio's Shopify web pixel (a Shopify app pixel, no theme edits). The store then sends PageView, ViewContent, AddToCart, Search, InitiateCheckout, AddPaymentInfo and Purchase (with value, currency, content_ids and contents) to the pixel, each with an event id. Purchase uses `shopify_order_{orderId}` as its event id, so a Conversions API Purchase you send for the same order with that `eventId` is deduplicated by Meta. Idempotent: a store runs one Zernio web pixel holding one tag per platform, so calling it again updates the install, installing a different tag of the same platform replaces the previous one (reported in `replacedTagId`), and other platforms' tags are kept. Events respect the store's customer privacy settings (marketing consent). `accountId` is the Meta ads account that owns the pixel (`tagId`); `storeAccountId` is the Shopify account. OpenAI Ads on Shopify: each event is sent through OpenAI's documented image tag (`GET https://bzr.openai.com/v1/sdk/events`) as `page_viewed`, `contents_viewed`, `items_added`, `checkout_started`, `order_created`, and custom events `search` and `addpaymentinfo` (lowercase, so a Conversions API Search/AddPaymentInfo with the same event id deduplicates). Amounts are sent in the currency's minor unit. The landing page's `oppref` click id is kept in the `__oppref` cookie for 30 days and sent with every event. The image tag cannot carry the `__obref` browser id (OpenAI rejects the parameter), and the search text is never sent. On WordPress the widget holds the official `oaiq` base code and a `page_viewed` call. Stores connected before pixel support must re-approve the Zernio app: the call then answers 409 `reconnect_required` with `details.authUrl` to send the merchant to (the Shopify account id stays the same). Platforms without an install path return 501. **WordPress** (`storeAccountId` is a connected WordPress.com or self-hosted site): Zernio adds a Custom HTML widget with the Meta pixel base code (fbevents.js, `init`, `PageView`) to a widget area of the active theme (a footer area when there is one, else the first active area; pass `sidebarId` to choose), then reads the widget back to confirm WordPress kept the `<script>` tag. The widget carries a Zernio marker, so the call is idempotent per pixel: repeating it updates or moves the same widget, and pixel code the site owner pasted by hand is never touched. Several pixels can run side by side (one widget each). When the site cannot run the pixel, nothing is left behind and the call answers 422 `tracking_tag_install_blocked` with `details.reason`: - `insufficient_permissions`: the connected user lacks `edit_theme_options` (needs Administrator). - `scripts_stripped`: WordPress removed the script (the user lacks `unfiltered_html`, e.g. a multisite admin who is not a Super Admin, or `DISALLOW_UNFILTERED_HTML` is set). - `wordpress_com_plan`: a WordPress.com plan that strips scripts (plans without plugins). - `no_widget_areas`: the theme has no widget areas (block themes such as Twenty Twenty-Five). - `widgets_api_unavailable`: no widgets REST API (WordPress older than 5.8, or disabled). The `error` message names the manual alternative (Meta's official WordPress plugin). With `verifyHomepage` (default true) the homepage is fetched afterwards and `homepageCheck` says whether the pixel is visible; `not_found` can be a stale page cache, the widget read-back is authoritative. **LinkedIn** (`linkedinads`): Shopify sends every page view to the Insight Tag, plus each store event that has an enabled event-specific Insight Tag conversion rule of the matching type (view_content = VIEW_CONTENT, add_to_cart = ADD_TO_CART, search = SEARCH, initiate_checkout = START_CHECKOUT, add_payment_info = ADD_BILLING_INFO, purchase = PURCHASE). Each conversion carries the event id; Purchase uses `shopify_order_{orderId}`, so a Conversions API event sent to a separate CONVERSIONS_API rule with that `eventId` is deduplicated by LinkedIn. Conversions API rules cannot be fired from a page, and no rule is created for you. The `li_fat_id` click id is read from the landing URL and kept in a first-party cookie for 30 days. WordPress gets LinkedIn's base code, which records page views. **Pinterest (platform `pinterestads`)**: Shopify sends `pagevisit`, `viewcontent`, `addtocart`, `search`, `initiatecheckout`, `addpaymentinfo` and `checkout` to the tag, each with `event_id` (Purchase: `shopify_order_{orderId}`, for dedup with the Pinterest Conversions API), value, currency, order quantity and line items, plus the `epik` click id kept in the `_epik` cookie. WordPress gets Pinterest's base code (core.js, `load`, `page`) with a `pagevisit` event; the manual fallback is the official Pinterest for WooCommerce plugin (WooCommerce stores).
|
|
716
716
|
# @param account_id [String]
|
|
717
717
|
# @param tag_id [String] Tag id (`TrackingTag.id`).
|
|
718
718
|
# @param install_tracking_tag_on_store_request [InstallTrackingTagOnStoreRequest]
|
|
@@ -921,7 +921,7 @@ module Zernio
|
|
|
921
921
|
end
|
|
922
922
|
|
|
923
923
|
# List tracking tags
|
|
924
|
-
# 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}`.
|
|
924
|
+
# 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)`.
|
|
925
925
|
# @param account_id [String] Ads SocialAccount id (platform `metaads` or `openaiads`).
|
|
926
926
|
# @param [Hash] opts the optional parameters
|
|
927
927
|
# @option opts [String] :ad_account_id Optional, Meta only. Scope to one ad account, e.g. `act_123456789`. Ignored for OpenAI Ads.
|
|
@@ -932,7 +932,7 @@ module Zernio
|
|
|
932
932
|
end
|
|
933
933
|
|
|
934
934
|
# List tracking tags
|
|
935
|
-
# 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}`.
|
|
935
|
+
# 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)`.
|
|
936
936
|
# @param account_id [String] Ads SocialAccount id (platform `metaads` or `openaiads`).
|
|
937
937
|
# @param [Hash] opts the optional parameters
|
|
938
938
|
# @option opts [String] :ad_account_id Optional, Meta only. Scope to one ad account, e.g. `act_123456789`. Ignored for OpenAI Ads.
|
|
@@ -1212,7 +1212,7 @@ module Zernio
|
|
|
1212
1212
|
end
|
|
1213
1213
|
|
|
1214
1214
|
# Update a tracking tag
|
|
1215
|
-
# Partial-update a pixel. Whitelisted fields: `name` (rename), `enableAutomaticMatching`, `automaticMatchingFields`, `firstPartyCookieStatus`, `dataUseSetting`. At least one is required. Returns the re-fetched canonical tag. Meta only (platform `metaads`); other platforms return 501. OpenAI Ads answers 501: its API has no pixel update or delete route (`POST`/`PATCH`/`PUT`/`DELETE /v1/conversions/pixels/{id}` answer 405 \"Invalid method\"); rename a pixel in OpenAI Ads Manager. There is no DELETE: Meta has no API to delete a pixel. To stop using one, unshare it from your ad accounts (`DELETE .../tracking-tags/{tagId}/shared-accounts`) or disable it in Events Manager. LinkedIn (`linkedinads`): only `firstPartyCookieStatus` (`first_party_cookie_enabled` or `first_party_cookie_disabled`), which sets the tag's first-party tracking. It applies to every ad account using the tag. `empty` answers 400: LinkedIn has no unset state.
|
|
1215
|
+
# Partial-update a pixel. Whitelisted fields: `name` (rename), `enableAutomaticMatching`, `automaticMatchingFields`, `firstPartyCookieStatus`, `dataUseSetting`. At least one is required. Returns the re-fetched canonical tag. Meta only (platform `metaads`); other platforms return 501. OpenAI Ads answers 501: its API has no pixel update or delete route (`POST`/`PATCH`/`PUT`/`DELETE /v1/conversions/pixels/{id}` answer 405 \"Invalid method\"); rename a pixel in OpenAI Ads Manager. There is no DELETE: Meta has no API to delete a pixel. To stop using one, unshare it from your ad accounts (`DELETE .../tracking-tags/{tagId}/shared-accounts`) or disable it in Events Manager. LinkedIn (`linkedinads`): only `firstPartyCookieStatus` (`first_party_cookie_enabled` or `first_party_cookie_disabled`), which sets the tag's first-party tracking. It applies to every ad account using the tag. `empty` answers 400: LinkedIn has no unset state. Pinterest (platform `pinterestads`): 501. Pinterest API v5 only creates, lists and reads tags (no update endpoint); rename a tag or change its enhanced match settings in Pinterest Ads Manager.
|
|
1216
1216
|
# @param account_id [String]
|
|
1217
1217
|
# @param tag_id [String] Pixel id.
|
|
1218
1218
|
# @param update_tracking_tag_request [UpdateTrackingTagRequest]
|
|
@@ -1224,7 +1224,7 @@ module Zernio
|
|
|
1224
1224
|
end
|
|
1225
1225
|
|
|
1226
1226
|
# Update a tracking tag
|
|
1227
|
-
# Partial-update a pixel. Whitelisted fields: `name` (rename), `enableAutomaticMatching`, `automaticMatchingFields`, `firstPartyCookieStatus`, `dataUseSetting`. At least one is required. Returns the re-fetched canonical tag. Meta only (platform `metaads`); other platforms return 501. OpenAI Ads answers 501: its API has no pixel update or delete route (`POST`/`PATCH`/`PUT`/`DELETE /v1/conversions/pixels/{id}` answer 405 \"Invalid method\"); rename a pixel in OpenAI Ads Manager. There is no DELETE: Meta has no API to delete a pixel. To stop using one, unshare it from your ad accounts (`DELETE .../tracking-tags/{tagId}/shared-accounts`) or disable it in Events Manager. LinkedIn (`linkedinads`): only `firstPartyCookieStatus` (`first_party_cookie_enabled` or `first_party_cookie_disabled`), which sets the tag's first-party tracking. It applies to every ad account using the tag. `empty` answers 400: LinkedIn has no unset state.
|
|
1227
|
+
# Partial-update a pixel. Whitelisted fields: `name` (rename), `enableAutomaticMatching`, `automaticMatchingFields`, `firstPartyCookieStatus`, `dataUseSetting`. At least one is required. Returns the re-fetched canonical tag. Meta only (platform `metaads`); other platforms return 501. OpenAI Ads answers 501: its API has no pixel update or delete route (`POST`/`PATCH`/`PUT`/`DELETE /v1/conversions/pixels/{id}` answer 405 \"Invalid method\"); rename a pixel in OpenAI Ads Manager. There is no DELETE: Meta has no API to delete a pixel. To stop using one, unshare it from your ad accounts (`DELETE .../tracking-tags/{tagId}/shared-accounts`) or disable it in Events Manager. LinkedIn (`linkedinads`): only `firstPartyCookieStatus` (`first_party_cookie_enabled` or `first_party_cookie_disabled`), which sets the tag's first-party tracking. It applies to every ad account using the tag. `empty` answers 400: LinkedIn has no unset state. Pinterest (platform `pinterestads`): 501. Pinterest API v5 only creates, lists and reads tags (no update endpoint); rename a tag or change its enhanced match settings in Pinterest Ads Manager.
|
|
1228
1228
|
# @param account_id [String]
|
|
1229
1229
|
# @param tag_id [String] Pixel id.
|
|
1230
1230
|
# @param update_tracking_tag_request [UpdateTrackingTagRequest]
|
|
@@ -110,7 +110,7 @@ module Zernio
|
|
|
110
110
|
# @return true if the model is valid
|
|
111
111
|
def valid?
|
|
112
112
|
warn '[DEPRECATED] the `valid?` method is obsolete'
|
|
113
|
-
platform_validator = EnumAttributeValidator.new('String', ["metaads", "openaiads", "tiktokads", "googleads", "xads", "linkedinads"])
|
|
113
|
+
platform_validator = EnumAttributeValidator.new('String', ["metaads", "openaiads", "tiktokads", "googleads", "xads", "linkedinads", "pinterestads"])
|
|
114
114
|
return false unless platform_validator.valid?(@platform)
|
|
115
115
|
true
|
|
116
116
|
end
|
|
@@ -118,7 +118,7 @@ module Zernio
|
|
|
118
118
|
# Custom attribute writer method checking allowed values (enum).
|
|
119
119
|
# @param [Object] platform Object to be assigned
|
|
120
120
|
def platform=(platform)
|
|
121
|
-
validator = EnumAttributeValidator.new('String', ["metaads", "openaiads", "tiktokads", "googleads", "xads", "linkedinads"])
|
|
121
|
+
validator = EnumAttributeValidator.new('String', ["metaads", "openaiads", "tiktokads", "googleads", "xads", "linkedinads", "pinterestads"])
|
|
122
122
|
unless validator.valid?(platform)
|
|
123
123
|
fail ArgumentError, "invalid value for \"platform\", must be one of #{validator.allowable_values}."
|
|
124
124
|
end
|
|
@@ -110,7 +110,7 @@ module Zernio
|
|
|
110
110
|
# @return true if the model is valid
|
|
111
111
|
def valid?
|
|
112
112
|
warn '[DEPRECATED] the `valid?` method is obsolete'
|
|
113
|
-
platform_validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads"])
|
|
113
|
+
platform_validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads", "pinterestads"])
|
|
114
114
|
return false unless platform_validator.valid?(@platform)
|
|
115
115
|
true
|
|
116
116
|
end
|
|
@@ -118,7 +118,7 @@ module Zernio
|
|
|
118
118
|
# Custom attribute writer method checking allowed values (enum).
|
|
119
119
|
# @param [Object] platform Object to be assigned
|
|
120
120
|
def platform=(platform)
|
|
121
|
-
validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads"])
|
|
121
|
+
validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads", "pinterestads"])
|
|
122
122
|
unless validator.valid?(platform)
|
|
123
123
|
fail ArgumentError, "invalid value for \"platform\", must be one of #{validator.allowable_values}."
|
|
124
124
|
end
|
|
@@ -110,7 +110,7 @@ module Zernio
|
|
|
110
110
|
# @return true if the model is valid
|
|
111
111
|
def valid?
|
|
112
112
|
warn '[DEPRECATED] the `valid?` method is obsolete'
|
|
113
|
-
platform_validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads"])
|
|
113
|
+
platform_validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads", "pinterestads"])
|
|
114
114
|
return false unless platform_validator.valid?(@platform)
|
|
115
115
|
true
|
|
116
116
|
end
|
|
@@ -118,7 +118,7 @@ module Zernio
|
|
|
118
118
|
# Custom attribute writer method checking allowed values (enum).
|
|
119
119
|
# @param [Object] platform Object to be assigned
|
|
120
120
|
def platform=(platform)
|
|
121
|
-
validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads"])
|
|
121
|
+
validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads", "pinterestads"])
|
|
122
122
|
unless validator.valid?(platform)
|
|
123
123
|
fail ArgumentError, "invalid value for \"platform\", must be one of #{validator.allowable_values}."
|
|
124
124
|
end
|
|
@@ -110,7 +110,7 @@ module Zernio
|
|
|
110
110
|
# @return true if the model is valid
|
|
111
111
|
def valid?
|
|
112
112
|
warn '[DEPRECATED] the `valid?` method is obsolete'
|
|
113
|
-
platform_validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads"])
|
|
113
|
+
platform_validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads", "pinterestads"])
|
|
114
114
|
return false unless platform_validator.valid?(@platform)
|
|
115
115
|
true
|
|
116
116
|
end
|
|
@@ -118,7 +118,7 @@ module Zernio
|
|
|
118
118
|
# Custom attribute writer method checking allowed values (enum).
|
|
119
119
|
# @param [Object] platform Object to be assigned
|
|
120
120
|
def platform=(platform)
|
|
121
|
-
validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads"])
|
|
121
|
+
validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads", "pinterestads"])
|
|
122
122
|
unless validator.valid?(platform)
|
|
123
123
|
fail ArgumentError, "invalid value for \"platform\", must be one of #{validator.allowable_values}."
|
|
124
124
|
end
|
|
@@ -110,7 +110,7 @@ module Zernio
|
|
|
110
110
|
# @return true if the model is valid
|
|
111
111
|
def valid?
|
|
112
112
|
warn '[DEPRECATED] the `valid?` method is obsolete'
|
|
113
|
-
platform_validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads"])
|
|
113
|
+
platform_validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads", "pinterestads"])
|
|
114
114
|
return false unless platform_validator.valid?(@platform)
|
|
115
115
|
true
|
|
116
116
|
end
|
|
@@ -118,7 +118,7 @@ module Zernio
|
|
|
118
118
|
# Custom attribute writer method checking allowed values (enum).
|
|
119
119
|
# @param [Object] platform Object to be assigned
|
|
120
120
|
def platform=(platform)
|
|
121
|
-
validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads"])
|
|
121
|
+
validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads", "pinterestads"])
|
|
122
122
|
unless validator.valid?(platform)
|
|
123
123
|
fail ArgumentError, "invalid value for \"platform\", must be one of #{validator.allowable_values}."
|
|
124
124
|
end
|
|
@@ -112,7 +112,7 @@ module Zernio
|
|
|
112
112
|
# @return true if the model is valid
|
|
113
113
|
def valid?
|
|
114
114
|
warn '[DEPRECATED] the `valid?` method is obsolete'
|
|
115
|
-
platform_validator = EnumAttributeValidator.new('String', ["metaads", "openaiads", "tiktokads", "googleads", "xads", "linkedinads"])
|
|
115
|
+
platform_validator = EnumAttributeValidator.new('String', ["metaads", "openaiads", "tiktokads", "googleads", "xads", "linkedinads", "pinterestads"])
|
|
116
116
|
return false unless platform_validator.valid?(@platform)
|
|
117
117
|
true
|
|
118
118
|
end
|
|
@@ -120,7 +120,7 @@ module Zernio
|
|
|
120
120
|
# Custom attribute writer method checking allowed values (enum).
|
|
121
121
|
# @param [Object] platform Object to be assigned
|
|
122
122
|
def platform=(platform)
|
|
123
|
-
validator = EnumAttributeValidator.new('String', ["metaads", "openaiads", "tiktokads", "googleads", "xads", "linkedinads"])
|
|
123
|
+
validator = EnumAttributeValidator.new('String', ["metaads", "openaiads", "tiktokads", "googleads", "xads", "linkedinads", "pinterestads"])
|
|
124
124
|
unless validator.valid?(platform)
|
|
125
125
|
fail ArgumentError, "invalid value for \"platform\", must be one of #{validator.allowable_values}."
|
|
126
126
|
end
|
|
@@ -110,7 +110,7 @@ module Zernio
|
|
|
110
110
|
# @return true if the model is valid
|
|
111
111
|
def valid?
|
|
112
112
|
warn '[DEPRECATED] the `valid?` method is obsolete'
|
|
113
|
-
platform_validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads"])
|
|
113
|
+
platform_validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads", "pinterestads"])
|
|
114
114
|
return false unless platform_validator.valid?(@platform)
|
|
115
115
|
true
|
|
116
116
|
end
|
|
@@ -118,7 +118,7 @@ module Zernio
|
|
|
118
118
|
# Custom attribute writer method checking allowed values (enum).
|
|
119
119
|
# @param [Object] platform Object to be assigned
|
|
120
120
|
def platform=(platform)
|
|
121
|
-
validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads"])
|
|
121
|
+
validator = EnumAttributeValidator.new('String', ["metaads", "tiktokads", "googleads", "xads", "openaiads", "linkedinads", "pinterestads"])
|
|
122
122
|
unless validator.valid?(platform)
|
|
123
123
|
fail ArgumentError, "invalid value for \"platform\", must be one of #{validator.allowable_values}."
|
|
124
124
|
end
|
|
@@ -256,7 +256,7 @@ module Zernio
|
|
|
256
256
|
return false if @id.nil?
|
|
257
257
|
return false if @name.nil?
|
|
258
258
|
return false if @platform.nil?
|
|
259
|
-
platform_validator = EnumAttributeValidator.new('String', ["metaads", "openaiads", "tiktokads", "googleads", "xads", "linkedinads"])
|
|
259
|
+
platform_validator = EnumAttributeValidator.new('String', ["metaads", "openaiads", "tiktokads", "googleads", "xads", "linkedinads", "pinterestads"])
|
|
260
260
|
return false unless platform_validator.valid?(@platform)
|
|
261
261
|
return false if @kind.nil?
|
|
262
262
|
kind_validator = EnumAttributeValidator.new('String', ["pixel", "tag", "insight_tag"])
|
|
@@ -290,7 +290,7 @@ module Zernio
|
|
|
290
290
|
# Custom attribute writer method checking allowed values (enum).
|
|
291
291
|
# @param [Object] platform Object to be assigned
|
|
292
292
|
def platform=(platform)
|
|
293
|
-
validator = EnumAttributeValidator.new('String', ["metaads", "openaiads", "tiktokads", "googleads", "xads", "linkedinads"])
|
|
293
|
+
validator = EnumAttributeValidator.new('String', ["metaads", "openaiads", "tiktokads", "googleads", "xads", "linkedinads", "pinterestads"])
|
|
294
294
|
unless validator.valid?(platform)
|
|
295
295
|
fail ArgumentError, "invalid value for \"platform\", must be one of #{validator.allowable_values}."
|
|
296
296
|
end
|
data/lib/zernio-sdk/version.rb
CHANGED