---
title: The Trade Desk
slug: the-trade-desk
docTags: 
createdAt: 2026-01-30T21:29:27.767Z
---

**The Trade Desk** is a programmatic advertising platform for display, video, audio, and connected TV campaigns. This destination loads The Trade Desk Universal Pixel JavaScript SDK in the browser and forwards page views, e-commerce events, and conversion data for measurement and audience targeting. There is no server-side component.

# Getting Started

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

- **Advertiser ID** — your Trade Desk advertiser ID, found in your Trade Desk account.
- **Universal Pixel ID** — your Trade Desk Universal Pixel ID, found in your Trade Desk account under **Pixels**. All page views and conversion events fire against this single pixel. TTD classifies conversion events based on URL patterns and dynamic parameters (such as `order_id` and `revenue`).

# Connecting to the Trade Desk Pixel 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 **The Trade Desk Pixel** from the destination catalog.
5. Enter the destination name, **Advertiser ID**, and **Universal Pixel ID**.
6. Click **"Create"** to connect.

# Events

# Event Mapping

All events include the TTD `event_name` field, mapped from the CDP event name to a [TTD predefined event name](https://partner.thetradedesk.com/v3/portal/data/doc/TrackingTagsEvents#predefined-item-events). Every forwarded event also includes a `pixelIds` array scoped to the Universal Pixel ID.

| Chord Event                 | TTD `event_name`     | Revenue Data | Item Data | Notes                      |
| --------------------------- | -------------------- | ------------ | --------- | -------------------------- |
| `page`                      | `sitevisit`          |              |           |                            |
| `Order Completed`           | `purchase`           | Yes          | Yes       |                            |
| `Checkout Started`          | `startcheckout`      | Yes          | Yes       |                            |
| `Product Added`             | `addtocart`          |              | Yes       |                            |
| `Product Viewed`            | `viewitem`           |              | Yes       |                            |
| `Cart Viewed`               | `viewcart`           |              | Yes       |                            |
| `Product Added to Wishlist` | `addtowishlist`      |              | Yes       |                            |
| `Products Searched`         | `searchitem`         |              |           | Search query sent as `td1` |
| `identify`                  | *(not forwarded)*    |              |           |                            |
| *(other track events)*      | *(silently skipped)* |              |           |                            |

All events fire against the Universal Pixel ID. TTD infers the conversion type based on URL patterns and dynamic parameters included with each event.

# Page Events

Fires a conversion event with `event_name: "sitevisit"`, scoped to the Universal Pixel ID.

**TTD SDK call:** `ttdConversionEvents("event", { event_name: "sitevisit", pixelIds: ["<universalPixelId>"] })`

# Revenue Data

For `purchase` and `startcheckout` events, order-level revenue data is included:

| TTD Attribute | Chord Source (Priority Order)             | Notes                  |
| ------------- | ----------------------------------------- | ---------------------- |
| `order_id`    | `properties.order_id`                     | Omitted if not present |
| `value`       | `properties.total` > `properties.revenue` | Omitted if not present |
| `currency`    | `properties.currency`                     | Omitted if not present |

# Item Data

For events with product information, an `items` array is sent with item-level detail. Multi-product events (`Order Completed`, `Cart Viewed`, `Checkout Started`) map from `properties.products[]`. Single-product events (`Product Added`, `Product Viewed`, `Product Added to Wishlist`) extract from the event properties directly.

| TTD Item Attribute | Chord Source                | Notes                                                 |
| ------------------ | --------------------------- | ----------------------------------------------------- |
| `item_code`        | `product_id` / `sku` / `id` | Required; products without an identifier are excluded |
| `name`             | `name`                      | Defaults to empty string                              |
| `qty`              | `quantity`                  | Defaults to `1`                                       |
| `price`            | `price`                     | Defaults to `0`                                       |
| `cat`              | `category`                  | Defaults to empty string                              |

# Products Searched

Fires an event with `event_name: "searchitem"`. If `properties.query` is present, it is included as the `td1` dynamic parameter.

# Unmapped Events

Track events not listed above are silently skipped. Identify events are not forwarded.

# Initialization

The plugin loads `https://js.adsrvr.org/up_loader.3.0.0.js` and calls `ttdConversionEvents("init", { advertiserId, pixelIds: ["<universalPixelId>"] })`. Before the script loads, a queue (`ttdConversionEventsLayer`) buffers any events.

The plugin manages SDK loading state (`fresh` → `loading` → `loaded`/`failed`) to prevent duplicate script loads. Concurrent events during loading are queued and processed after initialization completes. 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://js.adsrvr.org` |
| `connect-src` | `https://js.adsrvr.org` |

***

**Updated 5 May 2026**
