---
title: StackAdapt Pixel
slug: stackadapt-pixel
docTags: 
createdAt: 2026-01-22T17:10:26.682Z
---

**StackAdapt** is a programmatic advertising platform for native, display, video, and connected TV campaigns. This destination loads the StackAdapt Universal Pixel in the browser and forwards identify and track events for conversion measurement and audience targeting. There is no server-side component.

# Getting Started

This is a device-mode destination. The StackAdapt Universal Pixel is loaded automatically — no manual script installation is required. You will need:

- **Pixel ID** — your Universal Pixel ID, found in the **Pixels** page in your StackAdapt account.

# Connecting to the StackAdapt CDP Destination

:::BlockQuote
**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.**
:::

1. Log into the Chord data platform.
2. Navigate to the CDP.
3. Click the **"Add"** button next to Destinations.
4. Select **StackAdapt** from the destination catalog.
5. Enter the destination name and your **Pixel ID**.
6. Click **"Create"** to connect.

# Events

# Event Mapping

| Chord Event Type | StackAdapt SDK Call                    | Notes                                                            |
| ---------------- | -------------------------------------- | ---------------------------------------------------------------- |
| `page`           | `saq("ts", pixelId)`                   | Page view tracking call                                          |
| `identify`       | *(stores user traits in memory)*       | Traits attached to subsequent track events; not sent immediately |
| `track`          | `saq("conv", pixelId, conversionData)` | All track events forwarded as conversions                        |

# Page Events

Fires a StackAdapt page view tracking call.

**StackAdapt SDK call:** `saq("ts", pixelId)`

No additional attributes are sent with page events.

# Identify Events

Identify events store user traits in browser memory. These traits are **not** sent to StackAdapt immediately — they are attached to all subsequent track conversion events for the duration of the browser session.

| StackAdapt Trait | Chord Source (Priority Order)                                               |
| ---------------- | --------------------------------------------------------------------------- |
| `email`          | `properties.email` > `context.traits.email` > `traits.email`                |
| `first_name`     | `properties.first_name` > `context.traits.first_name` > `traits.first_name` |
| `last_name`      | `properties.last_name` > `context.traits.last_name` > `traits.last_name`    |
| `phone`          | `properties.phone` > `context.traits.phone` > `traits.phone`                |

# Track Events

Sends a conversion event to StackAdapt with ecommerce data and any previously stored user traits from `identify` calls.

**StackAdapt SDK call:** `saq("conv", pixelId, conversionData)`

## Always Included

| StackAdapt Attribute | Chord Source                   | Notes                                   |
| -------------------- | ------------------------------ | --------------------------------------- |
| `action`             | `event` (the track event name) |                                         |
| `email`              | Stored from `identify`         | Included if an `identify` call was made |
| `first_name`         | Stored from `identify`         | Included if an `identify` call was made |
| `last_name`          | Stored from `identify`         | Included if an `identify` call was made |
| `phone`              | Stored from `identify`         | Included if an `identify` call was made |

## Order-Level Attributes

| StackAdapt Attribute | Chord Source (Priority Order)                                                             | Notes                                     |
| -------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------- |
| `order_id`           | `properties.cart_id` / `properties.order_id`                                              | Included if present                       |
| `revenue`            | `properties.revenue` > `properties.total` > `properties.value` > calculated from products | Prefers subtotal (excluding tax/shipping) |
| `currency`           | `properties.currency`                                                                     | Defaults to `"USD"`                       |

## Product Attributes (Single Product)

When `properties.products[]` contains exactly one product, product fields are sent as flat attributes:

| StackAdapt Attribute | Chord Source (Priority Order)                                                                    |
| -------------------- | ------------------------------------------------------------------------------------------------ |
| `product_id`         | `properties.products[0].product_id` > `properties.products[0].id` > `properties.products[0].sku` |
| `product_category`   | `properties.products[0].category`                                                                |
| `product_name`       | `properties.products[0].name`                                                                    |
| `product_price`      | `properties.products[0].price`                                                                   |
| `product_quantity`   | `properties.products[0].quantity` — defaults to `1`                                              |

## Product Attributes (Multiple Products)

When `properties.products[]` contains two or more products, they are sent as a `products` array. Each element uses the same field mapping as the single product above. Empty product objects are filtered out.

# Initialization

The plugin loads the StackAdapt Universal Pixel script. The plugin manages SDK loading state (`fresh` → `loading` → `loaded`/`failed`) to prevent duplicate script loads. 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://tags.srv.stackadapt.com`                         |
| `connect-src` | `https://tags.srv.stackadapt.com`, `https://qvdt3feo.com` |
| `style-src`   | `https://tags.srv.stackadapt.com`                         |

***

**Updated 6 Apr 2026**
