Insider Pixel
21 min
the insider pixel destination loads the insider one web sdk ( ins js ) directly in the visitor's browser (device mode) and sends page views, ecommerce events, and user profile updates client side via window\ insiderqueue unlike the server side insider one destination , device mode events originate from the browser and are subject to ad blockers, but enable richer client side context such as session data and browser fingerprinting use this destination alongside the server side insider one destination for maximum coverage getting started this is a device mode destination the insider one web sdk ( ins js ) is loaded automatically — no manual script installation is required you will need partner name — your insider partner name (account slug) this is the subdomain used in the sdk url, e g mystore in mystore api useinsider com found in inone panel > settings > account preferences partner id (optional) — your insider partner id when provided, it is appended as the id query parameter on the sdk script url ( ins js?id=\<partnerid> ) connecting to the insider pixel cdp destination warning before connecting destinations in the chord cdp, please verify with all destination owners that all non chord cdp configured destinations are disabled running external destinations alongside configured chord cdp destinations can result in duplicate events downstream log into the chord data platform navigate to the cdp click the "add" button next to destinations select insider pixel from the destination catalog enter the destination name and partner name optionally enter a partner id if your insider account requires the id parameter on the sdk url click "create" to connect events event mapping chord event type insiderqueue push type notes identify user → init updates user attributes; no event recorded page user → other → init sends a generic page view with the page title track (ecommerce) user → (event specific) → init see ecommerce event mapping below track (other) user → custom event → init sent as a custom event unsupported event types (e g group , alias ) are silently dropped ecommerce event mapping six chord ecommerce track event names map to dedicated insider sdk queue types chord event name insiderqueue type notes product viewed product first product in properties products product list viewed category category breadcrumb from properties category or first product's category cart viewed cart full product list with totals product added add to cart first product in properties products product removed remove from cart first product in properties products order completed purchase full product list with order totals all other track event names are sent as custom event (see custom events below) identify events identify events push user attributes then trigger an init flush insiderqueue push({ type "user", value \<user object> }) insiderqueue push({ type "init" }) insiderqueue user field chord source notes uuid userid primary user identifier email context traits email > traits email phone number context traits phone > traits phone > traits phone number name traits firstname surname traits lastname gender traits gender birthday traits birthday city traits address city country traits address country language traits locale hyphens converted to underscores, e g en us → en us custom segment anonymous id anonymousid always included user data is pushed on every event (not only identify ), so insider always has the latest profile context regardless of event order page events page events push a generic page view using the other queue type insiderqueue push({ type "user", value \<user object> }) insiderqueue push({ type "other", value { name \<page title> } }) insiderqueue push({ type "init" }) insiderqueue field chord source notes other name properties title > context page title page title sent as the other event name url and referrer are not included in the queue push — the insider sdk reads these automatically from the browser track events ecommerce events each ecommerce event type pushes a specific sdk payload before init currency is pushed separately when present product viewed ( product type) insiderqueue push({ type "user", value \<user object> }) insiderqueue push({ type "currency", value \<currency> }) // if present insiderqueue push({ type "product", value \<product object> }) insiderqueue push({ type "init" }) uses the first product from properties products product list viewed ( category type) insiderqueue push({ type "user", value \<user object> }) insiderqueue push({ type "category", value { breadcrumb \[\<category>] } }) insiderqueue push({ type "init" }) category is sourced from properties category , falling back to the first product's category cart viewed ( cart type) insiderqueue push({ type "user", value \<user object> }) insiderqueue push({ type "currency", value \<currency> }) // if present insiderqueue push({ type "cart", value { total, items, shipping cost } }) insiderqueue push({ type "init" }) product added / product removed ( add to cart / remove from cart type) insiderqueue push({ type "user", value \<user object> }) insiderqueue push({ type "add to cart" | "remove from cart", value \<product object> }) insiderqueue push({ type "init" }) uses the first product from properties products order completed ( purchase type) insiderqueue push({ type "user", value \<user object> }) insiderqueue push({ type "currency", value \<currency> }) // if present insiderqueue push({ type "purchase", value { order id, total, items, shipping cost } }) insiderqueue push({ type "init" }) product object field chord source (priority order) notes id product id > sku > id at least one identifier required name name taxonomy category wrapped in array; omitted if not present unit sale price unit sale price > price actual price paid unit price unit price > price list/original price quantity quantity url url product image url image url products without a resolvable id are filtered out custom events all track events not in the ecommerce map are sent as custom event insiderqueue push({ type "user", value \<user object> }) insiderqueue push({ type "custom event", value \[{ event name, event parameters }] }) insiderqueue push({ type "init" }) field chord source notes event name event lowercased, spaces replaced with underscores event parameters custom properties all properties forwarded as is; the meta field is excluded property keys are not lowercased or aliased for custom events — they are forwarded as received initialization on the first event, the plugin sets window\ insiderqueue = window\ insiderqueue || \[] to ensure the queue exists before the sdk loads constructs the sdk url https //\<partnername> api useinsider com/ins js — with ?id=\<partnerid> appended if a partner id is configured loads the script via a \<script> tag injection tracks sdk loading state ( fresh → loading → loaded / failed ) using window chordcdpinsiderpixelstate to prevent duplicate script loads events arriving after the first load reuse the already loaded sdk if the script fails to load, subsequent events are silently dropped csp requirements if your site uses a content security policy, allow the following domains directive domain script src https // api useinsider com connect src https // api useinsider com img src https // api useinsider com combining with server side insider one running both insider pixel (device mode) and the server side insider one destination provides redundancy device mode captures browser native session context and sends events directly from the browser server side captures events that may be blocked by ad blockers or occur outside the browser testing and validation because this is a device mode destination, events are sent directly from the browser — they do not appear in the chord cdp live events tab validate using browser developer tools instead after connecting the destination load your storefront and open browser developer tools ( network tab, filter by useinsider ) confirm ins js is loaded from \<partnername> api useinsider com and the initiator column points to the chord cdp snippet in the browser console , inspect window\ insiderqueue immediately after page load (before the sdk initializes) to verify queue items are being pushed with the correct type and value structure check the network requests the sdk fires after initialization hit and insert for page and user events, set purchase stats for purchase events in insider one, navigate to inone panel > audience and verify the user profile was created or updated troubleshooting sdk not loading problem the insider sdk script is not being injected into the page confirm the destination is enabled in chord and that your storefront is loading the chord cdp snippet verify the partner name is correct — it must match the subdomain of your insider account (e g mystore , not mystore api useinsider com ) check your browser's content security policy — a missing script src or connect src allowance for api useinsider com will block the script inspect the browser console for script load errors events not appearing in insider one problem the sdk loads but events do not appear in the insider one panel in the browser console, inspect window\ insiderqueue before sdk initialization to confirm queue items are being pushed verify that insider's web sdk "new io mode" ( inioa ) is enabled for your account the insiderqueue integration requires this to be active — contact insider support to confirm or enable it confirm that a userid is present on events without a uuid, insider cannot match events to a profile duplicate profiles problem insider one is creating multiple profiles for the same customer confirm that events consistently include the same userid inconsistent identifiers cause insider to create separate profiles if your store captures both anonymous and logged in sessions, ensure an identify call is sent when a user logs in existing insider pixel conflict problem the insider sdk was already installed directly on the storefront before switching to chord cdp device mode remove the native ins js script tag (or tag manager rule) from the storefront running both the native pixel and the chord cdp device mode destination simultaneously causes duplicate sdk loads and can prevent chord cdp's queue items from being processed correctly updated 05 may 2026